public function testSetSlice()
{
$data = array('key1' => 'val1', 'key2' => 'val2', 'key3' => 'val3');
list($kept, $removed) = Set::slice($data, array('key3'));
$this->assertEqual(array('key3' => 'val3'), $removed);
$this->assertEqual(array('key1' => 'val1', 'key2' => 'val2'), $kept);
$data = array('key1' => 'val1', 'key2' => 'val2', 'key3' => 'val3');
list($kept, $removed) = Set::slice($data, array('key1', 'key3'));
$this->assertEqual(array('key1' => 'val1', 'key3' => 'val3'), $removed);
$this->assertEqual(array('key2' => 'val2'), $kept);
$data = array('key1' => 'val1', 'key2' => 'val2', 'key3' => 'val3');
list($kept, $removed) = Set::slice($data, 'key2');
$this->assertEqual(array('key2' => 'val2'), $removed);
$this->assertEqual(array('key1' => 'val1', 'key3' => 'val3'), $kept);
$data = array('key1' => 'val1', 'key2' => 'val2', 'key3' => array('foo' => 'bar'));
list($kept, $removed) = Set::slice($data, array('key1', 'key3'));
$this->assertEqual(array('key1' => 'val1', 'key3' => array('foo' => 'bar')), $removed);
$this->assertEqual(array('key2' => 'val2'), $kept);
}