public function testTypeCustom1()
{
$a = ['types' => [['date' => '2013-02-20', 'datetime' => '2013-02-20 20:00:12', 'time' => '12:00:50', 'b1' => 'Y', 'b2' => 'N', 'integer' => '2940', 'money' => '8.20', 'float' => '8.202343', 'rot13' => 'uryyb jbeyq']]];
$this->setDB($a);
$db = new Persistence_SQL($this->db->connection);
date_default_timezone_set('Asia/Seoul');
$m = new Model($db, ['table' => 'types']);
$m->addField('date', ['type' => 'date', 'dateTimeClass' => '\\atk4\\data\\tests\\MyDate']);
$m->addField('datetime', ['type' => 'datetime', 'dateTimeClass' => '\\atk4\\data\\tests\\MyDateTime']);
$m->addField('time', ['type' => 'time', 'dateTimeClass' => '\\atk4\\data\\tests\\MyTime']);
$m->addField('b1', ['type' => 'boolean', 'enum' => ['N', 'Y']]);
$m->addField('b2', ['type' => 'boolean', 'enum' => ['N', 'Y']]);
$m->addField('money', ['type' => 'money']);
$m->addField('float', ['type' => 'float']);
$m->addField('integer', ['type' => 'integer']);
$rot = function ($v) {
return str_rot13($v);
};
$m->addField('rot13', ['typecast' => [$rot, $rot]]);
$m->load(1);
$this->assertSame('hello world', $m['rot13']);
$this->assertSame('1', $m->id);
$this->assertSame('1', $m['id']);
$this->assertEquals('2013-02-21 05:00:12', (string) $m['datetime']);
$this->assertEquals('2013-02-20', (string) $m['date']);
$this->assertEquals('12:00:50', (string) $m['time']);
$this->assertEquals(true, $m['b1']);
$this->assertEquals(false, $m['b2']);
$m->duplicate()->save()->delete(1);
$a = ['types' => [2 => ['id' => '2', 'date' => '2013-02-20', 'datetime' => '2013-02-20 20:00:12', 'time' => '12:00:50', 'b1' => 'Y', 'b2' => 'N', 'integer' => '2940', 'money' => '8.20', 'float' => '8.202343', 'rot13' => 'uryyb jbeyq']]];
$this->assertEquals($a, $this->getDB());
}