public function testINClause()
{
list($flowers, $shop) = R::dispenseAll('flower*4,shop');
$flowers[0]->color = 'red';
$flowers[1]->color = 'yellow';
$flowers[2]->color = 'blue';
$flowers[3]->color = 'purple';
$flowers[0]->price = 10;
$flowers[1]->price = 15;
$flowers[2]->price = 20;
$flowers[3]->price = 25;
$shop->xownFlowerList = $flowers;
R::store($shop);
$colors = array('red', 'yellow');
$result = $this->getColors(R::find('flower', ' color IN (' . R::genSlots($colors) . ' ) AND price < ?', R::flat(array($colors, 100))));
asrt($result, 'red,yellow');
$colors = array('red', 'yellow');
$result = $this->getColors(R::find('flower', ' color IN (' . R::genSlots($colors) . ' ) AND price < ?', R::flat(array($colors, 10))));
asrt($result, '');
$colors = array('red', 'yellow');
$result = $this->getColors(R::find('flower', ' color IN (' . R::genSlots($colors) . ' ) AND price < ?', R::flat(array($colors, 15))));
asrt($result, 'red');
asrt(json_encode(R::flat(array('a', 'b', 'c'))), '["a","b","c"]');
asrt(json_encode(R::flat(array('a', array('b'), 'c'))), '["a","b","c"]');
asrt(json_encode(R::flat(array('a', array('b', array('c'))))), '["a","b","c"]');
asrt(json_encode(R::flat(array(array('a', array('b', array(array('c'))))))), '["a","b","c"]');
asrt(json_encode(R::flat(array('a', 'b', 'c', array()))), '["a","b","c"]');
asrt(genslots(array(1, 2)), '?,?');
asrt(json_encode(array_flatten(array(array('a', array('b', array(array('c'))))))), '["a","b","c"]');
asrt(genslots(array(1, 2), 'IN (%s) AND'), 'IN (?,?) AND');
asrt(genslots(array(), ' IN (%s) AND '), '');
$colors = array('blue', 'purple', 'red');
$flowers = R::find('flower', genslots($colors, ' color IN (%s) AND ') . ' price > ? ', array_flatten(array($colors, 11)));
asrt($this->getColors($flowers), 'blue,purple');
$flowers = R::find('flower', genslots(array(), ' color IN (%s) AND ') . ' price > ? ', array_flatten(array(array(), 11)));
asrt($this->getColors($flowers), 'blue,purple,yellow');
$flowers = R::find('flower', ' id > 0 AND ' . genslots($colors, ' color IN (%s) AND ') . ' price > ? ', array_flatten(array($colors, 11)));
asrt($this->getColors($flowers), 'blue,purple');
$flowers = R::find('flower', ' id > 0 AND ' . genslots(array(), ' color IN (%s) AND ') . ' price > ? ', array_flatten(array(array(), 11)));
asrt($this->getColors($flowers), 'blue,purple,yellow');
}