porterstemmer.test in Porter-Stemmer 7
Same filename and directory in other branches
Tests for the Porter Stemmer module. By Jennifer Hodgdon of Poplar ProductivityWare, www.poplarware.com Unit tests are based on sample words from http://snowball.tartarus.org/algorithms/english/stemmer.html which are stored in a separate file (testwords.txt).
File
porterstemmer.testView source
<?php
/**
* @file
* Tests for the Porter Stemmer module.
* By Jennifer Hodgdon of Poplar ProductivityWare, www.poplarware.com
* Unit tests are based on sample words from
* http://snowball.tartarus.org/algorithms/english/stemmer.html
* which are stored in a separate file (testwords.txt).
*/
/**
* Functional test for Porter Stemmer.
*/
class PorterStemmerFunctionalTest extends DrupalWebTestCase {
public static function getInfo() {
return array(
'name' => t('Functional test'),
'description' => t('Test that stemmed searching works.'),
'group' => t('Porter Stemmer'),
);
}
public function setUp() {
parent::setUp('porterstemmer', 'search');
// Set up a super-user
$this->superuser = $this
->drupalCreateUser(array(
'administer nodes',
'access content',
'administer content types',
'administer search',
'search content',
'access administration pages',
'administer site configuration',
));
$this
->drupalLogin($this->superuser);
// Create some content to search, with the words walk, walking, and walked.
$info = array(
'body' => array(
LANGUAGE_NONE => array(
array(
'value' => 'I walk through the streets, looking around for trouble',
),
),
),
'type' => 'page',
'language' => LANGUAGE_NONE,
'title' => 'first page',
);
$node = $this
->drupalCreateNode($info);
$this
->drupalGet('node/' . $node->nid);
$this
->assertText('walk');
$info = array(
'body' => array(
LANGUAGE_NONE => array(
array(
'value' => 'I walked home from work today.',
),
),
),
'type' => 'page',
'language' => LANGUAGE_NONE,
'title' => 'second page',
);
$node = $this
->drupalCreateNode($info);
$this
->drupalGet('node/' . $node->nid);
$this
->assertText('walked');
$info = array(
'body' => array(
LANGUAGE_NONE => array(
array(
'value' => 'I am always walking everywhere.',
),
),
),
'type' => 'page',
'language' => LANGUAGE_NONE,
'title' => 'third page',
);
$node = $this
->drupalCreateNode($info);
$this
->drupalGet('node/' . $node->nid);
$this
->assertText('walking');
$this
->cronRun();
}
/**
* Tests that all three pages can be found in searches.
*/
function testSearch() {
$this
->drupalLogin($this->superuser);
// Search for 'walk' and verify all three pages were found.
$this
->drupalPost('search', array(
'keys' => 'walk',
), 'Search');
$this
->assertText('first', 'First page was found with search for walk');
$this
->assertText('second', 'Second page was found with search for walk');
$this
->assertText('third', 'Third page was found with search for walk');
// Search for 'walking' and verify all three pages were found.
$this
->drupalPost('search', array(
'keys' => 'walking',
), 'Search');
$this
->assertText('first', 'First page was found with search for walking');
$this
->assertText('second', 'Second page was found with search for walking');
$this
->assertText('third', 'Third page was found with search for walking');
// Search for 'walked' and verify all three pages were found.
$this
->drupalPost('search', array(
'keys' => 'walked',
), 'Search');
$this
->assertText('first', 'First page was found with search for walked');
$this
->assertText('second', 'Second page was found with search for walked');
$this
->assertText('third', 'Third page was found with search for walked');
// Search for 'blahblahblah' and verify none of the pages were found.
$this
->drupalPost('search', array(
'keys' => 'blahblahblah',
), 'Search');
$this
->assertNoText('first', 'First page was not found with bogus search');
$this
->assertNoText('second', 'Second page was not found with bogus search');
$this
->assertNoText('third', 'Third page was not found with bogus search');
}
}
/**
* Unit tests for Porter Stemmer - Stemming output part 1.
*/
class PorterStemmerOutput1UnitTest extends DrupalWebTestCase {
public $has_pecl_stem = FALSE;
public static function getInfo() {
return array(
'name' => t('Stemming output 1'),
'description' => t('Test that the stemming function returns the correct stemmed words'),
'group' => t('Porter Stemmer'),
);
}
public function setUp() {
parent::setUp('porterstemmer');
// See if the PECL stemming library is installed
$this->has_pecl_stem = _porterstemmer_pecl_loaded();
module_load_include('inc', 'porterstemmer', 'includes/standard-stemmer');
}
/**
* Tests the first 2000 words in the file for stemming accuracy.
*/
function testStemmingUnitTest() {
$this
->_run_porterstemmer_stem_test(0, 2000);
}
/**
* Runs a unit test for a portion of words in the test file.
*
* The output of the porterstemmer_stem() function is tested against
* known input/output pairs from
* http://snowball.tartarus.org/algorithms/english/stemmer.html
*
* Or if $use_pecl is set to TRUE, the PECL stem_english() function is
* used instead.
*
* @param $skipto
* Line of file to start on (count starts at 0), not counting short ones.
* @param $runto
* Number of lines to test, not counting short ones.
* @param $use_pecl
* If TRUE, use the PECL library if it is installed. If it isn't installed,
* no tests are performed.
*/
function _run_porterstemmer_stem_test($skipto = 0, $runto = 2000, $use_pecl = FALSE) {
if ($use_pecl && !$this->has_pecl_stem) {
$this
->assertTrue(1, "No PECL stem library found, aborting test");
return;
}
// Open word file
$file = drupal_get_path('module', 'porterstemmer') . '/testwords.txt';
$handle = @fopen($file, "r");
$this
->assertTrue($handle, "Open file containing words to test", 'Startup');
if (!$handle) {
// no point doing rest of test...
return;
}
// Set min characters for search to 2 so we test whole word list
variable_set('minimum_word_size', 2);
porterstemmer_too_short('', TRUE);
$ran = 0;
$skipped = 0;
$start = time();
$mstart = 0;
if (function_exists('microtime')) {
$mstart = microtime(TRUE);
}
while (!feof($handle) && $ran < $runto) {
// Read a line of the file, and split into words
$line = fgets($handle, 4096);
$words = preg_split("/\\s+/", $line, -1, PREG_SPLIT_NO_EMPTY);
if (count($words) < 2) {
continue;
}
$in = $words[0];
$right = $words[1];
// Skip words less than 2 characters, which is minimum for Porter
if (drupal_strlen($in) < 2 || drupal_strlen($right) < 2) {
continue;
}
$skipped++;
if ($skipped < $skipto) {
continue;
}
// Stem the word
if ($use_pecl && $this->has_pecl_stem) {
$stem = stem_english($in);
}
else {
$stem = porterstemmer_stem($in);
}
// Test correctness
$this
->assertEqual($right, $stem, "Stemming {$in} results in {$right} (was {$stem})", t('Stemming test'));
$ran++;
}
$start = time() - $start;
if (function_exists('microtime')) {
$mstart = microtime(TRUE) - $mstart;
}
$this
->assertTrue(1, "Elapsed time: {$start} seconds ({$mstart})");
fclose($handle);
}
}
/**
* Unit tests for Porter Stemmer - Stemming output part 2.
*/
class PorterStemmerOutput2UnitTest extends PorterStemmerOutput1UnitTest {
public static function getInfo() {
return array(
'name' => t('Stemming output 2'),
'description' => t('Test that the stemming function returns the correct stemmed words'),
'group' => t('Porter Stemmer'),
);
}
/**
* Tests the next 2000 words in the file for stemming accuracy.
*/
function testStemmingUnitTest() {
$this
->_run_porterstemmer_stem_test(2000, 2000);
}
}
/**
* Unit tests for Porter Stemmer - Stemming output part 3.
*/
class PorterStemmerOutput3UnitTest extends PorterStemmerOutput1UnitTest {
public static function getInfo() {
return array(
'name' => t('Stemming output 3'),
'description' => t('Test that the stemming function returns the correct stemmed words'),
'group' => t('Porter Stemmer'),
);
}
/**
* Tests the next 2000 words in the file for stemming accuracy.
*/
function testStemmingUnitTest() {
$this
->_run_porterstemmer_stem_test(4000, 2000);
}
}
/**
* Unit tests for Porter Stemmer - Stemming output part 4.
*/
class PorterStemmerOutput4UnitTest extends PorterStemmerOutput1UnitTest {
public static function getInfo() {
return array(
'name' => t('Stemming output 4'),
'description' => t('Test that the stemming function returns the correct stemmed words'),
'group' => t('Porter Stemmer'),
);
}
/**
* Tests the next 2000 words in the file for stemming accuracy.
*/
function testStemmingUnitTest() {
$this
->_run_porterstemmer_stem_test(6000, 2000);
}
}
/**
* Unit tests for Porter Stemmer - Stemming output part 5.
*/
class PorterStemmerOutput5UnitTest extends PorterStemmerOutput1UnitTest {
public static function getInfo() {
return array(
'name' => t('Stemming output 5'),
'description' => t('Test that the stemming function returns the correct stemmed words'),
'group' => t('Porter Stemmer'),
);
}
/**
* Tests the next 2000 words in the file for stemming accuracy.
*/
function testStemmingUnitTest() {
$this
->_run_porterstemmer_stem_test(8000, 2000);
}
}
/**
* Unit tests for Porter Stemmer - Stemming output part 6.
*/
class PorterStemmerOutput6UnitTest extends PorterStemmerOutput1UnitTest {
public static function getInfo() {
return array(
'name' => t('Stemming output 6'),
'description' => t('Test that the stemming function returns the correct stemmed words'),
'group' => t('Porter Stemmer'),
);
}
/**
* Tests the next 2000 words in the file for stemming accuracy.
*/
function testStemmingUnitTest() {
$this
->_run_porterstemmer_stem_test(10000, 2000);
}
}
/**
* Unit tests for Porter Stemmer - Stemming output part 7.
*/
class PorterStemmerOutput7UnitTest extends PorterStemmerOutput1UnitTest {
public static function getInfo() {
return array(
'name' => t('Stemming output 7'),
'description' => t('Test that the stemming function returns the correct stemmed words'),
'group' => t('Porter Stemmer'),
);
}
/**
* Tests the next 2000 words in the file for stemming accuracy.
*/
function testStemmingUnitTest() {
$this
->_run_porterstemmer_stem_test(12000, 2000);
}
}
/**
* Unit tests for Porter Stemmer - Stemming output part 8.
*/
class PorterStemmerOutput8UnitTest extends PorterStemmerOutput1UnitTest {
public static function getInfo() {
return array(
'name' => t('Stemming output 8'),
'description' => t('Test that the stemming function returns the correct stemmed words'),
'group' => t('Porter Stemmer'),
);
}
/**
* Tests the next 2000 words in the file for stemming accuracy.
*/
function testStemmingUnitTest() {
$this
->_run_porterstemmer_stem_test(14000, 2000);
}
}
/**
* Unit tests for Porter Stemmer - Stemming output part 9.
*/
class PorterStemmerOutput9UnitTest extends PorterStemmerOutput1UnitTest {
public static function getInfo() {
return array(
'name' => t('Stemming output 9'),
'description' => t('Test that the stemming function returns the correct stemmed words'),
'group' => t('Porter Stemmer'),
);
}
/**
* Tests the next 2000 words in the file for stemming accuracy.
*/
function testStemmingUnitTest() {
$this
->_run_porterstemmer_stem_test(16000, 2000);
}
}
/**
* Unit tests for Porter Stemmer - Stemming output part 10.
*/
class PorterStemmerOutput10UnitTest extends PorterStemmerOutput1UnitTest {
public static function getInfo() {
return array(
'name' => t('Stemming output 10'),
'description' => t('Test that the stemming function returns the correct stemmed words'),
'group' => t('Porter Stemmer'),
);
}
/**
* Tests the next 2000 words in the file for stemming accuracy.
*/
function testStemmingUnitTest() {
$this
->_run_porterstemmer_stem_test(18000, 2000);
}
}
/**
* Unit tests for Porter Stemmer - Stemming output part 11.
*/
class PorterStemmerOutput11UnitTest extends PorterStemmerOutput1UnitTest {
public static function getInfo() {
return array(
'name' => t('Stemming output 11'),
'description' => t('Test that the stemming function returns the correct stemmed words'),
'group' => t('Porter Stemmer'),
);
}
/**
* Tests the next 2000 words in the file for stemming accuracy.
*/
function testStemmingUnitTest() {
$this
->_run_porterstemmer_stem_test(20000, 2000);
}
}
/**
* Unit tests for Porter Stemmer - Stemming output part 12.
*/
class PorterStemmerOutput12UnitTest extends PorterStemmerOutput1UnitTest {
public static function getInfo() {
return array(
'name' => t('Stemming output 12'),
'description' => t('Test that the stemming function returns the correct stemmed words'),
'group' => t('Porter Stemmer'),
);
}
/**
* Tests the next 2000 words in the file for stemming accuracy.
*/
function testStemmingUnitTest() {
$this
->_run_porterstemmer_stem_test(22000, 2000);
}
}
/**
* Unit tests for Porter Stemmer - Stemming output part 13.
*/
class PorterStemmerOutput13UnitTest extends PorterStemmerOutput1UnitTest {
public static function getInfo() {
return array(
'name' => t('Stemming output 13'),
'description' => t('Test that the stemming function returns the correct stemmed words'),
'group' => t('Porter Stemmer'),
);
}
/**
* Tests the next 2000 words in the file for stemming accuracy.
*/
function testStemmingUnitTest() {
$this
->_run_porterstemmer_stem_test(24000, 2000);
}
}
/**
* Unit tests for Porter Stemmer - Stemming output part 14.
*/
class PorterStemmerOutput14UnitTest extends PorterStemmerOutput1UnitTest {
public static function getInfo() {
return array(
'name' => t('Stemming output 14'),
'description' => t('Test that the stemming function returns the correct stemmed words'),
'group' => t('Porter Stemmer'),
);
}
/**
* Tests the next 2000 words in the file for stemming accuracy.
*/
function testStemmingUnitTest() {
$this
->_run_porterstemmer_stem_test(26000, 2000);
}
}
/**
* Unit tests for Porter Stemmer - Stemming output part 15.
*/
class PorterStemmerOutput15UnitTest extends PorterStemmerOutput1UnitTest {
public static function getInfo() {
return array(
'name' => t('Stemming output 15'),
'description' => t('Test that the stemming function returns the correct stemmed words'),
'group' => t('Porter Stemmer'),
);
}
/**
* Tests the next 2000 words in the file for stemming accuracy.
*/
function testStemmingUnitTest() {
$this
->_run_porterstemmer_stem_test(28000, 2000);
}
}
/**
* Unit tests for Porter Stemmer - Stemming internals.
*/
class PorterStemmerInternalsUnitTest extends DrupalWebTestCase {
public static function getInfo() {
return array(
'name' => t('Stemming internals'),
'description' => t('Test that various algorithm steps and internal functions are working correctly'),
'group' => t('Porter Stemmer'),
);
}
public function setUp() {
parent::setUp('porterstemmer');
module_load_include('inc', 'porterstemmer', 'includes/standard-stemmer');
}
/**
* Verify that short words are not stemmed, and longer ones are.
*/
function testStemLength3UnitTest() {
// Words 3 letters or less should not be stemmed if min word length is 3
variable_set('minimum_word_size', 3);
porterstemmer_too_short('', TRUE);
$words = array(
'a' => 'a',
'at' => 'at',
'say' => 'say',
'fished' => 'fish',
'saying' => 'say',
);
foreach ($words as $in => $out) {
$stem = porterstemmer_stem($in);
$this
->assertEqual($out, $stem, "Stemming length 3 test for {$in} gives {$out} (was {$stem})", t('Stemming length'));
}
}
/**
* Verify that short words are not stemmed, and longer ones are.
*/
function testStemLength4UnitTest() {
// Words 4 letters or less should not be stemmed if min word length is 4
variable_set('minimum_word_size', 4);
porterstemmer_too_short('', TRUE);
$words = array(
'a' => 'a',
'at' => 'at',
'say' => 'say',
'fished' => 'fish',
'saying' => 'saying',
);
foreach ($words as $in => $out) {
$stem = porterstemmer_stem($in);
$this
->assertEqual($out, $stem, "Stemming length 4 test for {$in} gives {$out} (was {$stem})", t('Stemming length'));
}
}
/**
* Tests the function that determines if a word is "short".
*/
function testShortWord() {
// Test "shortness", using examples from algorithm web page,
// as well as several variations on the word "administ...".
variable_set('minimum_word_size', 2);
porterstemmer_too_short('', TRUE);
$this
->assertFalse(porterstemmer_short_word('administered', 2, 'Stemmer steps'), "administered should not be a short word");
$this
->assertFalse(porterstemmer_short_word('administer', 2, 'Stemmer steps'), "administer should not be a short word");
$this
->assertFalse(porterstemmer_short_word('admin', 2, 'Stemmer steps'), "admin should not be a short word");
$this
->assertTrue(porterstemmer_short_word('bed', 3, 'Stemmer steps'), "bed should be a short word");
$this
->assertTrue(porterstemmer_short_word('shed', 4, 'Stemmer steps'), "shed should be a short word");
$this
->assertTrue(porterstemmer_short_word('shred', 5, 'Stemmer steps'), "shred should be a short word");
$this
->assertFalse(porterstemmer_short_word('bead', 4, 'Stemmer steps'), "bead should not be a short word");
$this
->assertFalse(porterstemmer_short_word('beds', 3, 'Stemmer steps'), "beds should not be a short word");
$this
->assertFalse(porterstemmer_short_word('bake', 3, 'Stemmer steps'), "bake should not be a short word");
$this
->assertTrue(porterstemmer_short_word('bak', 3, 'Stemmer steps'), "bak should be a short word");
}
/**
* Test internal steps on the word "administered".
*/
function testAdministered() {
variable_set('minimum_word_size', 2);
porterstemmer_too_short('', TRUE);
$r1 = 0;
$r2 = 0;
$word = 'administered';
porterstemmer_prestemming($word, $r1, $r2);
// Test calculation of R1 and R2
$this
->assertEqual($r1, 2, "R1 for administered should be 2, was {$r1}", 'Stemmer steps');
$this
->assertEqual($r2, 5, "R2 for administered should be 5, was {$r2}", 'Stemmer steps');
// Test step 1b of the algorithm
porterstemmer_step1b($word, $r1);
$this
->assertEqual($word, 'administer', "Step1b should be administer, was {$word}", 'Stemmer steps');
// Test step 4 of the algorithm
porterstemmer_step4($word, $r2);
$this
->assertEqual($word, 'administ', "Step4 should be administ, was {$word}", 'Stemmer steps');
}
/**
* Test internal steps on the word "baked".
*/
function testBaked() {
variable_set('minimum_word_size', 2);
porterstemmer_too_short('', TRUE);
$r1 = 0;
$r2 = 0;
$word = 'baked';
porterstemmer_prestemming($word, $r1, $r2);
// Test calculation of R1 and R2
$this
->assertEqual($r1, 3, "R1 for baked should be 3, was {$r1}", 'Stemmer steps');
$this
->assertEqual($r2, 5, "R2 for baked should be 5, was {$r2}", 'Stemmer steps');
// Test step 1b of the algorithm
porterstemmer_step1b($word, $r1);
$this
->assertEqual($word, 'bake', "Step1b should be bake, was {$word}", 'Stemmer steps');
// Test step 5 of the algorithm
porterstemmer_step5($word, $r1, $r2);
$this
->assertEqual($word, 'bake', "Step5 should be bake, was {$word}", 'Stemmer steps');
}
/**
* Test internal steps on the word "geology".
*/
function testGeology() {
$r1 = 0;
$r2 = 0;
$word = 'geology';
variable_set('minimum_word_size', 2);
porterstemmer_too_short('', TRUE);
porterstemmer_prestemming($word, $r1, $r2);
// Test calculation of R1 and R2
$this
->assertEqual($r1, 4, "R1 for geology should be 4, was {$r1}", 'Stemmer steps');
$this
->assertEqual($r2, 6, "R2 for geology should be 6, was {$r2}", 'Stemmer steps');
// Test step 1c of the algorithm
porterstemmer_step1c($word);
$this
->assertEqual($word, 'geologi', "Step1c should be geologi, was {$word}", 'Stemmer steps');
// Test step 2 of the algorithm
porterstemmer_step2($word, $r1);
$this
->assertEqual($word, 'geolog', "Step2 should be geolog, was {$word}", 'Stemmer steps');
}
/**
* Test internal steps on the words "ies" and "ied".
*/
function testIesIed() {
$r1a = 0;
$r2a = 0;
$r1b = 0;
$r2b = 0;
$worda = 'ied';
$wordb = 'ies';
variable_set('minimum_word_size', 2);
porterstemmer_too_short('', TRUE);
porterstemmer_prestemming($worda, $r1a, $r2a);
porterstemmer_prestemming($wordb, $r1b, $r2b);
// Test step 1a of the algorithm
porterstemmer_step1a($worda);
porterstemmer_step1a($wordb);
$this
->assertEqual($worda, 'ie', "Step1a should be ie, was {$worda}", 'Stemmer steps');
$this
->assertEqual($wordb, 'ie', "Step1a should be ie, was {$wordb}", 'Stemmer steps');
}
/**
* Tests the excerpt function porterstemmer_sbp_excerpt_match().
*/
function testExcerpts() {
// Test with simple stemmed match.
$key = 'walking';
$text = 'I walked to the Grand Walks yesterday.';
$offset = 0;
$boundary = '[ ]+';
$result1 = porterstemmer_sbp_excerpt_match($key, $text, $offset, $boundary);
$this
->assertEqual($result1['where'], 2, 'Found match 1 in right place', 'Excerpt');
$this
->assertEqual($result1['keyword'], 'walked', 'Found right keyword for match 1', 'Excerpt');
// Test with upper-case in the keyword.
$result1b = porterstemmer_sbp_excerpt_match('waLk', $text, $offset, $boundary);
$this
->assertEqual($result1b['where'], 2, 'Found match 1b in right place', 'Excerpt');
$this
->assertEqual($result1b['keyword'], 'walked', 'Found right keyword for match 1b', 'Excerpt');
// Test with upper-case in the text.
$offset = 12;
$result2 = porterstemmer_sbp_excerpt_match($key, $text, $offset, $boundary);
$this
->assertEqual($result2['where'], 22, 'Found match 2 in right place', 'Excerpt');
$this
->assertEqual($result2['keyword'], 'Walks', 'Found right keyword for match 2', 'Excerpt');
// Test with a false match followed by a real match.
$text = 'I walknotawordhere to walk to school.';
$offset = 0;
$result3 = porterstemmer_sbp_excerpt_match($key, $text, $offset, $boundary);
$this
->assertEqual($result3['where'], 22, 'Found match 3 in right place', 'Excerpt');
$this
->assertEqual($result3['keyword'], 'walk', 'Found right keyword for match 3', 'Excerpt');
}
}
/**
* Unit tests for Porter Stemmer - Stemming output part 1 PECL.
*/
class PorterStemmerPECLOutput1UnitTest extends PorterStemmerOutput1UnitTest {
public static function getInfo() {
return array(
'name' => t('Stemming output 1 PECL'),
'description' => t('Test that the stemming function returns the correct stemmed words with PECL library'),
'group' => t('Porter Stemmer'),
);
}
/**
* Tests the next 2000 words in the file for stemming accuracy.
*/
function testStemmingUnitTest() {
$this
->_run_porterstemmer_stem_test(0, 2000, TRUE);
}
}
/**
* Unit tests for Porter Stemmer - Stemming output part 2 PECL.
*/
class PorterStemmerPECLOutput2UnitTest extends PorterStemmerOutput1UnitTest {
public static function getInfo() {
return array(
'name' => t('Stemming output 2 PECL'),
'description' => t('Test that the stemming function returns the correct stemmed words with PECL library'),
'group' => t('Porter Stemmer'),
);
}
/**
* Tests the next 2000 words in the file for stemming accuracy.
*/
function testStemmingUnitTest() {
$this
->_run_porterstemmer_stem_test(2000, 2000, TRUE);
}
}
/**
* Unit tests for Porter Stemmer - Stemming output part 3 PECL.
*/
class PorterStemmerPECLOutput3UnitTest extends PorterStemmerOutput1UnitTest {
public static function getInfo() {
return array(
'name' => t('Stemming output 3 PECL'),
'description' => t('Test that the stemming function returns the correct stemmed words with PECL library'),
'group' => t('Porter Stemmer'),
);
}
/**
* Tests the next 2000 words in the file for stemming accuracy.
*/
function testStemmingUnitTest() {
$this
->_run_porterstemmer_stem_test(4000, 2000, TRUE);
}
}
/**
* Unit tests for Porter Stemmer - Stemming output part 4 PECL.
*/
class PorterStemmerPECLOutput4UnitTest extends PorterStemmerOutput1UnitTest {
public static function getInfo() {
return array(
'name' => t('Stemming output 4 PECL'),
'description' => t('Test that the stemming function returns the correct stemmed words with PECL library'),
'group' => t('Porter Stemmer'),
);
}
/**
* Tests the next 2000 words in the file for stemming accuracy.
*/
function testStemmingUnitTest() {
$this
->_run_porterstemmer_stem_test(6000, 2000, TRUE);
}
}
/**
* Unit tests for Porter Stemmer - Stemming output part 5 PECL.
*/
class PorterStemmerPECLOutput5UnitTest extends PorterStemmerOutput1UnitTest {
public static function getInfo() {
return array(
'name' => t('Stemming output 5 PECL'),
'description' => t('Test that the stemming function returns the correct stemmed words with PECL library'),
'group' => t('Porter Stemmer'),
);
}
/**
* Tests the next 2000 words in the file for stemming accuracy.
*/
function testStemmingUnitTest() {
$this
->_run_porterstemmer_stem_test(8000, 2000, TRUE);
}
}
/**
* Unit tests for Porter Stemmer - Stemming output part 6 PECL.
*/
class PorterStemmerPECLOutput6UnitTest extends PorterStemmerOutput1UnitTest {
public static function getInfo() {
return array(
'name' => t('Stemming output 6 PECL'),
'description' => t('Test that the stemming function returns the correct stemmed words with PECL library'),
'group' => t('Porter Stemmer'),
);
}
/**
* Tests the next 2000 words in the file for stemming accuracy.
*/
function testStemmingUnitTest() {
$this
->_run_porterstemmer_stem_test(10000, 2000, TRUE);
}
}
/**
* Unit tests for Porter Stemmer - Stemming output part 7 PECL.
*/
class PorterStemmerPECLOutput7UnitTest extends PorterStemmerOutput1UnitTest {
public static function getInfo() {
return array(
'name' => t('Stemming output 7 PECL'),
'description' => t('Test that the stemming function returns the correct stemmed words with PECL library'),
'group' => t('Porter Stemmer'),
);
}
/**
* Tests the next 2000 words in the file for stemming accuracy.
*/
function testStemmingUnitTest() {
$this
->_run_porterstemmer_stem_test(12000, 2000, TRUE);
}
}
/**
* Unit tests for Porter Stemmer - Stemming output part 8 PECL.
*/
class PorterStemmerPECLOutput8UnitTest extends PorterStemmerOutput1UnitTest {
public static function getInfo() {
return array(
'name' => t('Stemming output 8 PECL'),
'description' => t('Test that the stemming function returns the correct stemmed words with PECL library'),
'group' => t('Porter Stemmer'),
);
}
/**
* Tests the next 2000 words in the file for stemming accuracy.
*/
function testStemmingUnitTest() {
$this
->_run_porterstemmer_stem_test(14000, 2000, TRUE);
}
}
/**
* Unit tests for Porter Stemmer - Stemming output part 9 PECL.
*/
class PorterStemmerPECLOutput9UnitTest extends PorterStemmerOutput1UnitTest {
public static function getInfo() {
return array(
'name' => t('Stemming output 9 PECL'),
'description' => t('Test that the stemming function returns the correct stemmed words with PECL library'),
'group' => t('Porter Stemmer'),
);
}
/**
* Tests the next 2000 words in the file for stemming accuracy.
*/
function testStemmingUnitTest() {
$this
->_run_porterstemmer_stem_test(16000, 2000, TRUE);
}
}
/**
* Unit tests for Porter Stemmer - Stemming output part 10 PECL.
*/
class PorterStemmerPECLOutput10UnitTest extends PorterStemmerOutput1UnitTest {
public static function getInfo() {
return array(
'name' => t('Stemming output 10 PECL'),
'description' => t('Test that the stemming function returns the correct stemmed words with PECL library'),
'group' => t('Porter Stemmer'),
);
}
/**
* Tests the next 2000 words in the file for stemming accuracy.
*/
function testStemmingUnitTest() {
$this
->_run_porterstemmer_stem_test(18000, 2000, TRUE);
}
}
/**
* Unit tests for Porter Stemmer - Stemming output part 11 PECL.
*/
class PorterStemmerPECLOutput11UnitTest extends PorterStemmerOutput1UnitTest {
public static function getInfo() {
return array(
'name' => t('Stemming output 11 PECL'),
'description' => t('Test that the stemming function returns the correct stemmed words with PECL library'),
'group' => t('Porter Stemmer'),
);
}
/**
* Tests the next 2000 words in the file for stemming accuracy.
*/
function testStemmingUnitTest() {
$this
->_run_porterstemmer_stem_test(20000, 2000, TRUE);
}
}
/**
* Unit tests for Porter Stemmer - Stemming output part 12 PECL.
*/
class PorterStemmerPECLOutput12UnitTest extends PorterStemmerOutput1UnitTest {
public static function getInfo() {
return array(
'name' => t('Stemming output 12 PECL'),
'description' => t('Test that the stemming function returns the correct stemmed words with PECL library'),
'group' => t('Porter Stemmer'),
);
}
/**
* Tests the next 2000 words in the file for stemming accuracy.
*/
function testStemmingUnitTest() {
$this
->_run_porterstemmer_stem_test(22000, 2000, TRUE);
}
}
/**
* Unit tests for Porter Stemmer - Stemming output part 13 PECL.
*/
class PorterStemmerPECLOutput13UnitTest extends PorterStemmerOutput1UnitTest {
public static function getInfo() {
return array(
'name' => t('Stemming output 13 PECL'),
'description' => t('Test that the stemming function returns the correct stemmed words with PECL library'),
'group' => t('Porter Stemmer'),
);
}
/**
* Tests the next 2000 words in the file for stemming accuracy.
*/
function testStemmingUnitTest() {
$this
->_run_porterstemmer_stem_test(24000, 2000, TRUE);
}
}
/**
* Unit tests for Porter Stemmer - Stemming output part 14 PECL.
*/
class PorterStemmerPECLOutput14UnitTest extends PorterStemmerOutput1UnitTest {
public static function getInfo() {
return array(
'name' => t('Stemming output 14 PECL'),
'description' => t('Test that the stemming function returns the correct stemmed words with PECL library'),
'group' => t('Porter Stemmer'),
);
}
/**
* Tests the next 2000 words in the file for stemming accuracy.
*/
function testStemmingUnitTest() {
$this
->_run_porterstemmer_stem_test(26000, 2000, TRUE);
}
}
/**
* Unit tests for Porter Stemmer - Stemming output part 15 PECL.
*/
class PorterStemmerPECLOutput15UnitTest extends PorterStemmerOutput1UnitTest {
public static function getInfo() {
return array(
'name' => t('Stemming output 15 PECL'),
'description' => t('Test that the stemming function returns the correct stemmed words with PECL library'),
'group' => t('Porter Stemmer'),
);
}
/**
* Tests the next 2000 words in the file for stemming accuracy.
*/
function testStemmingUnitTest() {
$this
->_run_porterstemmer_stem_test(28000, 2000, TRUE);
}
}
Classes
Name | Description |
---|---|
PorterStemmerFunctionalTest | Functional test for Porter Stemmer. |
PorterStemmerInternalsUnitTest | Unit tests for Porter Stemmer - Stemming internals. |
PorterStemmerOutput10UnitTest | Unit tests for Porter Stemmer - Stemming output part 10. |
PorterStemmerOutput11UnitTest | Unit tests for Porter Stemmer - Stemming output part 11. |
PorterStemmerOutput12UnitTest | Unit tests for Porter Stemmer - Stemming output part 12. |
PorterStemmerOutput13UnitTest | Unit tests for Porter Stemmer - Stemming output part 13. |
PorterStemmerOutput14UnitTest | Unit tests for Porter Stemmer - Stemming output part 14. |
PorterStemmerOutput15UnitTest | Unit tests for Porter Stemmer - Stemming output part 15. |
PorterStemmerOutput1UnitTest | Unit tests for Porter Stemmer - Stemming output part 1. |
PorterStemmerOutput2UnitTest | Unit tests for Porter Stemmer - Stemming output part 2. |
PorterStemmerOutput3UnitTest | Unit tests for Porter Stemmer - Stemming output part 3. |
PorterStemmerOutput4UnitTest | Unit tests for Porter Stemmer - Stemming output part 4. |
PorterStemmerOutput5UnitTest | Unit tests for Porter Stemmer - Stemming output part 5. |
PorterStemmerOutput6UnitTest | Unit tests for Porter Stemmer - Stemming output part 6. |
PorterStemmerOutput7UnitTest | Unit tests for Porter Stemmer - Stemming output part 7. |
PorterStemmerOutput8UnitTest | Unit tests for Porter Stemmer - Stemming output part 8. |
PorterStemmerOutput9UnitTest | Unit tests for Porter Stemmer - Stemming output part 9. |
PorterStemmerPECLOutput10UnitTest | Unit tests for Porter Stemmer - Stemming output part 10 PECL. |
PorterStemmerPECLOutput11UnitTest | Unit tests for Porter Stemmer - Stemming output part 11 PECL. |
PorterStemmerPECLOutput12UnitTest | Unit tests for Porter Stemmer - Stemming output part 12 PECL. |
PorterStemmerPECLOutput13UnitTest | Unit tests for Porter Stemmer - Stemming output part 13 PECL. |
PorterStemmerPECLOutput14UnitTest | Unit tests for Porter Stemmer - Stemming output part 14 PECL. |
PorterStemmerPECLOutput15UnitTest | Unit tests for Porter Stemmer - Stemming output part 15 PECL. |
PorterStemmerPECLOutput1UnitTest | Unit tests for Porter Stemmer - Stemming output part 1 PECL. |
PorterStemmerPECLOutput2UnitTest | Unit tests for Porter Stemmer - Stemming output part 2 PECL. |
PorterStemmerPECLOutput3UnitTest | Unit tests for Porter Stemmer - Stemming output part 3 PECL. |
PorterStemmerPECLOutput4UnitTest | Unit tests for Porter Stemmer - Stemming output part 4 PECL. |
PorterStemmerPECLOutput5UnitTest | Unit tests for Porter Stemmer - Stemming output part 5 PECL. |
PorterStemmerPECLOutput6UnitTest | Unit tests for Porter Stemmer - Stemming output part 6 PECL. |
PorterStemmerPECLOutput7UnitTest | Unit tests for Porter Stemmer - Stemming output part 7 PECL. |
PorterStemmerPECLOutput8UnitTest | Unit tests for Porter Stemmer - Stemming output part 8 PECL. |
PorterStemmerPECLOutput9UnitTest | Unit tests for Porter Stemmer - Stemming output part 9 PECL. |