e6be8e79f420402542a70b32119342dbca24a95a
[migration-tools.git] / Equinox-Migration / t / 01-SimpleTagList.t
1 #!perl -T
2
3 #use Test::More tests => 34;
4 use Test::More qw(no_plan);
5
6 use Equinox::Migration::SimpleTagList;
7
8 # baseline object creation
9 eval { my $stl = Equinox::Migration::SimpleTagList->new( file => "thefileisalie.txt" ) };
10 is ($@ =~ /^Can't open tags file:/, 1, 'cannot open that');
11
12 my $stl = Equinox::Migration::SimpleTagList->new();
13 is(ref $stl, "Equinox::Migration::SimpleTagList", "self is self");
14
15 # manual adds and removes
16 $stl->add_tag(89);
17 is ($stl->has(89), 1, 'can has tag');
18 is ($stl->has(904), 0, 'can not has tag');
19 $stl->add_tag(904);
20 is ($stl->has(904), 1, 'can has tag');
21 $stl->remove_tag(904);
22 is ($stl->has(904), 0, 'can not has tag');
23
24 eval { $stl->add_tag('q') };
25 is ($@, "Values must be numeric\n");
26 eval { $stl->add_tag(-37) };
27 is ($@, "Values must be valid tags (0-999)\n");
28 eval { $stl->add_tag(1027) };
29 is ($@, "Values must be valid tags (0-999)\n");
30
31 # range addition, as_hashref, as_listref
32 $stl->add_range("198..201");
33 is_deeply ($stl->as_hashref, { 89 => 1, 198 => 1, 199 => 1, 200 => 1, 201 => 1 });
34 is_deeply ($stl->as_listref, [ 89, 198, 199, 200, 201 ]);
35 $stl->add_range("008..011");
36 is_deeply ($stl->as_listref, [ 8, 9, 10, 11, 89, 198, 199, 200, 201 ]);
37
38 $stl->{conf}{except} = 1;
39 eval { $stl->add_range("300..311") };
40 is ($@, "Exception ranges must be within last addition range (300..311)\n");
41 eval { $stl->add_range("10..311") };
42 is ($@, "Exception ranges must be within last addition range (10..311)\n");
43 eval { $stl->add_range("6..11") };
44 is ($@, "Exception ranges must be within last addition range (6..11)\n");
45
46
47
48 # creation with file
49 $stl = Equinox::Migration::SimpleTagList->new( file => "./t/corpus/stl-0.txt");
50 is ($stl->has(11), 1);
51 is ($stl->has('011'), 1);
52 is ($stl->has(12), 1);
53 is ($stl->has('012'), 1);
54 is ($stl->has(241), 1);
55 is ($stl->has(359), 1);
56 is ($stl->has(652), 1);
57 is ($stl->has(654), 1);
58 is ($stl->has(656), 1);
59 is ($stl->has(658), 1);
60 is ($stl->has(872), 1);
61 is ($stl->has(900), 1);
62 is ($stl->has(999), 1);
63 is ($stl->has(988), 1);
64 is ($stl->has(655), 0, 'exception');
65 is ($stl->has(987), 0, 'exception');
66 is ($stl->has(400), 0, 'not in input set');
67
68 $stl = Equinox::Migration::SimpleTagList->new( file => "./t/corpus/stl-1.txt");
69 is ($stl->has(258), 1);
70 is ($stl->has(259), 0, 'exception');
71 is ($stl->has(274), 1);
72 is ($stl->has(275), 0, 'exception');
73 is ($stl->has(286), 1);
74 is ($stl->has(285), 0, 'exception');
75 is ($stl->has(305), 1);
76 is ($stl->has(304), 0, 'exception');