The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
#!perl -T

use 5.006;
use strict;
use warnings;
use warnings FATAL => 'all';
use Data::Dumper;
use lib 'lib';

use Test::More;

plan tests => 3;

use Parse::Gnaw;

our $rule2; $rule2=[];

rule('rule1', 
	'a', 
	thrifty('c',{min=>3,max=>5}),
	'b');



{


# print out contents for debug purposes.
print Dumper $rulebook;


# all we're verifying is that "rule" creates arrays of the correct name and size.
# note that first index is the name of the rule.
ok(scalar(@$rule1)==3, "check rule1 is size 3");

ok(scalar(@$rule1_rulefragment_1)==2, "check rule1_rulefragment_1 is size 2");

ok(scalar(@$thrifty_1)==2, "check thrifty_1 is size 2");




}

__DATA__

$VAR1 = {
          'rule1_rulefragment_1' => [
                                      [
                                        'rule',
                                        'rule1_rulefragment_1',
                                        {
                                          'methodname' => 'rule',
                                          'filename' => 't/gnaw_rule_fragments.t',
                                          'payload' => 'rule1_rulefragment_1',
                                          'linenum' => 18,
                                          'quantifier' => '',
                                          'package' => 'main'
                                        }
                                      ],
                                      [
                                        'lit',
                                        'b',
                                        {
                                          'methodname' => 'lit',
                                          'filename' => 't/gnaw_rule_fragments.t',
                                          'payload' => 'b',
                                          'linenum' => 18,
                                          'package' => 'main'
                                        }
                                      ]
                                    ],
          'rule1' => [
                       [
                         'rule',
                         'rule1',
                         {
                           'methodname' => 'rule',
                           'filename' => 't/gnaw_rule_fragments.t',
                           'linenum' => 18,
                           'payload' => 'rule1',
                           'quantifier' => '',
                           'package' => 'main'
                         }
                       ],
                       [
                         'lit',
                         'a',
                         {
                           'methodname' => 'lit',
                           'filename' => 't/gnaw_rule_fragments.t',
                           'linenum' => 18,
                           'payload' => 'a',
                           'package' => 'main'
                         }
                       ],
                       [
                         'call',
                         'thrifty_1',
                         {
                           'min' => 3,
                           'max' => 5,
                           'then_call' => 'rule1_rulefragment_1',
                           'package' => 'main',
                           'methodname' => 'rule',
                           'filename' => 't/gnaw_rule_fragments.t',
                           'payload' => 'thrifty_1',
                           'linenum' => 18,
                           'quantifier' => 'thrifty'
                         }
                       ]
                     ],
          'thrifty_1' => [
                           [
                             'rule',
                             'thrifty_1',
                             {
                               'min' => 3,
                               'max' => 5,
                               'package' => 'main',
                               'methodname' => 'rule',
                               'filename' => 't/gnaw_rule_fragments.t',
                               'linenum' => 18,
                               'payload' => 'thrifty_1',
                               'quantifier' => 'thrifty'
                             }
                           ],
                           [
                             'lit',
                             'c',
                             {
                               'methodname' => 'lit',
                               'filename' => 't/gnaw_rule_fragments.t',
                               'linenum' => 18,
                               'payload' => 'c',
                               'package' => 'main'
                             }
                           ]
                         ]
        };