View | Details | Raw Unified | Return to bug 37796
Collapse All | Expand All

(-)a/t/Serials/GetNextSeq.t (-229 / +258 lines)
Lines 1-259 Link Here
1
#!/usr/bin/perl
1
#!/usr/bin/perl
2
2
3
use Modern::Perl;
3
use Modern::Perl;
4
use Test::More tests => 46;
4
use Test::More tests => 7;
5
use C4::Serials qw( GetNextSeq );
5
use C4::Serials qw( GetNextSeq );
6
6
7
# TEST CASE 1 - 1 variable, from 1 to 4
7
subtest "TEST CASE 1 - 1 variable, from 1 to 4" => sub {
8
my $subscription = {
8
    plan tests => 5;
9
    lastvalue1 => 1, lastvalue2 => 1, lastvalue3 => 1,
10
    innerloop1 => 0, innerloop2 => 0, innerloop3 => 0,
11
    skip_serialseq => 0,
12
    irregularity => '',
13
    locale => 'en',
14
};
15
my $pattern = {
16
             add1 =>  1,          add2 =>  0,          add3 =>  0,
17
           every1 =>  1,        every2 =>  0,        every3 =>  0,
18
    whenmorethan1 =>  4, whenmorethan2 =>  0, whenmorethan3 =>  0,
19
           setto1 =>  1,        setto2 =>  0,        setto3 =>  0,
20
    numberingmethod => 'X: {X}',
21
    numbering1 => '',
22
    numbering2 => '',
23
    numbering3 => '',
24
};
25
9
26
my $seq = _next_seq($subscription, $pattern);
10
    my $subscription = {
27
is($seq, 'X: 2');
11
        lastvalue1     => 1, lastvalue2 => 1, lastvalue3 => 1,
28
$seq = _next_seq($subscription, $pattern);
12
        innerloop1     => 0, innerloop2 => 0, innerloop3 => 0,
29
is($seq, 'X: 3');
13
        skip_serialseq => 0,
30
$seq = _next_seq($subscription, $pattern);
14
        irregularity   => '',
31
is($seq, 'X: 4');
15
        locale         => 'en',
32
$seq = _next_seq($subscription, $pattern);
16
    };
33
is($seq, 'X: 1');
17
    my $pattern = {
34
$seq = _next_seq($subscription, $pattern);
18
        add1            => 1, add2          => 0, add3          => 0,
35
is($seq, 'X: 2');
19
        every1          => 1, every2        => 0, every3        => 0,
20
        whenmorethan1   => 4, whenmorethan2 => 0, whenmorethan3 => 0,
21
        setto1          => 1, setto2        => 0, setto3        => 0,
22
        numberingmethod => 'X: {X}',
23
        numbering1      => '',
24
        numbering2      => '',
25
        numbering3      => '',
26
    };
27
28
    my $seq = _next_seq( $subscription, $pattern );
29
    is( $seq, 'X: 2', "X is increased for next issue" );
30
    $seq = _next_seq( $subscription, $pattern );
31
    is( $seq, 'X: 3', "X is increased again" );
32
    $seq = _next_seq( $subscription, $pattern );
33
    is( $seq, 'X: 4', "X is increased again" );
34
    $seq = _next_seq( $subscription, $pattern );
35
    is( $seq, 'X: 1', "X reset when crossing the 'whenmorethan' threshold" );
36
    $seq = _next_seq( $subscription, $pattern );
37
    is( $seq, 'X: 2', "X continues to increase correctly after reset" );
36
38
37
# TEST CASE 2 - 1 variable, use 'dayname' numbering, from 1 to 7
38
$subscription = {
39
    lastvalue1 => 1, lastvalue2 => 1, lastvalue3 => 1,
40
    innerloop1 => 0, innerloop2 => 0, innerloop3 => 0,
41
    skip_serialseq => 0,
42
    irregularity => '',
43
    locale => 'C',
44
};
45
$pattern = {
46
             add1 =>  1,          add2 =>  1,          add3 =>  0,
47
           every1 =>  1,        every2 =>  1,        every3 =>  0,
48
    whenmorethan1 =>  7, whenmorethan2 =>  7, whenmorethan3 =>  0,
49
           setto1 =>  1,        setto2 =>  1,        setto3 =>  0,
50
    numberingmethod => 'dayname: {X} | dayabrv: {Y}',
51
    numbering1 => 'dayname',
52
    numbering2 => 'dayabrv',
53
    numbering3 => '',
54
};
39
};
55
40
56
$seq = _next_seq($subscription, $pattern);
41
subtest "TEST CASE 2 - 1 variable, use 'dayname' numbering, from 1 to 7" => sub {
57
is($seq, 'dayname: Tuesday | dayabrv: Tue');
42
    plan tests => 7;
58
$seq = _next_seq($subscription, $pattern);
43
    my $subscription = {
59
is($seq, 'dayname: Wednesday | dayabrv: Wed');
44
        lastvalue1     => 1, lastvalue2 => 1, lastvalue3 => 1,
60
$seq = _next_seq($subscription, $pattern);
45
        innerloop1     => 0, innerloop2 => 0, innerloop3 => 0,
61
is($seq, 'dayname: Thursday | dayabrv: Thu');
46
        skip_serialseq => 0,
62
$seq = _next_seq($subscription, $pattern);
47
        irregularity   => '',
63
is($seq, 'dayname: Friday | dayabrv: Fri');
48
        locale         => 'C',
64
$seq = _next_seq($subscription, $pattern);
49
    };
65
is($seq, 'dayname: Saturday | dayabrv: Sat');
50
    my $pattern = {
66
$seq = _next_seq($subscription, $pattern);
51
        add1            => 1, add2          => 1, add3          => 0,
67
is($seq, 'dayname: Sunday | dayabrv: Sun');
52
        every1          => 1, every2        => 1, every3        => 0,
68
$seq = _next_seq($subscription, $pattern);
53
        whenmorethan1   => 7, whenmorethan2 => 7, whenmorethan3 => 0,
69
is($seq, 'dayname: Monday | dayabrv: Mon');
54
        setto1          => 1, setto2        => 1, setto3        => 0,
55
        numberingmethod => 'dayname: {X} | dayabrv: {Y}',
56
        numbering1      => 'dayname',
57
        numbering2      => 'dayabrv',
58
        numbering3      => '',
59
    };
70
60
71
# TEST CASE 3 - 1 variable, use 'monthname' numbering, from 0 to 11 by step of 2
61
    my $seq = _next_seq( $subscription, $pattern );
72
$subscription = {
62
    is( $seq, 'dayname: Tuesday | dayabrv: Tue', "Day name is correctly generated for second day" );
73
    lastvalue1 => 0, lastvalue2 => 0, lastvalue3 => 0,
63
    $seq = _next_seq( $subscription, $pattern );
74
    innerloop1 => 0, innerloop2 => 0, innerloop3 => 0,
64
    is( $seq, 'dayname: Wednesday | dayabrv: Wed', "Day name is correctly generated for third day" );
75
    skip_serialseq => 0,
65
    $seq = _next_seq( $subscription, $pattern );
76
    irregularity => '',
66
    is( $seq, 'dayname: Thursday | dayabrv: Thu', "Day name is correctly generated for fourth day" );
77
    locale => 'C',  # locale set to 'C' to ensure we'll have english strings
67
    $seq = _next_seq( $subscription, $pattern );
78
};
68
    is( $seq, 'dayname: Friday | dayabrv: Fri', "Day name is correctly generated for fifth day" );
79
$pattern = {
69
    $seq = _next_seq( $subscription, $pattern );
80
             add1 =>  2,          add2 =>  2,           add3 =>  0,
70
    is( $seq, 'dayname: Saturday | dayabrv: Sat', "Day name is correctly generated for sixth day" );
81
           every1 =>  1,        every2 =>  1,         every3 =>  0,
71
    $seq = _next_seq( $subscription, $pattern );
82
    whenmorethan1 => 11, whenmorethan2 =>  11, whenmorethan3 =>  0,
72
    is( $seq, 'dayname: Sunday | dayabrv: Sun', "Day name is correctly generated for seventh day" );
83
           setto1 =>  0,        setto2 =>  0,         setto3 =>  0,
73
    $seq = _next_seq( $subscription, $pattern );
84
    numberingmethod => 'monthname: {X} | monthabrv: {Y}',
74
    is(
85
    numbering1 => 'monthname',
75
        $seq, 'dayname: Monday | dayabrv: Mon',
86
    numbering2 => 'monthabrv',
76
        "Day is correctly reset and name is correctly generated for first day"
87
    numbering3 => '',
77
    );
88
};
78
};
89
79
90
$seq = _next_seq($subscription, $pattern);
80
subtest "TEST CASE 3 - 1 variable, use 'monthname' numbering, from 0 to 11 by step of 2" => sub {
91
is($seq, 'monthname: March | monthabrv: Mar');
81
    plan tests => 7;
92
$seq = _next_seq($subscription, $pattern);
82
    my $subscription = {
93
is($seq, 'monthname: May | monthabrv: May');
83
        lastvalue1     => 0, lastvalue2 => 0, lastvalue3 => 0,
94
$seq = _next_seq($subscription, $pattern);
84
        innerloop1     => 0, innerloop2 => 0, innerloop3 => 0,
95
is($seq, 'monthname: July | monthabrv: Jul');
85
        skip_serialseq => 0,
96
$seq = _next_seq($subscription, $pattern);
86
        irregularity   => '',
97
is($seq, 'monthname: September | monthabrv: Sep');
87
        locale         => 'C',    # locale set to 'C' to ensure we'll have english strings
98
$seq = _next_seq($subscription, $pattern);
88
    };
99
is($seq, 'monthname: November | monthabrv: Nov');
89
    my $pattern = {
100
$seq = _next_seq($subscription, $pattern);
90
        add1            => 2,  add2          => 2,  add3          => 0,
101
is($seq, 'monthname: January | monthabrv: Jan');
91
        every1          => 1,  every2        => 1,  every3        => 0,
102
$seq = _next_seq($subscription, $pattern);
92
        whenmorethan1   => 11, whenmorethan2 => 11, whenmorethan3 => 0,
103
is($seq, 'monthname: March | monthabrv: Mar');
93
        setto1          => 0,  setto2        => 0,  setto3        => 0,
94
        numberingmethod => 'monthname: {X} | monthabrv: {Y}',
95
        numbering1      => 'monthname',
96
        numbering2      => 'monthabrv',
97
        numbering3      => '',
98
    };
104
99
105
# TEST CASE 4 - 1 variable, use 'season' numbering, from 0 to 3
100
    my $seq = _next_seq( $subscription, $pattern );
106
# Months starts at 0, this implies subscription's lastvalue1 should be 0,
101
    is( $seq, 'monthname: March | monthabrv: Mar', "Next month (3) is correctly generated when adding 2" );
107
# together with setto1 and whenmorethan1 should be 11
102
    $seq = _next_seq( $subscription, $pattern );
108
$subscription = {
103
    is( $seq, 'monthname: May | monthabrv: May', "Next month (5) is correctly generated when adding 2" );
109
    lastvalue1 => 0, lastvalue2 => 0, lastvalue3 => 0,
104
    $seq = _next_seq( $subscription, $pattern );
110
    innerloop1 => 0, innerloop2 => 0, innerloop3 => 0,
105
    is( $seq, 'monthname: July | monthabrv: Jul', "Next month (7) is correctly generated when adding 2" );
111
    skip_serialseq => 0,
106
    $seq = _next_seq( $subscription, $pattern );
112
    irregularity => '',
107
    is( $seq, 'monthname: September | monthabrv: Sep', "Next month (9) is correctly generated when adding 2" );
113
    locale => 'C',  # locale set to 'C' to ensure we'll have english strings
108
    $seq = _next_seq( $subscription, $pattern );
114
};
109
    is( $seq, 'monthname: November | monthabrv: Nov', "Next month (11) is correctly generated when adding 2" );
115
$pattern = {
110
    $seq = _next_seq( $subscription, $pattern );
116
             add1 =>  1,          add2 =>  1,          add3 =>  0,
111
    is( $seq, 'monthname: January | monthabrv: Jan', "Next month (1) is correctly reset and generated when adding 2" );
117
           every1 =>  1,        every2 =>  1,        every3 =>  0,
112
    $seq = _next_seq( $subscription, $pattern );
118
    whenmorethan1 =>  3, whenmorethan2 =>  3, whenmorethan3 =>  0,
113
    is( $seq, 'monthname: March | monthabrv: Mar', "Next month (3) is correctly generated when adding 2" );
119
           setto1 =>  0,        setto2 =>  0,        setto3 =>  0,
120
    numberingmethod => 'season: {X} | seasonabrv: {Y}',
121
    numbering1 => 'season',
122
    numbering2 => 'seasonabrv',
123
    numbering3 => '',
124
};
114
};
125
115
126
$seq = _next_seq($subscription, $pattern);
116
subtest "TEST CASE 4 - 1 variable, use 'season' numbering, from 0 to 3" => sub {
127
is($seq, 'season: Summer | seasonabrv: Sum');
117
    plan tests => 5;
128
$seq = _next_seq($subscription, $pattern);
129
is($seq, 'season: Fall | seasonabrv: Fal');
130
$seq = _next_seq($subscription, $pattern);
131
is($seq, 'season: Winter | seasonabrv: Win');
132
$seq = _next_seq($subscription, $pattern);
133
is($seq, 'season: Spring | seasonabrv: Spr');
134
$seq = _next_seq($subscription, $pattern);
135
is($seq, 'season: Summer | seasonabrv: Sum');
136
118
137
# TEST CASE 5 - 2 variables, from 1 to 12, and from 1 to 4
119
    # Months starts at 0, this implies subscription's lastvalue1 should be 0,
138
$subscription = {
120
    # together with setto1 and whenmorethan1 should be 11
139
    lastvalue1 => 1, lastvalue2 => 1, lastvalue3 => 1,
121
    my $subscription = {
140
    innerloop1 => 0, innerloop2 => 0, innerloop3 => 0,
122
        lastvalue1     => 0, lastvalue2 => 0, lastvalue3 => 0,
141
    skip_serialseq => 0,
123
        innerloop1     => 0, innerloop2 => 0, innerloop3 => 0,
142
    irregularity => '',
124
        skip_serialseq => 0,
143
    locale => 'C',  # locale set to 'C' to ensure we'll have english strings
125
        irregularity   => '',
144
};
126
        locale         => 'C',    # locale set to 'C' to ensure we'll have english strings
145
$pattern = {
127
    };
146
             add1 =>  1,          add2 =>  1,          add3 =>  0,
128
    my $pattern = {
147
           every1 =>  1,        every2 =>  4,        every3 =>  0,
129
        add1            => 1, add2          => 1, add3          => 0,
148
    whenmorethan1 =>  4, whenmorethan2 => 12, whenmorethan3 =>  0,
130
        every1          => 1, every2        => 1, every3        => 0,
149
           setto1 =>  1,        setto2 =>  1,        setto3 =>  0,
131
        whenmorethan1   => 3, whenmorethan2 => 3, whenmorethan3 => 0,
150
    numberingmethod => 'Y: {Y}, X: {X}',
132
        setto1          => 0, setto2        => 0, setto3        => 0,
151
    numbering1 => '',
133
        numberingmethod => 'season: {X} | seasonabrv: {Y}',
152
    numbering2 => '',
134
        numbering1      => 'season',
153
    numbering3 => '',
135
        numbering2      => 'seasonabrv',
136
        numbering3      => '',
137
    };
138
139
    my $seq = _next_seq( $subscription, $pattern );
140
    is( $seq, 'season: Summer | seasonabrv: Sum', "Next season (Summer) is correctly generated" );
141
    $seq = _next_seq( $subscription, $pattern );
142
    is( $seq, 'season: Fall | seasonabrv: Fal', "Next season (Fall) is correctly generated" );
143
    $seq = _next_seq( $subscription, $pattern );
144
    is( $seq, 'season: Winter | seasonabrv: Win', "Next season (Winter) is correctly generated" );
145
    $seq = _next_seq( $subscription, $pattern );
146
    is( $seq, 'season: Spring | seasonabrv: Spr', "Next season (Spring) is correctly reset and generated" );
147
    $seq = _next_seq( $subscription, $pattern );
148
    is( $seq, 'season: Summer | seasonabrv: Sum', "Next season (Summer) is correctly generated" );
154
};
149
};
155
150
156
$seq = _next_seq($subscription, $pattern);
151
subtest "TEST CASE 5 - 2 variables, from 1 to 12, and from 1 to 4" => sub {
157
is($seq, 'Y: 1, X: 2');
152
    plan tests => 9;
158
$seq = _next_seq($subscription, $pattern);
153
    my $subscription = {
159
is($seq, 'Y: 1, X: 3');
154
        lastvalue1     => 1, lastvalue2 => 1, lastvalue3 => 1,
160
$seq = _next_seq($subscription, $pattern);
155
        innerloop1     => 0, innerloop2 => 0, innerloop3 => 0,
161
is($seq, 'Y: 1, X: 4');
156
        skip_serialseq => 0,
162
$seq = _next_seq($subscription, $pattern);
157
        irregularity   => '',
163
is($seq, 'Y: 2, X: 1');
158
        locale         => 'C',    # locale set to 'C' to ensure we'll have english strings
164
$seq = _next_seq($subscription, $pattern);
159
    };
165
is($seq, 'Y: 2, X: 2');
160
    my $pattern = {
166
# Back to the future
161
        add1            => 1, add2          => 1,  add3          => 0,
167
for (1..39) {
162
        every1          => 1, every2        => 4,  every3        => 0,
168
    $seq = _next_seq($subscription, $pattern);
163
        whenmorethan1   => 4, whenmorethan2 => 12, whenmorethan3 => 0,
169
}
164
        setto1          => 1, setto2        => 1,  setto3        => 0,
170
$seq = _next_seq($subscription, $pattern);
165
        numberingmethod => 'Y: {Y}, X: {X}',
171
is($seq, 'Y: 12, X: 2');
166
        numbering1      => '',
172
$seq = _next_seq($subscription, $pattern);
167
        numbering2      => '',
173
is($seq, 'Y: 12, X: 3');
168
        numbering3      => '',
174
$seq = _next_seq($subscription, $pattern);
169
    };
175
is($seq, 'Y: 12, X: 4');
176
$seq = _next_seq($subscription, $pattern);
177
is($seq, 'Y: 1, X: 1');
178
170
179
# TEST CASE 6 - 3 variables, from 1 to 12, from 1 to 8, and from 1 to 4
171
    my $seq = _next_seq( $subscription, $pattern );
180
$subscription = {
172
    is( $seq, 'Y: 1, X: 2', "X increased to 2" );
181
    lastvalue1 => 1, lastvalue2 => 1, lastvalue3 => 1,
173
    $seq = _next_seq( $subscription, $pattern );
182
    innerloop1 => 0, innerloop2 => 0, innerloop3 => 0,
174
    is( $seq, 'Y: 1, X: 3', "X increased to 3" );
183
    skip_serialseq => 0,
175
    $seq = _next_seq( $subscription, $pattern );
184
    irregularity => '',
176
    is( $seq, 'Y: 1, X: 4', "X increased to 4" );
185
    locale => 'C',  # locale set to 'C' to ensure we'll have english strings
177
    $seq = _next_seq( $subscription, $pattern );
186
};
178
    is( $seq, 'Y: 2, X: 1', "X increased and reset to 1" );
187
$pattern = {
179
    $seq = _next_seq( $subscription, $pattern );
188
             add1 =>  1,          add2 =>  1,          add3 =>  1,
180
    is( $seq, 'Y: 2, X: 2', "X increased to 2" );
189
           every1 =>  1,        every2 =>  4,        every3 =>  32,
181
190
    whenmorethan1 =>  4, whenmorethan2 =>  8, whenmorethan3 =>  12,
182
    # Back to the future
191
           setto1 =>  1,        setto2 =>  1,        setto3 =>  1,
183
    for ( 1 .. 39 ) {
192
    numberingmethod => 'Z: {Z}, Y: {Y}, X: {X}',
184
        $seq = _next_seq( $subscription, $pattern );
193
    numbering1 => '',
185
    }
194
    numbering2 => '',
186
    $seq = _next_seq( $subscription, $pattern );
195
    numbering3 => '',
187
    is( $seq, 'Y: 12, X: 2', "Skipping ahead, Y has incremented to 12, X increased to 2" );
188
    $seq = _next_seq( $subscription, $pattern );
189
    is( $seq, 'Y: 12, X: 3', "X increased to 3" );
190
    $seq = _next_seq( $subscription, $pattern );
191
    is( $seq, 'Y: 12, X: 4', "X increased to 4" );
192
    $seq = _next_seq( $subscription, $pattern );
193
    is( $seq, 'Y: 1, X: 1', "Y resets after 12, X increased and reset to 1" );
196
};
194
};
197
195
198
$seq = _next_seq($subscription, $pattern);
196
subtest "TEST CASE 6 - 3 variables, from 1 to 12, from 1 to 8, and from 1 to 4" => sub {
199
is($seq, 'Z: 1, Y: 1, X: 2');
197
    plan tests => 10;
200
$seq = _next_seq($subscription, $pattern);
198
    my $subscription = {
201
is($seq, 'Z: 1, Y: 1, X: 3');
199
        lastvalue1     => 1, lastvalue2 => 1, lastvalue3 => 1,
202
$seq = _next_seq($subscription, $pattern);
200
        innerloop1     => 0, innerloop2 => 0, innerloop3 => 0,
203
is($seq, 'Z: 1, Y: 1, X: 4');
201
        skip_serialseq => 0,
204
$seq = _next_seq($subscription, $pattern);
202
        irregularity   => '',
205
is($seq, 'Z: 1, Y: 2, X: 1');
203
        locale         => 'C',    # locale set to 'C' to ensure we'll have english strings
206
for (1..24) {
204
    };
207
    $seq = _next_seq($subscription, $pattern);
205
    my $pattern = {
208
}
206
        add1            => 1, add2          => 1, add3          => 1,
209
$seq = _next_seq($subscription, $pattern);
207
        every1          => 1, every2        => 4, every3        => 32,
210
is($seq, 'Z: 1, Y: 8, X: 2');
208
        whenmorethan1   => 4, whenmorethan2 => 8, whenmorethan3 => 12,
211
$seq = _next_seq($subscription, $pattern);
209
        setto1          => 1, setto2        => 1, setto3        => 1,
212
is($seq, 'Z: 1, Y: 8, X: 3');
210
        numberingmethod => 'Z: {Z}, Y: {Y}, X: {X}',
213
$seq = _next_seq($subscription, $pattern);
211
        numbering1      => '',
214
is($seq, 'Z: 1, Y: 8, X: 4');
212
        numbering2      => '',
215
$seq = _next_seq($subscription, $pattern);
213
        numbering3      => '',
216
is($seq, 'Z: 2, Y: 1, X: 1');
214
    };
217
for (1..350) {
215
218
    $seq = _next_seq($subscription, $pattern);
216
    my $seq = _next_seq( $subscription, $pattern );
219
}
217
    is( $seq, 'Z: 1, Y: 1, X: 2', "X increased by one, now 2" );
220
$seq = _next_seq($subscription, $pattern);
218
    $seq = _next_seq( $subscription, $pattern );
221
is($seq, 'Z: 12, Y: 8, X: 4');
219
    is( $seq, 'Z: 1, Y: 1, X: 3', "X increased by one, now 3" );
222
$seq = _next_seq($subscription, $pattern);
220
    $seq = _next_seq( $subscription, $pattern );
223
is($seq, 'Z: 1, Y: 1, X: 1');
221
    is( $seq, 'Z: 1, Y: 1, X: 4', "X increased by one, now 4" );
222
    $seq = _next_seq( $subscription, $pattern );
223
    is( $seq, 'Z: 1, Y: 2, X: 1', "X increased by one, now 1, Y increased by 1, now 2" );
224
224
225
# TEST CASE 7 . Specify how many issues to count forward, 1 variable, from 1 to 4
225
    for ( 1 .. 24 ) {
226
        $seq = _next_seq( $subscription, $pattern );
227
    }
228
    $seq = _next_seq( $subscription, $pattern );
229
    is( $seq, 'Z: 1, Y: 8, X: 2', "Skipped to Z1, Y8, X2, X increased by one, now 2" );
230
    $seq = _next_seq( $subscription, $pattern );
231
    is( $seq, 'Z: 1, Y: 8, X: 3', "X increased by one, now 3" );
232
    $seq = _next_seq( $subscription, $pattern );
233
    is( $seq, 'Z: 1, Y: 8, X: 4', "X increased by one, now 4" );
234
    $seq = _next_seq( $subscription, $pattern );
235
    is(
236
        $seq, 'Z: 2, Y: 1, X: 1',
237
        "X increased by one and reset, now 1. Y increased by 1 and reset, now 1. Z increased by one, now 2"
238
    );
226
239
227
$subscription = {
240
    for ( 1 .. 350 ) {
228
    lastvalue1 => 1, lastvalue2 => 1, lastvalue3 => 1,
241
        $seq = _next_seq( $subscription, $pattern );
229
    innerloop1 => 0, innerloop2 => 0, innerloop3 => 0,
242
    }
230
    skip_serialseq => 0,
243
    $seq = _next_seq( $subscription, $pattern );
231
    irregularity => '',
244
    is( $seq, 'Z: 12, Y: 8, X: 4', "Skipped to Z12, Y8, X4, X increased by one, now 4" );
232
    locale => 'en',
245
    $seq = _next_seq( $subscription, $pattern );
246
    is(
247
        $seq, 'Z: 1, Y: 1, X: 1',
248
        "X increased by one and reset, now 1. Y increased by 1 and reset, now 1. Z increased by one and reset, now 1"
249
    );
233
};
250
};
234
$pattern = {
251
235
             add1 =>  1,          add2 =>  0,          add3 =>  0,
252
subtest "TEST CASE 7 . Specify how many issues to count forward, 1 variable, from 1 to 4" => sub {
236
           every1 =>  1,        every2 =>  0,        every3 =>  0,
253
    plan tests => 3;
237
    whenmorethan1 =>  4, whenmorethan2 =>  0, whenmorethan3 =>  0,
254
238
           setto1 =>  1,        setto2 =>  0,        setto3 =>  0,
255
    my $subscription = {
239
    numberingmethod => 'X: {X}',
256
        lastvalue1     => 1, lastvalue2 => 1, lastvalue3 => 1,
240
    numbering1 => '',
257
        innerloop1     => 0, innerloop2 => 0, innerloop3 => 0,
241
    numbering2 => '',
258
        skip_serialseq => 0,
242
    numbering3 => '',
259
        irregularity   => '',
260
        locale         => 'en',
261
    };
262
    my $pattern = {
263
        add1            => 1, add2          => 0, add3          => 0,
264
        every1          => 1, every2        => 0, every3        => 0,
265
        whenmorethan1   => 4, whenmorethan2 => 0, whenmorethan3 => 0,
266
        setto1          => 1, setto2        => 0, setto3        => 0,
267
        numberingmethod => 'X: {X}',
268
        numbering1      => '',
269
        numbering2      => '',
270
        numbering3      => '',
271
    };
272
    my $seq = _next_seq( $subscription, $pattern, 1 );
273
    is( $seq, 'X: 2', "When counting forward 1, X increased by one" );
274
    $seq = _next_seq( $subscription, $pattern, 2 );
275
    is( $seq, 'X: 4', "When counting forward 2, X increased by 2" );
276
    $seq = _next_seq( $subscription, $pattern, 2 );
277
    is( $seq, 'X: 2', "When counting forward 2, X correctly reset and counted forward by 2" );
243
};
278
};
244
$seq = _next_seq($subscription, $pattern, 1);
245
is($seq, 'X: 2');
246
$seq = _next_seq($subscription, $pattern, 2);
247
is($seq, 'X: 4');
248
$seq = _next_seq($subscription, $pattern, 2);
249
is($seq, 'X: 2');
250
279
251
sub _next_seq {
280
sub _next_seq {
252
    my ($subscription, $pattern, $count_forward) = @_;
281
    my ( $subscription, $pattern, $count_forward ) = @_;
253
    my $seq;
282
    my $seq;
254
    ($seq, $subscription->{lastvalue1}, $subscription->{lastvalue2},
283
    (
284
        $seq,                        $subscription->{lastvalue1}, $subscription->{lastvalue2},
255
        $subscription->{lastvalue3}, $subscription->{innerloop1},
285
        $subscription->{lastvalue3}, $subscription->{innerloop1},
256
        $subscription->{innerloop2}, $subscription->{innerloop3}) =
286
        $subscription->{innerloop2}, $subscription->{innerloop3}
257
            GetNextSeq($subscription, $pattern, undef, undef, $count_forward);
287
    ) = GetNextSeq( $subscription, $pattern, undef, undef, undef, $count_forward );
258
    return $seq;
288
    return $seq;
259
}
289
}
260
- 

Return to bug 37796