home *** CD-ROM | disk | FTP | other *** search
/ Enter 2004 June / ENTER.ISO / files / xampp-win32-1.4.5-installer.exe / xampp / Having.php < prev    next >
Encoding:
PHP Script  |  2004-03-24  |  4.9 KB  |  138 lines

  1. <?php
  2. //
  3. //  $Id: Having.php,v 1.2 2004/03/19 01:10:18 quipo Exp $
  4. //
  5.  
  6. class tests_Having extends tests_UnitTest
  7. {
  8.     function test_setHaving()
  9.     {   // which company has exactly 2 workers???
  10.         $userIds = array();
  11.         $user = new tests_Common(TABLE_USER);
  12.         $newData = array(   'login'     =>  'hans',
  13.                             'password'  =>  '0',
  14.                             'name'      =>  'Hans Dampf',
  15.                             'address_id'=>  0,
  16.                             'company_id'=>  1
  17.                         );
  18.         $userIds[] = $user->add( $newData );
  19.  
  20.         $user->reset();
  21.         $user->setWhere('id IN ('.implode(', ', $userIds).')');
  22.         $user->setGroup('company_id');
  23.         $user->setHaving('count(id) = 2');
  24.  
  25.         $this->assertEquals(array(), $user->getCol('company_id')); // there are no company with 2 workers
  26.  
  27.         $newData = array(   'login'     =>  'rudi',
  28.                             'password'  =>  '0',
  29.                             'name'      =>  'Rudi Ratlos',
  30.                             'address_id'=>  0,
  31.                             'company_id'=>  1
  32.                         );
  33.         $userIds[] = $user->add( $newData );
  34.         $newData = array(   'login'     =>  'susi',
  35.                             'password'  =>  '0',
  36.                             'name'      =>  'Susi Sorglos',
  37.                             'address_id'=>  0,
  38.                             'company_id'=>  5
  39.                         );
  40.         $userIds[] = $user->add( $newData );
  41.  
  42.         $user->reset();
  43.         $user->setWhere('id IN ('.implode(', ', $userIds).')');
  44.         $user->setGroup('company_id');
  45.         $user->setHaving('count(id) = 2');
  46.  
  47.         $this->assertEquals(array(1), $user->getCol('company_id')); // company 1 has exactly 2 workers
  48.  
  49.         $newData = array(   'login'     =>  'lieschen',
  50.                             'password'  =>  '0',
  51.                             'name'      =>  'Lieschen Mueller',
  52.                             'address_id'=>  0,
  53.                             'company_id'=>  5
  54.                         );
  55.         $userIds[] = $user->add( $newData );
  56.  
  57.         $user->reset();
  58.         $user->setWhere('id IN ('.implode(', ', $userIds).')');
  59.         $user->setGroup('company_id');
  60.         $user->setHaving('count(id) = 2');
  61.  
  62.         $this->assertEquals(array(1, 5), $user->getCol('company_id')); // company 1 and 5 has exactly 2 workers
  63.     }
  64.  
  65.     function test_addHaving()
  66.     {   // which companies has more than one worker one the same place and the company_id must be greater than 1
  67.         $userIds = array();
  68.         $user = new tests_Common(TABLE_USER);
  69.         $newData = array(   'login'     =>  'hans',
  70.                             'password'  =>  '0',
  71.                             'name'      =>  'Hans Dampf',
  72.                             'address_id'=>  1,
  73.                             'company_id'=>  1
  74.                         );
  75.         $userIds[] = $user->add( $newData );
  76.  
  77.         $newData = array(   'login'     =>  'rudi',
  78.                             'password'  =>  '0',
  79.                             'name'      =>  'Rudi Ratlos',
  80.                             'address_id'=>  1,
  81.                             'company_id'=>  1
  82.                         );
  83.         $userIds[] = $user->add( $newData );
  84.  
  85.         $newData = array(   'login'     =>  'susi',
  86.                             'password'  =>  '0',
  87.                             'name'      =>  'Susi Sorglos',
  88.                             'address_id'=>  2,
  89.                             'company_id'=>  3
  90.                         );
  91.         $userIds[] = $user->add( $newData );
  92.  
  93.         $newData = array(   'login'     =>  'lieschen',
  94.                             'password'  =>  '0',
  95.                             'name'      =>  'Lieschen Mueller',
  96.                             'address_id'=>  3,
  97.                             'company_id'=>  5
  98.                         );
  99.         $userIds[] = $user->add( $newData );
  100.  
  101.         $newData = array(   'login'     =>  'werner',
  102.                             'password'  =>  '0',
  103.                             'name'      =>  'Werner Lehmann',
  104.                             'address_id'=>  3,
  105.                             'company_id'=>  5
  106.                         );
  107.         $userIds[] = $user->add( $newData );
  108.  
  109.         $user->setGroup('company_id,address_id');
  110.         $user->setHaving('COUNT(address_id) > 1');
  111.         $user->addHaving('company_id > 1');
  112.  
  113.         $this->assertEquals(array(5), $user->getCol('company_id')); // first test
  114.  
  115.         $user->reset();
  116.  
  117.         $user->setGroup('company_id,address_id');
  118.         $user->addHaving('COUNT(address_id) > 1'); // this is not correct but must also work.
  119.         $user->addHaving('company_id > 1');
  120.  
  121.         $this->assertEquals(array(5), $user->getCol('company_id')); // second test
  122.     }
  123.  
  124.     function test_getHaving()
  125.     {
  126.         $user = new tests_Common(TABLE_USER);
  127.  
  128.         $having_string = 'count(id) = 10';
  129.  
  130.         $user->setHaving($having_string);
  131.  
  132.         $this->assertEquals($having_string, $user->getHaving());
  133.     }
  134.  
  135. }
  136.  
  137. ?>
  138.