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
|
use strict;
use warnings;
use Test::More;
use SQL::Tokenizer;
use constant SPACE => ' ';
use constant COMMA => ',';
use constant NL => "\n";
my $query;
my @query;
my @tokenized;
my @tests = (
{
description => q{Shell style comments},
query => <<SQL,
DROP TABLE test; # drop table
CREATE TABLE test (id INT, name VARCHAR); ### create table
# insert data
INSERT INTO test (id, name) VALUES (1, 't');
INSERT INTO test (id, name) VALUES (2, '''quoted''');
SQL
wanted => [
'DROP', SPACE, 'TABLE', SPACE,
'test', ';', SPACE, q{# drop table},
NL, 'CREATE', SPACE, 'TABLE',
SPACE, 'test', SPACE, '(',
'id', SPACE, 'INT', COMMA,
SPACE, 'name', SPACE, 'VARCHAR',
')', ';', SPACE, q{### create table},
NL, q{# insert data}, NL, 'INSERT',
SPACE, 'INTO', SPACE, 'test',
SPACE, '(', 'id', COMMA,
SPACE, 'name', ')', SPACE,
'VALUES', SPACE, '(', '1',
COMMA, SPACE, q{'t'}, ')',
';', NL, 'INSERT', SPACE,
'INTO', SPACE, 'test', SPACE,
'(', 'id', COMMA, SPACE,
'name', ')', SPACE, 'VALUES',
SPACE, '(', '2', COMMA,
SPACE, q{'''quoted'''}, ')', ';',
NL,
],
},
);
plan tests => scalar @tests;
foreach my $test (@tests) {
my @tokenized = SQL::Tokenizer->tokenize( $test->{query} );
is_deeply( \@tokenized, $test->{wanted}, $test->{description} );
}
|