better type info for Sybase ASE and better data type tests
[dbsrgits/DBIx-Class-Schema-Loader.git] / t / 15sybase_common.t
1 use strict;
2 use lib qw(t/lib);
3 use dbixcsl_common_tests;
4 use Test::More;
5 use Test::Exception;
6 use List::MoreUtils 'apply';
7
8 my $dsn      = $ENV{DBICTEST_SYBASE_DSN} || '';
9 my $user     = $ENV{DBICTEST_SYBASE_USER} || '';
10 my $password = $ENV{DBICTEST_SYBASE_PASS} || '';
11
12 my $tester = dbixcsl_common_tests->new(
13     vendor      => 'sybase',
14     auto_inc_pk => 'INTEGER IDENTITY NOT NULL PRIMARY KEY',
15     default_function     => 'getdate()',
16     default_function_def => 'AS getdate()',
17     dsn         => $dsn,
18     user        => $user,
19     password    => $password,
20 # Test data types, see http://ispirer.com/wiki/sqlways/sybase/data-types
21     data_types  => {
22         'integer identity' => { data_type => 'integer', is_auto_increment => 1 },
23         'AS getdate()'     => { data_type => undef, inflate_datetime => 1, default_value => \'getdate()' },
24         text     => { data_type => 'text' },
25         unitext  => { data_type => 'unitext' },
26         image    => { data_type => 'image' },
27         bigint   => { data_type => 'bigint' },
28         int      => { data_type => 'integer' },
29         integer  => { data_type => 'integer' },
30         smallint => { data_type => 'smallint' },
31         tinyint  => { data_type => 'tinyint' },
32         date     => { data_type => 'date' },
33         time     => { data_type => 'time' },
34         datetime => { data_type => 'datetime' },
35         smalldatetime  => { data_type => 'smalldatetime' },
36         money          => { data_type => 'money' },
37         smallmoney     => { data_type => 'smallmoney' },
38         timestamp      => { data_type => 'timestamp', inflate_datetime => 0 },
39         bit            => { data_type => 'bit' },
40         'char(2)'      => { data_type => 'char', size => 2 },
41         'nchar(2)'     => { data_type => 'nchar', size => 2 },
42         'unichar(2)'   => { data_type => 'unichar', size => 2 },
43         'varchar(2)'   => { data_type => 'varchar', size => 2 },
44         'nvarchar(2)'  => { data_type => 'nvarchar', size => 2 },
45         'univarchar(2)' => { data_type => 'univarchar', size => 2 },
46         'binary(2)'    => { data_type => 'binary', size => 2 },
47         'varbinary(2)' => { data_type => 'varbinary', size => 2 },
48         'double precision' => { data_type => 'double precision' },
49         real           => { data_type => 'real' },
50         float          => { data_type => 'double precision' },
51         'float(14)'    => { data_type => 'real' },
52         'float(15)'    => { data_type => 'real' },
53         'float(16)'    => { data_type => 'double precision' },
54         'float(48)'    => { data_type => 'double precision' },
55         'numeric(6,3)' => { data_type => 'numeric', size => [6,3] },
56         'decimal(6,3)' => { data_type => 'numeric', size => [6,3] },
57         numeric        => { data_type => 'numeric' },
58         decimal        => { data_type => 'numeric' },
59     },
60 );
61
62 if( !$dsn || !$user ) {
63     $tester->skip_tests('You need to set the DBICTEST_SYBASE_DSN, _USER, and _PASS environment variables');
64 }
65 else {
66     $tester->run_tests();
67 }