Commit 83249bb5 authored by Bas de Nooijer's avatar Bas de Nooijer

Merge pull request #361 from basdenooijer/develop

Refactored unittest
parents 2bb12fb1 7f1f9fac
......@@ -45,362 +45,384 @@ class SpellcheckTest extends \PHPUnit_Framework_TestCase
$this->parser = new Parser();
}
public function testParseExtended()
/**
* @dataProvider providerParseExtended
*/
public function testParseExtended($data)
{
$data = array();
$data['solr4'] = array(
'spellcheck' => array(
'suggestions' => array(
'delll',
array (
'numFound' => 1,
'startOffset' => 0,
'endOffset' => 5,
'origFreq' => 0,
'suggestion' => array (
0 => array (
'word' => 'dell',
'freq' => 1,
$result = $this->parser->parse($this->query, null, $data);
$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 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 (
'numFound' => 1,
'startOffset' => 6,
'endOffset' => 15,
'origFreq' => 0,
'suggestion' => array (
0 => array (
'word' => 'ultrasharp',
'freq' => 1,
'ultrashar',
array(
'numFound' => 1,
'startOffset' => 6,
'endOffset' => 15,
'origFreq' => 0,
'suggestion' => array(
0 => array(
'word' => 'ultrasharp',
'freq' => 1,
),
),
),
),
),
'ultrashar',
array (
'numFound' => 1,
'startOffset' => 16,
'endOffset' => 25,
'origFreq' => 0,
'suggestion' => array (
0 => array (
'word' => 'ultrasharp',
'freq' => 1,
'ultrashar',
array(
'numFound' => 1,
'startOffset' => 16,
'endOffset' => 25,
'origFreq' => 0,
'suggestion' => array(
0 => array(
'word' => 'ultrasharp',
'freq' => 1,
),
),
),
),
),
'correctlySpelled',
false,
'collation',
array (
0 => 'collationQuery',
1 => 'dell ultrasharp',
2 => 'hits',
3 => 0,
4 => 'misspellingsAndCorrections',
5 => array (
0 => 'delll',
1 => 'dell',
2 => 'ultrashar',
3 => 'ultrasharp',
),
),
'collation',
array (
0 => 'collationQuery',
1 => 'dell ultrasharp new',
2 => 'hits',
3 => 0,
4 => 'misspellingsAndCorrections',
5 => array (
0 => 'delll',
1 => 'dell',
2 => 'ultrashar',
3 => 'ultrasharp',
),
),
'correctlySpelled',
false,
'collation',
array(
0 => 'collationQuery',
1 => 'dell ultrasharp',
2 => 'hits',
3 => 0,
4 => 'misspellingsAndCorrections',
5 => array(
0 => 'delll',
1 => 'dell',
2 => 'ultrashar',
3 => 'ultrasharp',
),
),
'collation',
array(
0 => 'collationQuery',
1 => 'dell ultrasharp new',
2 => 'hits',
3 => 0,
4 => 'misspellingsAndCorrections',
5 => array(
0 => 'delll',
1 => 'dell',
2 => 'ultrashar',
3 => 'ultrasharp',
),
),
)
)
)
)
);
$data['solr5'] = array(
'spellcheck' => array(
'suggestions' => array(
'delll',
array (
'numFound' => 1,
'startOffset' => 0,
'endOffset' => 5,
'origFreq' => 0,
'suggestion' => array (
0 => array (
'word' => 'dell',
'freq' => 1,
),
'solr5' => 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 (
'numFound' => 1,
'startOffset' => 6,
'endOffset' => 15,
'origFreq' => 0,
'suggestion' => array (
0 => array (
'word' => 'ultrasharp',
'freq' => 1,
'ultrashar',
array(
'numFound' => 1,
'startOffset' => 6,
'endOffset' => 15,
'origFreq' => 0,
'suggestion' => array(
0 => array(
'word' => 'ultrasharp',
'freq' => 1,
),
),
),
),
),
'ultrashar',
array (
'numFound' => 1,
'startOffset' => 16,
'endOffset' => 25,
'origFreq' => 0,
'suggestion' => array (
0 => array (
'word' => 'ultrasharp',
'freq' => 1,
'ultrashar',
array(
'numFound' => 1,
'startOffset' => 16,
'endOffset' => 25,
'origFreq' => 0,
'suggestion' => array(
0 => array(
'word' => 'ultrasharp',
'freq' => 1,
),
),
),
),
),
),
'correctlySpelled',
false,
'collations' => array(
'collation',
array (
0 => 'collationQuery',
1 => 'dell ultrasharp',
2 => 'hits',
3 => 0,
4 => 'misspellingsAndCorrections',
5 => array (
0 => 'delll',
1 => 'dell',
2 => 'ultrashar',
3 => 'ultrasharp',
),
),
'collation',
array (
0 => 'collationQuery',
1 => 'dell ultrasharp new',
2 => 'hits',
3 => 0,
4 => 'misspellingsAndCorrections',
5 => array (
0 => 'delll',
1 => 'dell',
2 => 'ultrashar',
3 => 'ultrasharp',
),
),
'correctlySpelled',
false,
'collations' => array(
'collation',
array(
0 => 'collationQuery',
1 => 'dell ultrasharp',
2 => 'hits',
3 => 0,
4 => 'misspellingsAndCorrections',
5 => array(
0 => 'delll',
1 => 'dell',
2 => 'ultrashar',
3 => 'ultrasharp',
),
),
'collation',
array(
0 => 'collationQuery',
1 => 'dell ultrasharp new',
2 => 'hits',
3 => 0,
4 => 'misspellingsAndCorrections',
5 => array(
0 => 'delll',
1 => 'dell',
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();
$data['solr4'] = array(
'spellcheck' => array(
'suggestions' => array(
0 => 'delll',
1 => array (
'numFound' => 1,
'startOffset' => 0,
'endOffset' => 5,
'origFreq' => 0,
'suggestion' => array (
0 => 'dell',
),
),
2 => 'ultrashar',
3 => array (
'numFound' => 1,
'startOffset' => 6,
'endOffset' => 15,
'origFreq' => 0,
'suggestion' => array (
0 => array (
'word' => 'ultrasharp',
'freq' => 1,
return array(
'solr4' => array(
'data' => array(
'spellcheck' => array(
'suggestions' => array(
0 => 'delll',
1 => array(
'numFound' => 1,
'startOffset' => 0,
'endOffset' => 5,
'origFreq' => 0,
'suggestion' => array(
0 => 'dell',
),
),
),
),
4 => 'correctlySpelled',
5 => false,
6 => 'collation',
7 => 'dell ultrasharp',
8 => 'collation',
9 => 'dell ultrasharp new',
2 => 'ultrashar',
3 => array(
'numFound' => 1,
'startOffset' => 6,
'endOffset' => 15,
'origFreq' => 0,
'suggestion' => array(
0 => array(
'word' => 'ultrasharp',
'freq' => 1,
),
),
),
4 => 'correctlySpelled',
5 => false,
6 => 'collation',
7 => 'dell ultrasharp',
8 => 'collation',
9 => 'dell ultrasharp new',
)
)
)
)
);
$data['solr5'] = array(
'spellcheck' => array(
'suggestions' => array(
0 => 'delll',
1 => array (
'numFound' => 1,
'startOffset' => 0,
'endOffset' => 5,
'origFreq' => 0,
'suggestion' => array (
0 => 'dell',
),
),
2 => 'ultrashar',
3 => array (
'numFound' => 1,
'startOffset' => 6,
'endOffset' => 15,
'origFreq' => 0,
'suggestion' => array (
0 => array (
'word' => 'ultrasharp',
'freq' => 1,
),
'solr5' => array(
'data' => array(
'spellcheck' => array(
'suggestions' => array(
0 => 'delll',
1 => array(
'numFound' => 1,
'startOffset' => 0,
'endOffset' => 5,
'origFreq' => 0,
'suggestion' => array(
0 => 'dell',
),
),
2 => 'ultrashar',
3 => array(
'numFound' => 1,
'startOffset' => 6,
'endOffset' => 15,
'origFreq' => 0,
'suggestion' => array(
0 => array(
'word' => 'ultrasharp',
'freq' => 1,
),
),
),
),
),
),
'correctlySpelled',
false,
'collations' => array(
'collation',
'dell ultrasharp',
'collation',
'dell ultrasharp new',
'correctlySpelled',
false,
'collations' => array(
'collation',
'dell ultrasharp',
'collation',
'dell ultrasharp new',
)
)
)
)
);
}
foreach ($data as $testData) {
$result = $this->parser->parse($this->query, null, $testData);
/**
* @dataProvider providerParseSingleCollation
*/
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();
$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());
}
$words = $result->getSuggestion(1)->getWords();
$this->assertEquals(array('word' => 'ultrasharpy', 'freq' => 1), $words[1]);
}
public function testParseSingleCollation()
public function providerParseSingleCollation()
{
$data = array();
$data['solr4'] = array(
'spellcheck' => array(
'suggestions' => array(
0 => 'delll',
1 => array (
'numFound' => 1,
'startOffset' => 0,
'endOffset' => 5,
'origFreq' => 0,
'suggestion' => array (
0 => 'dell',
),
),
2 => 'ultrashar',
3 => array (
'numFound' => 1,
'startOffset' => 6,
'endOffset' => 15,
'origFreq' => 0,
'suggestion' => array (
0 => array (
'word' => 'ultrasharp',
'freq' => 2,
return array(
'solr4' => array(
'data' => array(
'spellcheck' => array(
'suggestions' => array(
0 => 'delll',
1 => array(
'numFound' => 1,
'startOffset' => 0,
'endOffset' => 5,
'origFreq' => 0,
'suggestion' => array(
0 => 'dell',
),
),
1 => array (
'word' => 'ultrasharpy',
'freq' => 1,
2 => 'ultrashar',
3 => array(
'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,
6 => 'collation',
7 => 'dell ultrasharp',
4 => 'correctlySpelled',
5 => false,
6 => 'collation',
7 => 'dell ultrasharp',
)
)
)
)
);
$data['solr5'] = array(
'spellcheck' => array(
'suggestions' => array(
0 => 'delll',
1 => array (
'numFound' => 1,
'startOffset' => 0,
'endOffset' => 5,
'origFreq' => 0,
'suggestion' => array (
0 => 'dell',
),
),
2 => 'ultrashar',
3 => array (
'numFound' => 1,
'startOffset' => 6,
'endOffset' => 15,
'origFreq' => 0,
'suggestion' => array (
0 => array (
'word' => 'ultrasharp',
'freq' => 2,
),
'solr5' => array(
'data' => array(
'spellcheck' => array(
'suggestions' => array(
0 => 'delll',
1 => array(
'numFound' => 1,
'startOffset' => 0,
'endOffset' => 5,
'origFreq' => 0,
'suggestion' => array(
0 => 'dell',
),
),
1 => array (
'word' => 'ultrasharpy',
'freq' => 1,
2 => 'ultrashar',
3 => array(
'numFound' => 1,
'startOffset' => 6,
'endOffset' => 15,
'origFreq' => 0,
'suggestion' => array(
0 => array(
'word' => 'ultrasharp',
'freq' => 2,
),
1 => array(
'word' => 'ultrasharpy',
'freq' => 1,
),
),
),
),
),
),
'correctlySpelled',
false,
'collations' => array(
'collation',
'dell ultrasharp'
'correctlySpelled',
false,
'collations' => array(
'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()
......
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