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

(-)a/C4/Serials.pm (-22 / +8 lines)
Lines 2498-2504 sub _numeration { Link Here
2498
    $num_type //= '';
2498
    $num_type //= '';
2499
    $locale ||= 'en';
2499
    $locale ||= 'en';
2500
    my $string;
2500
    my $string;
2501
    if ( $num_type =~ /^dayname$/ ) {
2501
    if ( $num_type =~ /^dayname$/ or $num_type =~ /^dayabrv$/ ) {
2502
        # 1970-11-01 was a Sunday
2502
        # 1970-11-01 was a Sunday
2503
        $value = $value % 7;
2503
        $value = $value % 7;
2504
        my $dt = DateTime->new(
2504
        my $dt = DateTime->new(
Lines 2507-2539 sub _numeration { Link Here
2507
            day     => $value + 1,
2507
            day     => $value + 1,
2508
            locale  => $locale,
2508
            locale  => $locale,
2509
        );
2509
        );
2510
        $string = $dt->strftime("%A");
2510
        $string = $num_type =~ /^dayname$/
2511
    } elsif ( $num_type =~ /^dayabrv$/ ) {
2511
            ? $dt->strftime("%A")
2512
        # 1970-11-01 was a Sunday
2512
            : $dt->strftime("%a");
2513
        $value = $value % 7;
2513
    } elsif ( $num_type =~ /^monthname$/ or $num_type =~ /^monthabrv$/ ) {
2514
        my $dt = DateTime->new(
2515
            year    => 1970,
2516
            month   => 11,
2517
            day     => $value + 1,
2518
            locale  => $locale,
2519
        );
2520
        $string = $dt->strftime("%a");
2521
    } elsif ( $num_type =~ /^monthname$/ ) {
2522
        $value = $value % 12;
2523
        my $dt = DateTime->new(
2524
            year    => 1970,
2525
            month   => $value + 1,
2526
            locale  => $locale,
2527
        );
2528
        $string = $dt->strftime("%B");
2529
    } elsif ( $num_type =~ /^monthabrv$/ ) {
2530
        $value = $value % 12;
2514
        $value = $value % 12;
2531
        my $dt = DateTime->new(
2515
        my $dt = DateTime->new(
2532
            year    => 1970,
2516
            year    => 1970,
2533
            month   => $value + 1,
2517
            month   => $value + 1,
2534
            locale  => $locale,
2518
            locale  => $locale,
2535
        );
2519
        );
2536
        $string = $dt->strftime("%b");
2520
        $string = $num_type =~ /^monthname$/
2521
            ? $dt->strftime("%B")
2522
            : $dt->strftime("%b");
2537
    } elsif ( $num_type =~ /^season$/ ) {
2523
    } elsif ( $num_type =~ /^season$/ ) {
2538
        my @seasons= qw( Spring Summer Fall Winter );
2524
        my @seasons= qw( Spring Summer Fall Winter );
2539
        $value = $value % 4;
2525
        $value = $value % 4;
(-)a/t/Serials/GetNextSeq.t (-39 / +38 lines)
Lines 43-138 $subscription = { Link Here
43
    locale => 'C',
43
    locale => 'C',
44
};
44
};
45
$pattern = {
45
$pattern = {
46
             add1 =>  1,          add2 =>  0,          add3 =>  0,
46
             add1 =>  1,          add2 =>  1,          add3 =>  0,
47
           every1 =>  1,        every2 =>  0,        every3 =>  0,
47
           every1 =>  1,        every2 =>  1,        every3 =>  0,
48
    whenmorethan1 =>  7, whenmorethan2 =>  0, whenmorethan3 =>  0,
48
    whenmorethan1 =>  7, whenmorethan2 =>  7, whenmorethan3 =>  0,
49
           setto1 =>  1,        setto2 =>  0,        setto3 =>  0,
49
           setto1 =>  1,        setto2 =>  1,        setto3 =>  0,
50
    numberingmethod => 'X: {X}',
50
    numberingmethod => 'dayname: {X} | dayabrv: {Y}',
51
    numbering1 => 'dayname',
51
    numbering1 => 'dayname',
52
    numbering2 => '',
52
    numbering2 => 'dayabrv',
53
    numbering3 => '',
53
    numbering3 => '',
54
};
54
};
55
55
56
$seq = _next_seq($subscription, $pattern);
56
$seq = _next_seq($subscription, $pattern);
57
is($seq, 'X: Tuesday');
57
is($seq, 'dayname: Tuesday | dayabrv: Tue');
58
$seq = _next_seq($subscription, $pattern);
58
$seq = _next_seq($subscription, $pattern);
59
is($seq, 'X: Wednesday');
59
is($seq, 'dayname: Wednesday | dayabrv: Wed');
60
$seq = _next_seq($subscription, $pattern);
60
$seq = _next_seq($subscription, $pattern);
61
is($seq, 'X: Thursday');
61
is($seq, 'dayname: Thursday | dayabrv: Thu');
62
$seq = _next_seq($subscription, $pattern);
62
$seq = _next_seq($subscription, $pattern);
63
is($seq, 'X: Friday');
63
is($seq, 'dayname: Friday | dayabrv: Fri');
64
$seq = _next_seq($subscription, $pattern);
64
$seq = _next_seq($subscription, $pattern);
65
is($seq, 'X: Saturday');
65
is($seq, 'dayname: Saturday | dayabrv: Sat');
66
$seq = _next_seq($subscription, $pattern);
66
$seq = _next_seq($subscription, $pattern);
67
is($seq, 'X: Sunday');
67
is($seq, 'dayname: Sunday | dayabrv: Sun');
68
$seq = _next_seq($subscription, $pattern);
68
$seq = _next_seq($subscription, $pattern);
69
is($seq, 'X: Monday');
69
is($seq, 'dayname: Monday | dayabrv: Mon');
70
70
71
# TEST CASE 3 - 1 variable, use 'monthname' numbering, from 0 to 11 by step of 2
71
# TEST CASE 3 - 1 variable, use 'monthname' numbering, from 0 to 11 by step of 2
72
$subscription = {
72
$subscription = {
73
    lastvalue1 => 0, lastvalue2 => 1, lastvalue3 => 1,
73
    lastvalue1 => 0, lastvalue2 => 0, lastvalue3 => 0,
74
    innerloop1 => 0, innerloop2 => 0, innerloop3 => 0,
74
    innerloop1 => 0, innerloop2 => 0, innerloop3 => 0,
75
    skip_serialseq => 0,
75
    skip_serialseq => 0,
76
    irregularity => '',
76
    irregularity => '',
77
    locale => 'C',  # locale set to 'C' to ensure we'll have english strings
77
    locale => 'C',  # locale set to 'C' to ensure we'll have english strings
78
};
78
};
79
$pattern = {
79
$pattern = {
80
             add1 =>  2,          add2 =>  0,          add3 =>  0,
80
             add1 =>  2,          add2 =>  2,           add3 =>  0,
81
           every1 =>  1,        every2 =>  0,        every3 =>  0,
81
           every1 =>  1,        every2 =>  1,         every3 =>  0,
82
    whenmorethan1 => 11, whenmorethan2 =>  0, whenmorethan3 =>  0,
82
    whenmorethan1 => 11, whenmorethan2 =>  11, whenmorethan3 =>  0,
83
           setto1 =>  0,        setto2 =>  0,        setto3 =>  0,
83
           setto1 =>  0,        setto2 =>  0,         setto3 =>  0,
84
    numberingmethod => 'X: {X}',
84
    numberingmethod => 'monthname: {X} | monthabrv: {Y}',
85
    numbering1 => 'monthname',
85
    numbering1 => 'monthname',
86
    numbering2 => '',
86
    numbering2 => 'monthabrv',
87
    numbering3 => '',
87
    numbering3 => '',
88
};
88
};
89
89
90
$seq = _next_seq($subscription, $pattern);
90
$seq = _next_seq($subscription, $pattern);
91
is($seq, 'X: March');
91
is($seq, 'monthname: March | monthabrv: Mar');
92
$seq = _next_seq($subscription, $pattern);
92
$seq = _next_seq($subscription, $pattern);
93
is($seq, 'X: May');
93
is($seq, 'monthname: May | monthabrv: May');
94
$seq = _next_seq($subscription, $pattern);
94
$seq = _next_seq($subscription, $pattern);
95
is($seq, 'X: July');
95
is($seq, 'monthname: July | monthabrv: Jul');
96
$seq = _next_seq($subscription, $pattern);
96
$seq = _next_seq($subscription, $pattern);
97
is($seq, 'X: September');
97
is($seq, 'monthname: September | monthabrv: Sep');
98
$seq = _next_seq($subscription, $pattern);
98
$seq = _next_seq($subscription, $pattern);
99
is($seq, 'X: November');
99
is($seq, 'monthname: November | monthabrv: Nov');
100
$seq = _next_seq($subscription, $pattern);
100
$seq = _next_seq($subscription, $pattern);
101
is($seq, 'X: January');
101
is($seq, 'monthname: January | monthabrv: Jan');
102
$seq = _next_seq($subscription, $pattern);
102
$seq = _next_seq($subscription, $pattern);
103
is($seq, 'X: March');
103
is($seq, 'monthname: March | monthabrv: Mar');
104
104
105
# TEST CASE 4 - 1 variable, use 'season' numbering, from 0 to 3
105
# TEST CASE 4 - 1 variable, use 'season' numbering, from 0 to 3
106
# Months starts at 0, this implies subscription's lastvalue1 should be 0,
106
# Months starts at 0, this implies subscription's lastvalue1 should be 0,
107
# together with setto1 and whenmorethan1 should be 11
107
# together with setto1 and whenmorethan1 should be 11
108
$subscription = {
108
$subscription = {
109
    lastvalue1 => 0, lastvalue2 => 1, lastvalue3 => 1,
109
    lastvalue1 => 0, lastvalue2 => 0, lastvalue3 => 0,
110
    innerloop1 => 0, innerloop2 => 0, innerloop3 => 0,
110
    innerloop1 => 0, innerloop2 => 0, innerloop3 => 0,
111
    skip_serialseq => 0,
111
    skip_serialseq => 0,
112
    irregularity => '',
112
    irregularity => '',
113
    locale => 'C',  # locale set to 'C' to ensure we'll have english strings
113
    locale => 'C',  # locale set to 'C' to ensure we'll have english strings
114
};
114
};
115
$pattern = {
115
$pattern = {
116
             add1 =>  1,          add2 =>  0,          add3 =>  0,
116
             add1 =>  1,          add2 =>  1,          add3 =>  0,
117
           every1 =>  1,        every2 =>  0,        every3 =>  0,
117
           every1 =>  1,        every2 =>  1,        every3 =>  0,
118
    whenmorethan1 =>  3, whenmorethan2 =>  0, whenmorethan3 =>  0,
118
    whenmorethan1 =>  3, whenmorethan2 =>  3, whenmorethan3 =>  0,
119
           setto1 =>  0,        setto2 =>  0,        setto3 =>  0,
119
           setto1 =>  0,        setto2 =>  0,        setto3 =>  0,
120
    numberingmethod => 'X: {X}',
120
    numberingmethod => 'season: {X} | seasonabrv: {Y}',
121
    numbering1 => 'season',
121
    numbering1 => 'season',
122
    numbering2 => '',
122
    numbering2 => 'seasonabrv',
123
    numbering3 => '',
123
    numbering3 => '',
124
};
124
};
125
125
126
$seq = _next_seq($subscription, $pattern);
126
$seq = _next_seq($subscription, $pattern);
127
is($seq, 'X: Summer');
127
is($seq, 'season: Summer | seasonabrv: Sum');
128
$seq = _next_seq($subscription, $pattern);
128
$seq = _next_seq($subscription, $pattern);
129
is($seq, 'X: Fall');
129
is($seq, 'season: Fall | seasonabrv: Fal');
130
$seq = _next_seq($subscription, $pattern);
130
$seq = _next_seq($subscription, $pattern);
131
is($seq, 'X: Winter');
131
is($seq, 'season: Winter | seasonabrv: Win');
132
$seq = _next_seq($subscription, $pattern);
132
$seq = _next_seq($subscription, $pattern);
133
is($seq, 'X: Spring');
133
is($seq, 'season: Spring | seasonabrv: Spr');
134
$seq = _next_seq($subscription, $pattern);
134
$seq = _next_seq($subscription, $pattern);
135
is($seq, 'X: Summer');
135
is($seq, 'season: Summer | seasonabrv: Sum');
136
136
137
# TEST CASE 5 - 2 variables, from 1 to 12, and from 1 to 4
137
# TEST CASE 5 - 2 variables, from 1 to 12, and from 1 to 4
138
$subscription = {
138
$subscription = {
139
- 

Return to bug 16289