VPN licensing server
Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

84 lines
2.5KB

  1. <?php
  2. class WhereClauseTest extends SimpleTest {
  3. function test_1_basic_where() {
  4. $where = new WhereClause('and');
  5. $where->add('username=%s', 'Bart');
  6. $where->add('password=%s', 'hello');
  7. $result = DB::query("SELECT * FROM accounts WHERE %l", $where->text());
  8. $this->assert(count($result) === 1);
  9. $this->assert($result[0]['age'] === '15');
  10. }
  11. function test_2_simple_grouping() {
  12. $where = new WhereClause('and');
  13. $where->add('password=%s', 'hello');
  14. $subclause = $where->addClause('or');
  15. $subclause->add('age=%i', 15);
  16. $subclause->add('age=%i', 14);
  17. $result = DB::query("SELECT * FROM accounts WHERE %l", $where->text());
  18. $this->assert(count($result) === 1);
  19. $this->assert($result[0]['age'] === '15');
  20. }
  21. function test_3_negate_last() {
  22. $where = new WhereClause('and');
  23. $where->add('password=%s', 'hello');
  24. $subclause = $where->addClause('or');
  25. $subclause->add('username!=%s', 'Bart');
  26. $subclause->negateLast();
  27. $result = DB::query("SELECT * FROM accounts WHERE %l", $where->text());
  28. $this->assert(count($result) === 1);
  29. $this->assert($result[0]['age'] === '15');
  30. }
  31. function test_4_negate_last_query() {
  32. $where = new WhereClause('and');
  33. $where->add('password=%s', 'hello');
  34. $subclause = $where->addClause('or');
  35. $subclause->add('username!=%s', 'Bart');
  36. $where->negateLast();
  37. $result = DB::query("SELECT * FROM accounts WHERE %l", $where);
  38. $this->assert(count($result) === 1);
  39. $this->assert($result[0]['age'] === '15');
  40. }
  41. function test_5_negate() {
  42. $where = new WhereClause('and');
  43. $where->add('password=%s', 'hello');
  44. $subclause = $where->addClause('or');
  45. $subclause->add('username!=%s', 'Bart');
  46. $subclause->negate();
  47. $result = DB::query("SELECT * FROM accounts WHERE %l", $where);
  48. $this->assert(count($result) === 1);
  49. $this->assert($result[0]['age'] === '15');
  50. }
  51. function test_6_negate_two() {
  52. $where = new WhereClause('and');
  53. $where->add('password=%s', 'hello');
  54. $where->add('username=%s', 'Bart');
  55. $where->negate();
  56. $result = DB::query("SELECT * FROM accounts WHERE %l", $where);
  57. $this->assert(count($result) === 7);
  58. }
  59. function test_7_or() {
  60. $where = new WhereClause('or');
  61. $where->add('username=%s', 'Bart');
  62. $where->add('username=%s', 'Abe');
  63. $result = DB::query("SELECT * FROM accounts WHERE %l", $where);
  64. $this->assert(count($result) === 2);
  65. }
  66. }
  67. ?>