function testUseDifferentCacheEngine()
{
$this->skipIf(!class_exists('Memcache'), 'Memcache is not installed, skipping test');
Cache::config('cacherMemcache', array('duration' => '+1 days', 'engine' => 'Memcache', 'prefix' => Inflector::slug(APP_DIR) . '_cacher_test_'));
$this->CacheData->Behaviors->attach('Cacher.Cache', array('config' => 'cacherMemcache', 'clearOnDelete' => false));
$results = $this->CacheData->find('all', array('conditions' => array('CacheData.name LIKE' => '%cache%')));
$results = Set::extract('/CacheData/name', $results);
$expected = array('A Cached Thing', 'Cache behavior');
$this->assertEquals($results, $expected);
// test that it's pulling from the cache
$this->CacheData->delete(1);
$results = $this->CacheData->find('all', array('conditions' => array('CacheData.name LIKE' => '%cache%')));
$results = Set::extract('/CacheData/name', $results);
$expected = array('A Cached Thing', 'Cache behavior');
$this->assertEquals($results, $expected);
$ds = ConnectionManager::getDataSource('cacher');
$this->assertEquals($ds->config['config'], 'cacherMemcache');
$map = Cache::read('map', 'cacherMemcache');
$this->assertTrue($map !== false);
$this->assertTrue(isset($map[$ds->source->configKeyName][$this->CacheData->alias][0]));
$cache = Cache::read($map[$ds->source->configKeyName][$this->CacheData->alias][0], 'cacherMemcache');
$this->assertTrue($cache !== false);
$this->CacheData->clearCache();
$map = Cache::read('map', 'cacherMemcache');
$this->assertTrue(empty($map[$ds->source->configKeyName][$this->CacheData->alias]));
Cache::drop('cacherMemcache');
}