1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-04-22 16:51:56 +02:00

[ticket/11174] Check common words, fix array equality assertion.

PHPBB3-11174
This commit is contained in:
Oleg Pudeyev 2012-11-08 11:15:46 -05:00
parent e523517e03
commit a5f7f99478

@ -62,12 +62,14 @@ class phpbb_search_native_test extends phpbb_database_test_case
// ok
// must contain ids
// must not contain ids
// common words
array(
'foo',
'all',
true,
array(1),
array(),
array(),
),
array(
'foo bar',
@ -75,6 +77,7 @@ class phpbb_search_native_test extends phpbb_database_test_case
true,
array(1, 2),
array(),
array(),
),
// leading, trailing and multiple spaces
array(
@ -83,21 +86,25 @@ class phpbb_search_native_test extends phpbb_database_test_case
true,
array(1, 2),
array(),
array(),
),
// words too short
array(
'f',
'all',
false,
array(),
array(),
null,
null,
// short words count as "common" words
array('f'),
),
array(
'f o o',
'all',
false,
array(),
array(),
null,
null,
array('f', 'o', 'o'),
),
array(
'foo -bar',
@ -105,20 +112,23 @@ class phpbb_search_native_test extends phpbb_database_test_case
true,
array(1),
array(2),
array(),
),
// all negative
array(
'-foo',
'all',
false,
array(),
null,
null,
array(),
),
array(
'-foo -bar',
'all',
false,
array(),
null,
null,
array(),
),
// all common
@ -126,8 +136,9 @@ class phpbb_search_native_test extends phpbb_database_test_case
'commonword',
'all',
false,
array(),
array(),
null,
null,
array('commonword'),
),
// some common
array(
@ -136,6 +147,7 @@ class phpbb_search_native_test extends phpbb_database_test_case
true,
array(1),
array(),
array('commonword'),
),
);
}
@ -143,12 +155,32 @@ class phpbb_search_native_test extends phpbb_database_test_case
/**
* @dataProvider keywords
*/
public function test_split_keywords($keywords, $terms, $ok, $must_contain, $must_not_contain)
public function test_split_keywords($keywords, $terms, $ok, $must_contain, $must_not_contain, $common)
{
$rv = $this->search->split_keywords($keywords, $terms);
$this->assertEquals($ok, $rv);
if ($ok)
{
// only check criteria if the search is going to be performed
$this->assert_array_content_equals($must_contain, $this->search->get_must_contain_ids());
$this->assert_array_content_equals($must_not_contain, $this->search->get_must_not_contain_ids());
}
$this->assert_array_content_equals($common, $this->search->get_common_words());
}
public function assert_array_content_equals($one, $two)
{
// http://stackoverflow.com/questions/3838288/phpunit-assert-two-arrays-are-equal-but-order-of-elements-not-important
$this->assertEmpty(array_diff($must_contain, $this->search->get_must_contain_ids()));
$this->assertEmpty(array_diff($must_not_contain, $this->search->get_must_not_contain_ids()));
// but one array_diff is not enough!
if (sizeof(array_diff($one, $two)) || sizeof(array_diff($two, $one)))
{
// get a nice error message
$this->assertEquals($one, $two);
}
else
{
// increase assertion count
$this->assertTrue(true);
}
}
}