Introduce GOVERNANCE document and empty RESOLUTIONS file.
[dbsrgits/DBIx-Class.git] / t / icdt / engine_specific / informix.t
CommitLineData
c0329273 1BEGIN { do "./t/lib/ANFANG.pm" or die ( $@ || $! ) }
54a9a088 2use DBIx::Class::Optional::Dependencies -skip_all_without => qw( ic_dt test_rdbms_informix );
cb551b07 3
b0a4cf8e 4use strict;
68de9438 5use warnings;
b0a4cf8e 6
7use Test::More;
bbf6a9a5 8use DBIx::Class::_Util 'scope_guard';
c0329273 9
b0a4cf8e 10use DBICTest;
b0a4cf8e 11
12my ($dsn, $user, $pass) = @ENV{map { "DBICTEST_INFORMIX_${_}" } qw/DSN USER PASS/};
b0a4cf8e 13my $schema;
14
15{
16 $schema = DBICTest::Schema->connect($dsn, $user, $pass, {
17 on_connect_call => [ 'datetime_setup' ],
18 });
19
bbf6a9a5 20 my $sg = scope_guard { cleanup($schema) };
b0a4cf8e 21
22 eval { $schema->storage->dbh->do('DROP TABLE event') };
23 $schema->storage->dbh->do(<<'SQL');
24 CREATE TABLE event (
25 id INT PRIMARY KEY,
26 starts_at DATE,
27 created_on DATETIME YEAR TO FRACTION(5)
28 );
29SQL
30 my $rs = $schema->resultset('Event');
31
32 my $dt = DateTime->now;
33 $dt->set_nanosecond(555640000);
34
35 my $date_only = DateTime->new(
36 year => $dt->year, month => $dt->month, day => $dt->day
37 );
38
39 my $row;
40 ok( $row = $rs->create({
41 id => 1,
8273e845 42 starts_at => $date_only,
b0a4cf8e 43 created_on => $dt,
44 }));
45 ok( $row = $rs->search({ id => 1 }, { select => [qw/starts_at created_on/] })
46 ->first
47 );
48 is $row->created_on, $dt, 'TIMESTAMP as DateTime roundtrip';
49
50 cmp_ok $row->created_on->nanosecond, '==', $dt->nanosecond,
51 'fractional part of a second survived';
52
53 is $row->starts_at, $date_only, 'DATE as DateTime roundtrip';
54}
55
56done_testing;
57
58# clean up our mess
59sub cleanup {
65d35121 60 my $schema = shift;
8273e845 61 my $dbh;
b0a4cf8e 62 eval {
63 $dbh = $schema->storage->dbh;
64 };
65 return unless $dbh;
66
67 eval { $dbh->do(qq{DROP TABLE $_}) } for qw/event/;
68}