8
use GenTest::Generator::FromGrammar;
11
'1simplest' => '1 a A',
12
'2numbers' => '1 11 111',
13
'3single_char_quoted' => '`1` `A` `a`',
14
'4composite' => 'A 1A1 A1A a1a 1a1 `1A1` `A1A` `a1a` `1a1`',
15
'5identifiers' => 'a.a a.a.a A.A A.A.A',
18
use Test::More tests => 22;
20
foreach my $grammar_name (sort keys %grammars) {
22
# Test grammar before and after reconstruction
24
my $reconstructed_grammar_obj = GenTest::Grammar->new(
25
grammar_string => 'query: '.$grammars{$grammar_name}
28
my @grammar_variants = (
29
'query: '.$grammars{$grammar_name}, # Initial grammar
30
$reconstructed_grammar_obj->toString() # Reconstructed grammar
33
foreach my $grammar_id (0..1) {
34
my $generator = GenTest::Generator::FromGrammar->new(
35
grammar_string => $grammar_variants[$grammar_id]
37
my $output = $generator->next()->[0];
38
ok($grammars{$grammar_name} eq $output, $grammar_name.'-'.$grammar_id);
44
$generator_vars[0] = GenTest::Generator::FromGrammar->new(
45
grammar_string => 'query: _digit _varchar(1) _letter _varchar(255) _varchar'
48
$generator_vars[1] = GenTest::Generator::FromGrammar->new(
49
grammar_string => $generator_vars[0]->grammar()->toString()
52
foreach my $generator_id (0..1) {
53
my $output_vars = $generator_vars[$generator_id]->next()->[0];
54
my @output_vars = split(' ', $output_vars);
55
ok($output_vars[0] =~ m{[0-9]}, 'digit');
56
ok($output_vars[1] =~ m{[a-z]}, 'varchar1');
57
ok($output_vars[2] =~ m{[a-z]}, 'letter');
58
ok($output_vars[3] =~ m{[a-z]+}, 'varchar1');
59
ok($output_vars[4] =~ m{[a-z]+}, 'varchar2');
64
$generator_perl[0] = GenTest::Generator::FromGrammar->new(
65
grammar_string => 'query: {{ { $foo = 0; return $foo }} } A B C $foo'
68
$generator_perl[1] = GenTest::Generator::FromGrammar->new(
69
grammar_string => $generator_perl[0]->grammar()->toString()
72
foreach my $perl_id (0..1) {
73
my $output_perl = $generator_perl[$perl_id]->next()->[0];
74
ok($output_perl eq '0 A B C 0', '6perl'.$perl_id);