mirror of
https://github.com/moodle/moodle.git
synced 2025-08-05 08:56:36 +02:00
MDL-46256 count_letters: an unit tests and fix HTML editity handling
This commit is contained in:
parent
c110115cc0
commit
82a050d67b
2 changed files with 27 additions and 1 deletions
|
@ -8375,11 +8375,12 @@ function count_words($string) {
|
||||||
* Letters are defined as chars not in tags and different from whitespace.
|
* Letters are defined as chars not in tags and different from whitespace.
|
||||||
*
|
*
|
||||||
* @category string
|
* @category string
|
||||||
* @param string $string The text to be searched for letters.
|
* @param string $string The text to be searched for letters. May be HTML.
|
||||||
* @return int The count of letters in the specified text.
|
* @return int The count of letters in the specified text.
|
||||||
*/
|
*/
|
||||||
function count_letters($string) {
|
function count_letters($string) {
|
||||||
$string = strip_tags($string); // Tags are out now.
|
$string = strip_tags($string); // Tags are out now.
|
||||||
|
$string = html_entity_decode($string);
|
||||||
$string = preg_replace('/[[:space:]]*/', '', $string); // Whitespace are out now.
|
$string = preg_replace('/[[:space:]]*/', '', $string); // Whitespace are out now.
|
||||||
|
|
||||||
return core_text::strlen($string);
|
return core_text::strlen($string);
|
||||||
|
|
|
@ -3822,6 +3822,31 @@ class core_moodlelib_testcase extends advanced_testcase {
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test function {@see count_letters()}.
|
||||||
|
*
|
||||||
|
* @dataProvider count_letters_testcases
|
||||||
|
* @param int $expectedcount number of characters in $string.
|
||||||
|
* @param string $string the test string to count the letters of.
|
||||||
|
*/
|
||||||
|
public function test_count_letters(int $expectedcount, string $string): void {
|
||||||
|
$this->assertEquals($expectedcount, count_letters($string));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Data provider for {@see count_letters_testcases}.
|
||||||
|
*
|
||||||
|
* @return array of test cases.
|
||||||
|
*/
|
||||||
|
public function count_letters_testcases(): array {
|
||||||
|
return [
|
||||||
|
[0, ''],
|
||||||
|
[1, 'x'],
|
||||||
|
[1, '&'],
|
||||||
|
[4, '<p>frog</p>'],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests the getremoteaddr() function.
|
* Tests the getremoteaddr() function.
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue