aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/search/native_test.php54
1 files changed, 43 insertions, 11 deletions
diff --git a/tests/search/native_test.php b/tests/search/native_test.php
index 3726b96a82..66972079cf 100644
--- a/tests/search/native_test.php
+++ b/tests/search/native_test.php
@@ -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);
+ }
}
}