File: 02.syntax.t

package info (click to toggle)
libsql-abstract-limit-perl 2%3A0.14.2-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 152 kB
  • sloc: perl: 531; makefile: 2
file content (83 lines) | stat: -rw-r--r-- 2,238 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#!/usr/bin/perl

use strict;
use warnings;

use Test::More tests => 7;
use Test::Exception;

use SQL::Abstract::Limit;
use Cwd;

SKIP: {
    eval { require DBD::AnyData; require Class::DBI; };

    skip( "need DBD::AnyData and Class::DBI to test syntax auto-detection", 7 ) if $@;

=for notes

    LimitOffset     PostgreSQL, MySQL (recent), SQLite
    LimitXY         MySQL (older)
    LimitYX         SQLite (optional)
    RowsTo          InterBase/FireBird

    Top             SQL/Server, MS Access
    RowNum          Oracle
    FetchFirst      DB2         # not implemented yet
    Skip            Informix    
    GenericSubQ     Sybase, plus any databases not recognised by this module

    $dbh            a DBI database handle

    CDBI subclass
    CDBI object


    %SQL::Abstract::Limit::Syntax = ( mssql    => 'Top',
                                      access   => 'Top',
                                      sybase   => 'GenericSubQ',
                                      oracle   => 'RowNum',
                                      ...

=cut

my $cwd = getcwd;

{
    package TestApp;
    #use base 'Class::DBI'; # don't attempt to load if not installed
    our @ISA = ('Class::DBI');
    my $dsn = 'dbi:AnyData(RaiseError=>1):';

    __PACKAGE__->set_db( 'Main', $dsn, '', '' );

    __PACKAGE__->db_Main->func( 'county', 'CSV', "$cwd/t/test_data.csv", 'ad_catalog');

    __PACKAGE__->table( 'county' );

    __PACKAGE__->columns( All => qw/ code county / );
}

my $sql_ab = SQL::Abstract::Limit->new;

my $inv = TestApp->retrieve( 'INV' );

like( $inv->county, qr(^Inverness), 'retrieved record' );

my ( $syntax, $db );

lives_ok { $syntax = $sql_ab->_find_syntax( 'TestApp' ) } '_find_syntax CDBI class';
like( $syntax, qr(^LimitXY$), 'CSV syntax from CDBI class' );

lives_ok { $syntax = $sql_ab->_find_syntax( $inv ) } '_find_syntax CDBI object';
like( $syntax, qr(^LimitXY$), 'CSV syntax from CDBI object' );

my ( $dbh ) = TestApp->db_handles;
$dbh || die 'no dbh';
lives_ok { $syntax = $sql_ab->_find_syntax( $dbh ) } '_find_syntax $dbh';
like( $syntax, qr(^LimitXY$), 'CSV syntax from $dbh' );


# warn "syntax: $syntax";

}