The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# vi:ft=

use strict;
use warnings;

use t::Cheater;

plan tests => 1 * blocks();
no_diff;

run_tests;

__DATA__

=== TEST 1: no goals
--- src
table users (
    id serial;
)
--- out



=== TEST 2: simple
--- src
table users (
    id serial;
)

5 users;
--- out
users
      id
      96371
      170828
      577303
      749901
      870465



=== TEST 3: simple asc
--- src
table users (
    id integer asc unique not null;
)

5 users;
--- out
users
   id
   -403629
   -329172
   77303
   249901
   370465



=== TEST 4: simple desc
--- src
table users (
    id integer desc unique not null;
)

5 users;
--- out
users
   id
   370465
   249901
   77303
   -329172
   -403629



=== TEST 5: integer and null
--- src
table users (
    id integer;
)

5 users;
--- out
users
      id
      249901
      NULL
      77303
      192194
      373904



=== TEST 6: integer w/o null
--- src
table users (
    id integer not null;
)

5 users;
--- out
users
      id
      -329172
      249901
      -403629
      370465
      77303



=== TEST 7: enum simple integers
--- src
table users (
    name integer {1, 3, 5, 7} not null;
)

8 users;
--- out
users
      name
      1
      5
      1
      7
      5
      7
      5
      3



=== TEST 8: enum simple nums
--- src
table users (
    name integer {-3.1,-1,1.5,3} not null;
)

8 users;
--- out
users
      name
      -3
      1
      -3
      3
      1
      3
      1
      -1



=== TEST 9: enum (mixture)
--- src
table users (
    name integer {18, -9.1, /[a-c]{3}/, 1..2} not null;
)

8 users;
--- err
table users, column name: "bcc" does not look like a number.



=== TEST 10: enum unique
--- src
table users (
    name integer {'abc','bcd','c','d'} not null;
)

4 users;
--- err
table users, column name: "abc" does not look like a number.



=== TEST 11: regex
--- src
table users (
    name integer /\d{2}/ not null unique;
)

4 users;
--- out
users
      name
      85
      87
      23
      70



=== TEST 12: empty domain enum
--- src
table users (
    name integer {} unique;
)

4 users;
--- out
users
      name
      NULL
      NULL
      NULL
      NULL



=== TEST 13: int range
--- src
table users (
    name integer 1..3 unique;
)

4 users;
--- out
users
      name
      1
      3
      2
      NULL



=== TEST 14: real range
--- src
table users (
    name integer 1.0..3.0 unique;
)

4 users;
--- out
users
      name
      1
      2
      NULL
      NULL



=== TEST 15: int range (negative numbers)
--- src
table users (
    name integer -3..-1 unique;
)

4 users;
--- out
users
      name
      -3
      -1
      -2
      NULL



=== TEST 16: real range (negative numbers)
--- src
table users (
    name integer -2.0..-1.5 unique;
)

4 users;
--- out
users
      name
      -1
      NULL
      NULL
      NULL