automatically turn on quoting for MySQL (RT#60469)
[dbsrgits/DBIx-Class-Schema-Loader.git] / t / 10_11msaccess_common.t
CommitLineData
3b17d988 1use strict;
2use warnings;
3use Test::More;
4use lib qw(t/lib);
5use dbixcsl_common_tests;
6
7my $odbc_dsn = $ENV{DBICTEST_MSACCESS_ODBC_DSN} || '';
8my $odbc_user = $ENV{DBICTEST_MSACCESS_ODBC_USER} || '';
9my $odbc_password = $ENV{DBICTEST_MSACCESS_ODBC_PASS} || '';
10
11my $ado_dsn = $ENV{DBICTEST_MSACCESS_ADO_DSN} || '';
12my $ado_user = $ENV{DBICTEST_MSACCESS_ADO_USER} || '';
13my $ado_password = $ENV{DBICTEST_MSACCESS_ADO_PASS} || '';
14
15my %ado_extra_types = (
16 'tinyint' => { data_type => 'tinyint', original => { data_type => 'byte' } },
17 'smallmoney' => { data_type => 'money', original => { data_type => 'currency' } },
18 'decimal' => { data_type => 'decimal' },
19 'decimal(3)' => { data_type => 'decimal', size => [3, 0] },
20 'decimal(3,3)'=> { data_type => 'decimal', size => [3, 3] },
21 'dec(5,5)' => { data_type => 'decimal', size => [5, 5] },
22 'numeric(2,2)'=> { data_type => 'decimal', size => [2, 2] },
23 'character' => { data_type => 'char', size => 255 },
24 'character varying(5)' => { data_type => 'varchar', size => 5 },
25 'nchar(5)' => { data_type => 'char', size => 5 },
26 'national character(5)' => { data_type => 'char', size => 5 },
27 'nvarchar(5)' => { data_type => 'varchar', size => 5 },
28 'national character varying(5)' => { data_type => 'varchar', size => 5 },
29 'national char varying(5)' => { data_type => 'varchar', size => 5 },
30 'smalldatetime' => { data_type => 'datetime' },
31 'uniqueidentifier' => { data_type => 'uniqueidentifier', original => { data_type => 'guid' } },
32 'text' => { data_type => 'text', original => { data_type => 'longchar' } },
33 'ntext' => { data_type => 'text', original => { data_type => 'longchar' } },
34);
35
36my $tester = dbixcsl_common_tests->new(
37 vendor => 'Access',
38 auto_inc_pk => 'AUTOINCREMENT PRIMARY KEY',
39 quote_char => [qw/[ ]/],
40 connect_info => [ ($odbc_dsn ? {
41 dsn => $odbc_dsn,
42 user => $odbc_user,
43 password => $odbc_password,
44 } : ()),
45 ($ado_dsn ? {
46 dsn => $ado_dsn,
47 user => $ado_user,
48 password => $ado_password,
49 } : ()),
50 ],
51 data_types => {
52 # http://msdn.microsoft.com/en-us/library/bb208866(v=office.12).aspx
53 #
54 # Numeric types
55 'autoincrement'=>{ data_type => 'integer', is_auto_increment => 1 },
56 'int' => { data_type => 'integer' },
57 'integer' => { data_type => 'integer' },
58 'long' => { data_type => 'integer' },
59 'integer4' => { data_type => 'integer' },
60 'smallint' => { data_type => 'smallint' },
61 'short' => { data_type => 'smallint' },
62 'integer2' => { data_type => 'smallint' },
63 'integer1' => { data_type => 'tinyint', original => { data_type => 'byte' } },
64 'byte' => { data_type => 'tinyint', original => { data_type => 'byte' } },
65 'bit' => { data_type => 'bit' },
66 'logical' => { data_type => 'bit' },
67 'logical1' => { data_type => 'bit' },
68 'yesno' => { data_type => 'bit' },
69 'money' => { data_type => 'money', original => { data_type => 'currency' } },
70 'currency' => { data_type => 'money', original => { data_type => 'currency' } },
71 'real' => { data_type => 'real' },
72 'single' => { data_type => 'real' },
73 'ieeesingle' => { data_type => 'real' },
74 'float4' => { data_type => 'real' },
75 'float' => { data_type => 'double precision', original => { data_type => 'double' } },
76 'float' => { data_type => 'double precision', original => { data_type => 'double' } },
77 'float8' => { data_type => 'double precision', original => { data_type => 'double' } },
78 'double' => { data_type => 'double precision', original => { data_type => 'double' } },
79 'ieeedouble' => { data_type => 'double precision', original => { data_type => 'double' } },
80 'number' => { data_type => 'double precision', original => { data_type => 'double' } },
81
82# # character types
83 'text(25)' => { data_type => 'varchar', size => 25 },
84 'char' => { data_type => 'char', size => 255 },
85 'char(5)' => { data_type => 'char', size => 5 },
86 'string(5)' => { data_type => 'varchar', size => 5 },
87 'varchar(5)' => { data_type => 'varchar', size => 5 },
88
89 # binary types
90 'binary(10)' => { data_type => 'binary', size => 10 },
91 'varbinary(11)' => { data_type => 'varbinary', size => 11 },
92
93 # datetime types
94 'datetime' => { data_type => 'datetime' },
95 'time' => { data_type => 'datetime' },
96 'timestamp' => { data_type => 'datetime' },
97
98 # misc types
99 'guid' => { data_type => 'uniqueidentifier', original => { data_type => 'guid' } },
100
101 # blob types
102 'longchar' => { data_type => 'text', original => { data_type => 'longchar' } },
103 'longtext' => { data_type => 'text', original => { data_type => 'longchar' } },
104 'memo' => { data_type => 'text', original => { data_type => 'longchar' } },
105 'image' => { data_type => 'image', original => { data_type => 'longbinary' } },
106 'longbinary' => { data_type => 'image', original => { data_type => 'longbinary' } },
107
108 ($ado_dsn && (not $odbc_dsn) ? %ado_extra_types : ())
109 },
110);
111
112if (not ($odbc_dsn || $ado_dsn)) {
113 $tester->skip_tests('You need to set the DBICTEST_MSACCESS_ODBC_DSN, and optionally _USER and _PASS and/or the DBICTEST_MSACCESS_ADO_DSN, and optionally _USER and _PASS environment variables');
114}
115else {
116 $tester->run_tests();
117}
118
119# vim:et sts=4 sw=4 tw=0: