function test_search()
 {
     $table = '/test';
     $query_string = '{test=123}';
     // $criteria = Array('test'=>'123');
     $criteria = new QueryCriteria(array(QueryCriterionFactory::create(array('name' => 'test', 'value' => '123'))));
     $expected_results = array('data' => array(array('url' => '/test/123')), 'offset' => 0, 'count' => 1, 'total' => 1);
     $ds = new MockDataSource();
     // search will populate cache
     $this->cache->size = 20;
     $ds->expect('search', array($table, $query_string, 0, 20));
     $ds->setReturnValue('search', $expected_results);
     $results = $this->cache->search($ds, $table, $query_string, 0, 10, $criteria);
     $this->assertEqual($results, $expected_results);
     $this->assertEqual($this->cache->results, $expected_results);
     $this->assertEqual($this->cache->criteria, $criteria);
     // disable cache
     $this->cache->size = 0;
     $ds->expect('search', array($table, $query_string, 0, 10));
     $ds->setReturnValue('search', $expected_results);
     $results = $this->cache->search($ds, $table, $query_string, 0, 10, $criteria);
     $this->assertEqual($results, $expected_results);
 }