1# -*- perl -*-
2
3use strict;
4use Set::IntSpan 1.17;
5
6my $N = 1;
7sub Not { print "not " }
8sub OK  { print "ok ", $N++, "\n" }
9
10sub Table { map { [ split(' ', $_) ] } split(/\s*\n\s*/, shift) }
11
12my @Errors = Table <<TABLE;
131.2     syntax
141-2-3   syntax
151,,2    syntax
16--      syntax
17abc     syntax
182,1     order
192-1     order
203-4,1-2 order
213,(-2   order
222-),3   order
23(-),1   order
24TABLE
25
26
27print "1..", 2 * @Errors, "\n";
28Errors();
29
30
31sub Errors
32{
33    print "#errors\n";
34    my($error, $message);
35
36    for $error (@Errors)
37    {
38	my($run_list, $expected) = @$error;
39
40	eval { new Set::IntSpan $run_list };
41	printf "#%-20s %-12s -> %s", "new Set::Intspan", $run_list, $@;
42	$@ =~ /$expected/ or Not; OK;
43
44	my $valid = valid Set::IntSpan $run_list;
45	printf "#%-20s %-12s -> %s", "valid Set::Intspan", $run_list, $@;
46	($valid or $@ !~ /$expected/) and Not; OK;
47    }
48}
49
50
51
52