public function testCastingConditionsValues()
{
$query = new Query(array('schema' => new Schema(array('fields' => $this->_schema))));
$conditions = array('_id' => new MongoId("4c8f86167675abfabdbe0300"));
$result = $this->_db->conditions($conditions, $query);
$this->assertEqual($conditions, $result);
$conditions = array('_id' => "4c8f86167675abfabdbe0300");
$result = $this->_db->conditions($conditions, $query);
$this->assertEqual(array_keys($conditions), array_keys($result));
$this->assertInstanceOf('MongoId', $result['_id']);
$this->assertEqual($conditions['_id'], (string) $result['_id']);
$conditions = array('_id' => array("4c8f86167675abfabdbe0300", "4c8f86167675abfabdbf0300", "4c8f86167675abfabdc00300"));
$result = $this->_db->conditions($conditions, $query);
$this->assertCount(3, $result['_id']['$in']);
foreach (array(0, 1, 2) as $i) {
$this->assertInstanceOf('MongoId', $result['_id']['$in'][$i]);
}
$conditions = array('voters' => array('$all' => array("4c8f86167675abfabdbf0300", "4c8f86167675abfabdc00300")));
$result = $this->_db->conditions($conditions, $query);
$this->assertCount(2, $result['voters']['$all']);
$result = $result['voters']['$all'];
foreach (array(0, 1) as $i) {
$this->assertInstanceOf('MongoId', $result[$i]);
$this->assertEqual($conditions['voters']['$all'][$i], (string) $result[$i]);
}
$conditions = array('$or' => array(array('_id' => "4c8f86167675abfabdbf0300"), array('guid' => "4c8f86167675abfabdbf0300")));
$result = $this->_db->conditions($conditions, $query);
$this->assertEqual(array('$or'), array_keys($result));
$this->assertCount(2, $result['$or']);
foreach (array('_id', 'guid') as $i => $key) {
$this->assertInstanceOf('MongoId', $result['$or'][$i][$key]);
$this->assertEqual($conditions['$or'][$i][$key], (string) $result['$or'][$i][$key]);
}
}