File: 09-shell-style-comments.t

package info (click to toggle)
libsql-tokenizer-perl 0.24-8
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, sid, trixie
  • size: 176 kB
  • sloc: perl: 103; makefile: 2
file content (57 lines) | stat: -rw-r--r-- 1,872 bytes parent folder | download | duplicates (2)
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} );
}