Commit 30761b5e authored by Bas de Nooijer's avatar Bas de Nooijer

Refactored unittest to use dataprovider

parent a5e08153
...@@ -45,362 +45,384 @@ class SpellcheckTest extends \PHPUnit_Framework_TestCase ...@@ -45,362 +45,384 @@ class SpellcheckTest extends \PHPUnit_Framework_TestCase
$this->parser = new Parser(); $this->parser = new Parser();
} }
public function testParseExtended() /**
* @dataProvider providerParseExtended
*/
public function testParseExtended($data)
{ {
$data = array(); $result = $this->parser->parse($this->query, null, $data);
$data['solr4'] = array(
'spellcheck' => array( $suggestions = $result->getSuggestions();
'suggestions' => array( $this->assertEquals(false, $result->getCorrectlySpelled());
'delll', $this->assertEquals('dell', $suggestions[0]->getWord());
array ( $this->assertEquals('ultrasharp', $suggestions[1]->getWord());
'numFound' => 1, $this->assertEquals(6, $suggestions[1]->getStartOffset());
'startOffset' => 0, $this->assertEquals('ultrasharp', $suggestions[2]->getWord());
'endOffset' => 5, $this->assertEquals(16, $suggestions[2]->getStartOffset());
'origFreq' => 0, $this->assertEquals('dell ultrasharp', $result->getCollation()->getQuery());
'suggestion' => array ( $collations = $result->getCollations();
0 => array ( $this->assertEquals('dell ultrasharp', $collations[0]->getQuery());
'word' => 'dell', $this->assertEquals('dell ultrasharp new', $collations[1]->getQuery());
'freq' => 1, }
public function providerParseExtended()
{
return array(
'solr4' => array(
'data' => array(
'spellcheck' => array(
'suggestions' => array(
'delll',
array(
'numFound' => 1,
'startOffset' => 0,
'endOffset' => 5,
'origFreq' => 0,
'suggestion' => array(
0 => array(
'word' => 'dell',
'freq' => 1,
),
),
), ),
), 'ultrashar',
), array(
'ultrashar', 'numFound' => 1,
array ( 'startOffset' => 6,
'numFound' => 1, 'endOffset' => 15,
'startOffset' => 6, 'origFreq' => 0,
'endOffset' => 15, 'suggestion' => array(
'origFreq' => 0, 0 => array(
'suggestion' => array ( 'word' => 'ultrasharp',
0 => array ( 'freq' => 1,
'word' => 'ultrasharp', ),
'freq' => 1, ),
), ),
), 'ultrashar',
), array(
'ultrashar', 'numFound' => 1,
array ( 'startOffset' => 16,
'numFound' => 1, 'endOffset' => 25,
'startOffset' => 16, 'origFreq' => 0,
'endOffset' => 25, 'suggestion' => array(
'origFreq' => 0, 0 => array(
'suggestion' => array ( 'word' => 'ultrasharp',
0 => array ( 'freq' => 1,
'word' => 'ultrasharp', ),
'freq' => 1, ),
), ),
), 'correctlySpelled',
), false,
'correctlySpelled', 'collation',
false, array(
'collation', 0 => 'collationQuery',
array ( 1 => 'dell ultrasharp',
0 => 'collationQuery', 2 => 'hits',
1 => 'dell ultrasharp', 3 => 0,
2 => 'hits', 4 => 'misspellingsAndCorrections',
3 => 0, 5 => array(
4 => 'misspellingsAndCorrections', 0 => 'delll',
5 => array ( 1 => 'dell',
0 => 'delll', 2 => 'ultrashar',
1 => 'dell', 3 => 'ultrasharp',
2 => 'ultrashar', ),
3 => 'ultrasharp', ),
), 'collation',
), array(
'collation', 0 => 'collationQuery',
array ( 1 => 'dell ultrasharp new',
0 => 'collationQuery', 2 => 'hits',
1 => 'dell ultrasharp new', 3 => 0,
2 => 'hits', 4 => 'misspellingsAndCorrections',
3 => 0, 5 => array(
4 => 'misspellingsAndCorrections', 0 => 'delll',
5 => array ( 1 => 'dell',
0 => 'delll', 2 => 'ultrashar',
1 => 'dell', 3 => 'ultrasharp',
2 => 'ultrashar', ),
3 => 'ultrasharp', ),
), )
), )
) )
) ),
); 'solr5' => array(
'data' => array(
$data['solr5'] = array( 'spellcheck' => array(
'spellcheck' => array( 'suggestions' => array(
'suggestions' => array( 'delll',
'delll', array(
array ( 'numFound' => 1,
'numFound' => 1, 'startOffset' => 0,
'startOffset' => 0, 'endOffset' => 5,
'endOffset' => 5, 'origFreq' => 0,
'origFreq' => 0, 'suggestion' => array(
'suggestion' => array ( 0 => array(
0 => array ( 'word' => 'dell',
'word' => 'dell', 'freq' => 1,
'freq' => 1, ),
),
), ),
), 'ultrashar',
), array(
'ultrashar', 'numFound' => 1,
array ( 'startOffset' => 6,
'numFound' => 1, 'endOffset' => 15,
'startOffset' => 6, 'origFreq' => 0,
'endOffset' => 15, 'suggestion' => array(
'origFreq' => 0, 0 => array(
'suggestion' => array ( 'word' => 'ultrasharp',
0 => array ( 'freq' => 1,
'word' => 'ultrasharp', ),
'freq' => 1, ),
), ),
), 'ultrashar',
), array(
'ultrashar', 'numFound' => 1,
array ( 'startOffset' => 16,
'numFound' => 1, 'endOffset' => 25,
'startOffset' => 16, 'origFreq' => 0,
'endOffset' => 25, 'suggestion' => array(
'origFreq' => 0, 0 => array(
'suggestion' => array ( 'word' => 'ultrasharp',
0 => array ( 'freq' => 1,
'word' => 'ultrasharp', ),
'freq' => 1, ),
), ),
), ),
), 'correctlySpelled',
), false,
'correctlySpelled', 'collations' => array(
false, 'collation',
'collations' => array( array(
'collation', 0 => 'collationQuery',
array ( 1 => 'dell ultrasharp',
0 => 'collationQuery', 2 => 'hits',
1 => 'dell ultrasharp', 3 => 0,
2 => 'hits', 4 => 'misspellingsAndCorrections',
3 => 0, 5 => array(
4 => 'misspellingsAndCorrections', 0 => 'delll',
5 => array ( 1 => 'dell',
0 => 'delll', 2 => 'ultrashar',
1 => 'dell', 3 => 'ultrasharp',
2 => 'ultrashar', ),
3 => 'ultrasharp', ),
), 'collation',
), array(
'collation', 0 => 'collationQuery',
array ( 1 => 'dell ultrasharp new',
0 => 'collationQuery', 2 => 'hits',
1 => 'dell ultrasharp new', 3 => 0,
2 => 'hits', 4 => 'misspellingsAndCorrections',
3 => 0, 5 => array(
4 => 'misspellingsAndCorrections', 0 => 'delll',
5 => array ( 1 => 'dell',
0 => 'delll', 2 => 'ultrashar',
1 => 'dell', 3 => 'ultrasharp',
2 => 'ultrashar', ),
3 => 'ultrasharp', ),
), )
), )
) )
) )
); );
}
foreach ($data as $testData) { /**
* @dataProvider providerParse
*/
public function testParse($data)
{
$result = $this->parser->parse($this->query, null, $data);
$result = $this->parser->parse($this->query, null, $testData); $suggestions = $result->getSuggestions();
$this->assertEquals(false, $result->getCorrectlySpelled());
$this->assertEquals('dell', $suggestions[0]->getWord());
$this->assertEquals('dell ultrasharp', $result->getCollation()->getQuery());
$collations = $result->getCollations();
$this->assertEquals('dell ultrasharp', $collations[0]->getQuery());
$this->assertEquals('dell ultrasharp new', $collations[1]->getQuery());
$suggestions = $result->getSuggestions();
$this->assertEquals(false, $result->getCorrectlySpelled());
$this->assertEquals('dell', $suggestions[0]->getWord());
$this->assertEquals('ultrasharp', $suggestions[1]->getWord());
$this->assertEquals(6, $suggestions[1]->getStartOffset());
$this->assertEquals('ultrasharp', $suggestions[2]->getWord());
$this->assertEquals(16, $suggestions[2]->getStartOffset());
$this->assertEquals('dell ultrasharp', $result->getCollation()->getQuery());
$collations = $result->getCollations();
$this->assertEquals('dell ultrasharp', $collations[0]->getQuery());
$this->assertEquals('dell ultrasharp new', $collations[1]->getQuery());
}
} }
public function testParse() public function providerParse()
{ {
$data = array(); return array(
$data['solr4'] = array( 'solr4' => array(
'spellcheck' => array( 'data' => array(
'suggestions' => array( 'spellcheck' => array(
0 => 'delll', 'suggestions' => array(
1 => array ( 0 => 'delll',
'numFound' => 1, 1 => array(
'startOffset' => 0, 'numFound' => 1,
'endOffset' => 5, 'startOffset' => 0,
'origFreq' => 0, 'endOffset' => 5,
'suggestion' => array ( 'origFreq' => 0,
0 => 'dell', 'suggestion' => array(
), 0 => 'dell',
), ),
2 => 'ultrashar',
3 => array (
'numFound' => 1,
'startOffset' => 6,
'endOffset' => 15,
'origFreq' => 0,
'suggestion' => array (
0 => array (
'word' => 'ultrasharp',
'freq' => 1,
), ),
), 2 => 'ultrashar',
), 3 => array(
4 => 'correctlySpelled', 'numFound' => 1,
5 => false, 'startOffset' => 6,
6 => 'collation', 'endOffset' => 15,
7 => 'dell ultrasharp', 'origFreq' => 0,
8 => 'collation', 'suggestion' => array(
9 => 'dell ultrasharp new', 0 => array(
'word' => 'ultrasharp',
'freq' => 1,
),
),
),
4 => 'correctlySpelled',
5 => false,
6 => 'collation',
7 => 'dell ultrasharp',
8 => 'collation',
9 => 'dell ultrasharp new',
)
)
) )
) ),
); 'solr5' => array(
'data' => array(
$data['solr5'] = array( 'spellcheck' => array(
'spellcheck' => array( 'suggestions' => array(
'suggestions' => array( 0 => 'delll',
0 => 'delll', 1 => array(
1 => array ( 'numFound' => 1,
'numFound' => 1, 'startOffset' => 0,
'startOffset' => 0, 'endOffset' => 5,
'endOffset' => 5, 'origFreq' => 0,
'origFreq' => 0, 'suggestion' => array(
'suggestion' => array ( 0 => 'dell',
0 => 'dell', ),
), ),
), 2 => 'ultrashar',
2 => 'ultrashar', 3 => array(
3 => array ( 'numFound' => 1,
'numFound' => 1, 'startOffset' => 6,
'startOffset' => 6, 'endOffset' => 15,
'endOffset' => 15, 'origFreq' => 0,
'origFreq' => 0, 'suggestion' => array(
'suggestion' => array ( 0 => array(
0 => array ( 'word' => 'ultrasharp',
'word' => 'ultrasharp', 'freq' => 1,
'freq' => 1, ),
),
), ),
), ),
), 'correctlySpelled',
), false,
'correctlySpelled', 'collations' => array(
false, 'collation',
'collations' => array( 'dell ultrasharp',
'collation', 'collation',
'dell ultrasharp', 'dell ultrasharp new',
'collation', )
'dell ultrasharp new', )
) )
) )
); );
}
foreach ($data as $testData) { /**
* @dataProvider providerParseSingleCollation
$result = $this->parser->parse($this->query, null, $testData); */
public function testParseSingleCollation($data)
{
$result = $this->parser->parse($this->query, null, $data);
$collations = $result->getCollations();
$this->assertEquals('dell ultrasharp', $collations[0]->getQuery());
$suggestions = $result->getSuggestions(); $words = $result->getSuggestion(1)->getWords();
$this->assertEquals(false, $result->getCorrectlySpelled()); $this->assertEquals(array('word' => 'ultrasharpy', 'freq' => 1), $words[1]);
$this->assertEquals('dell', $suggestions[0]->getWord());
$this->assertEquals('dell ultrasharp', $result->getCollation()->getQuery());
$collations = $result->getCollations();
$this->assertEquals('dell ultrasharp', $collations[0]->getQuery());
$this->assertEquals('dell ultrasharp new', $collations[1]->getQuery());
}
} }
public function testParseSingleCollation() public function providerParseSingleCollation()
{ {
$data = array(); return array(
$data['solr4'] = array( 'solr4' => array(
'spellcheck' => array( 'data' => array(
'suggestions' => array( 'spellcheck' => array(
0 => 'delll', 'suggestions' => array(
1 => array ( 0 => 'delll',
'numFound' => 1, 1 => array(
'startOffset' => 0, 'numFound' => 1,
'endOffset' => 5, 'startOffset' => 0,
'origFreq' => 0, 'endOffset' => 5,
'suggestion' => array ( 'origFreq' => 0,
0 => 'dell', 'suggestion' => array(
), 0 => 'dell',
), ),
2 => 'ultrashar',
3 => array (
'numFound' => 1,
'startOffset' => 6,
'endOffset' => 15,
'origFreq' => 0,
'suggestion' => array (
0 => array (
'word' => 'ultrasharp',
'freq' => 2,
), ),
1 => array ( 2 => 'ultrashar',
'word' => 'ultrasharpy', 3 => array(
'freq' => 1, 'numFound' => 1,
'startOffset' => 6,
'endOffset' => 15,
'origFreq' => 0,
'suggestion' => array(
0 => array(
'word' => 'ultrasharp',
'freq' => 2,
),
1 => array(
'word' => 'ultrasharpy',
'freq' => 1,
),
),
), ),
), 4 => 'correctlySpelled',
), 5 => false,
4 => 'correctlySpelled', 6 => 'collation',
5 => false, 7 => 'dell ultrasharp',
6 => 'collation', )
7 => 'dell ultrasharp', )
) )
) ),
); 'solr5' => array(
'data' => array(
$data['solr5'] = array( 'spellcheck' => array(
'spellcheck' => array( 'suggestions' => array(
'suggestions' => array( 0 => 'delll',
0 => 'delll', 1 => array(
1 => array ( 'numFound' => 1,
'numFound' => 1, 'startOffset' => 0,
'startOffset' => 0, 'endOffset' => 5,
'endOffset' => 5, 'origFreq' => 0,
'origFreq' => 0, 'suggestion' => array(
'suggestion' => array ( 0 => 'dell',
0 => 'dell', ),
),
),
2 => 'ultrashar',
3 => array (
'numFound' => 1,
'startOffset' => 6,
'endOffset' => 15,
'origFreq' => 0,
'suggestion' => array (
0 => array (
'word' => 'ultrasharp',
'freq' => 2,
), ),
1 => array ( 2 => 'ultrashar',
'word' => 'ultrasharpy', 3 => array(
'freq' => 1, 'numFound' => 1,
'startOffset' => 6,
'endOffset' => 15,
'origFreq' => 0,
'suggestion' => array(
0 => array(
'word' => 'ultrasharp',
'freq' => 2,
),
1 => array(
'word' => 'ultrasharpy',
'freq' => 1,
),
),
), ),
), ),
), 'correctlySpelled',
), false,
'correctlySpelled', 'collations' => array(
false, 'collation',
'collations' => array( 'dell ultrasharp'
'collation', )
'dell ultrasharp' )
) )
) )
); );
foreach ($data as $testData) {
$result = $this->parser->parse($this->query, null, $testData);
$collations = $result->getCollations();
$this->assertEquals('dell ultrasharp', $collations[0]->getQuery());
$words = $result->getSuggestion(1)->getWords();
$this->assertEquals(array('word' => 'ultrasharpy', 'freq' => 1), $words[1]);
}
} }
public function testParseNoData() public function testParseNoData()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment