From 6b60153ab4ac036bcd4eaaa90806d9898fc1e9a2 Mon Sep 17 00:00:00 2001 From: Geolim4 Date: Fri, 8 Aug 2014 15:06:12 +0200 Subject: [ticket/12671] Possibility to use NOT LIKE expression PHPBB3-12671 --- tests/dbal/select_test.php | 42 ++++++++++++++++++++++++++++++++++++++ tests/di/create_container_test.php | 4 ++++ 2 files changed, 46 insertions(+) (limited to 'tests') diff --git a/tests/dbal/select_test.php b/tests/dbal/select_test.php index e480716a49..ce07d7d0fb 100644 --- a/tests/dbal/select_test.php +++ b/tests/dbal/select_test.php @@ -233,6 +233,48 @@ class phpbb_dbal_select_test extends phpbb_database_test_case $db->sql_freeresult($result); } + public function not_like_expression_data() + { + // * = any_char; # = one_char + return array( + array('barfoo', array(array('username_clean' => 'bertie'), + array('username_clean' => 'foobar'))), + array('bar', array(array('username_clean' => 'bertie'),)), + array('bar*', array(array('username_clean' => 'bertie'), + array('username_clean' => 'foobar'))), + array('*bar*', array(array('username_clean' => 'bertie'))), + array('b*r', array(array('username_clean' => 'barfoo'), + array('username_clean' => 'foobar'))), + array('b*e', array(array('username_clean' => 'barfoo'), + array('username_clean' => 'foobar'))), + array('#b*e', array(array('username_clean' => 'barfoo'), + array('username_clean' => 'foobar'))), + array('b####e', array(array('username_clean' => 'barfoo'), + array('username_clean' => 'foobar'))), + ); + } + + /** + * @dataProvider not_like_expression_data + */ + public function test_not_like_expression($like_expression, $expected) + { + $db = $this->new_dbal(); + + $like_expression = str_replace('*', $db->get_any_char(), $like_expression); + $like_expression = str_replace('#', $db->get_one_char(), $like_expression); + $where = ($like_expression) ? 'username_clean ' . $db->sql_not_like_expression($like_expression) : ''; + + $result = $db->sql_query('SELECT username_clean + FROM phpbb_users + ' . (($where) ? ' WHERE ' . $where : '') . ' + ORDER BY user_id ASC'); + + $this->assertEquals($expected, $db->sql_fetchrowset($result)); + + $db->sql_freeresult($result); + } + public function in_set_data() { return array( diff --git a/tests/di/create_container_test.php b/tests/di/create_container_test.php index 559c0b122c..4ae6017989 100644 --- a/tests/di/create_container_test.php +++ b/tests/di/create_container_test.php @@ -191,6 +191,10 @@ namespace phpbb\db\driver { } + function sql_not_like_expression($expression) + { + } + function sql_fetchrowset($query_id = false) { return array( -- cgit v1.2.1 From 01943adbf72e137b9dfbda3ac85120c21a30fab8 Mon Sep 17 00:00:00 2001 From: Geolim4 Date: Fri, 8 Aug 2014 18:32:17 +0200 Subject: [ticket/12671] Possibility to use NOT LIKE expression PHPBB3-12671 --- tests/dbal/select_test.php | 38 +++++++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 13 deletions(-) (limited to 'tests') diff --git a/tests/dbal/select_test.php b/tests/dbal/select_test.php index ce07d7d0fb..50ac5eb4d5 100644 --- a/tests/dbal/select_test.php +++ b/tests/dbal/select_test.php @@ -237,20 +237,32 @@ class phpbb_dbal_select_test extends phpbb_database_test_case { // * = any_char; # = one_char return array( - array('barfoo', array(array('username_clean' => 'bertie'), - array('username_clean' => 'foobar'))), - array('bar', array(array('username_clean' => 'bertie'),)), - array('bar*', array(array('username_clean' => 'bertie'), - array('username_clean' => 'foobar'))), + array('barfoo', array( + array('username_clean' => 'foobar'), + array('username_clean' => 'bertie')) + ), + array('bar', array(array('username_clean' => 'bertie'))), + array('bar*', array( + array('username_clean' => 'foobar'), + array('username_clean' => 'bertie')) + ), array('*bar*', array(array('username_clean' => 'bertie'))), - array('b*r', array(array('username_clean' => 'barfoo'), - array('username_clean' => 'foobar'))), - array('b*e', array(array('username_clean' => 'barfoo'), - array('username_clean' => 'foobar'))), - array('#b*e', array(array('username_clean' => 'barfoo'), - array('username_clean' => 'foobar'))), - array('b####e', array(array('username_clean' => 'barfoo'), - array('username_clean' => 'foobar'))), + array('b*r', array( + array('username_clean' => 'barfoo'), + array('username_clean' => 'foobar')) + ), + array('b*e', array( + array('username_clean' => 'barfoo'), + array('username_clean' => 'foobar')) + ), + array('#b*e', array( + array('username_clean' => 'barfoo'), + array('username_clean' => 'foobar')) + ), + array('b####e', array( + array('username_clean' => 'barfoo'), + array('username_clean' => 'foobar')) + ), ); } -- cgit v1.2.1 From 4c06467777547d72a6ea936d024d85cae701189b Mon Sep 17 00:00:00 2001 From: Geolim4 Date: Sat, 9 Aug 2014 12:26:11 +0200 Subject: [ticket/12671] Possibility to use NOT LIKE expression PHPBB3-12671 --- tests/dbal/select_test.php | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) (limited to 'tests') diff --git a/tests/dbal/select_test.php b/tests/dbal/select_test.php index 50ac5eb4d5..b7074552ba 100644 --- a/tests/dbal/select_test.php +++ b/tests/dbal/select_test.php @@ -239,9 +239,13 @@ class phpbb_dbal_select_test extends phpbb_database_test_case return array( array('barfoo', array( array('username_clean' => 'foobar'), - array('username_clean' => 'bertie')) - ), - array('bar', array(array('username_clean' => 'bertie'))), + array('username_clean' => 'bertie') + )), + array('bar', array( + array('username_clean' => 'barfoo'), + array('username_clean' => 'foobar'), + array('username_clean' => 'bertie'), + )), array('bar*', array( array('username_clean' => 'foobar'), array('username_clean' => 'bertie')) @@ -249,20 +253,22 @@ class phpbb_dbal_select_test extends phpbb_database_test_case array('*bar*', array(array('username_clean' => 'bertie'))), array('b*r', array( array('username_clean' => 'barfoo'), - array('username_clean' => 'foobar')) - ), + array('username_clean' => 'foobar'), + array('username_clean' => 'bertie') + )), array('b*e', array( array('username_clean' => 'barfoo'), - array('username_clean' => 'foobar')) - ), + array('username_clean' => 'foobar') + )), array('#b*e', array( array('username_clean' => 'barfoo'), - array('username_clean' => 'foobar')) - ), + array('username_clean' => 'foobar'), + array('username_clean' => 'bertie') + )), array('b####e', array( array('username_clean' => 'barfoo'), - array('username_clean' => 'foobar')) - ), + array('username_clean' => 'foobar') + )), ); } -- cgit v1.2.1