16
16
17
17
package org .springframework .scheduling .support ;
18
18
19
+ import java .util .Arrays ;
20
+
21
+ import org .assertj .core .api .Condition ;
19
22
import org .junit .jupiter .api .Test ;
20
23
24
+ import static org .assertj .core .api .Assertions .assertThat ;
21
25
import static org .assertj .core .api .Assertions .assertThatIllegalArgumentException ;
22
- import static org .springframework .scheduling .support .BitSetAssert .assertThat ;
23
26
24
27
/**
25
28
* @author Arjen Poutsma
@@ -28,12 +31,12 @@ public class BitsCronFieldTests {
28
31
29
32
@ Test
30
33
void parse () {
31
- assertThat (BitsCronField .parseSeconds ("42" ). bits ()). hasUnsetRange ( 0 , 41 ). hasSet ( 42 ). hasUnsetRange ( 43 , 59 );
32
- assertThat (BitsCronField .parseMinutes ("1,2,5,9" ). bits ()). hasUnset ( 0 ). hasSet ( 1 , 2 ). hasUnset ( 3 ,4 ). hasSet ( 5 ). hasUnsetRange ( 6 ,8 ). hasSet ( 9 ). hasUnsetRange ( 10 ,59 );
33
- assertThat (BitsCronField .parseSeconds ("0-4,8-12" ). bits ()). hasSetRange ( 0 , 4 ). hasUnsetRange ( 5 ,7 ). hasSetRange ( 8 , 12 ). hasUnsetRange ( 13 ,59 );
34
- assertThat (BitsCronField .parseHours ("0-23/2" ). bits ()). hasSet ( 0 , 2 , 4 , 6 , 8 , 10 , 12 , 14 , 16 , 18 , 20 , 22 ). hasUnset ( 1 ,3 ,5 ,7 ,9 ,11 ,13 ,15 ,17 ,19 ,21 ,23 );
35
- assertThat (BitsCronField .parseDaysOfWeek ("0" ). bits ()). hasUnsetRange ( 0 , 6 ). hasSet ( 7 , 7 );
36
- assertThat (BitsCronField .parseSeconds ("57/2" ). bits ()). hasUnsetRange ( 0 , 56 ). hasSet ( 57 ). hasUnset ( 58 ). hasSet ( 59 );
34
+ assertThat (BitsCronField .parseSeconds ("42" )). has ( clearRange ( 0 , 41 )). has ( set ( 42 )). has ( clearRange ( 43 , 59 ) );
35
+ assertThat (BitsCronField .parseMinutes ("1,2,5,9" )). has ( clear ( 0 )). has ( set ( 1 , 2 )). has ( clearRange ( 3 ,4 )). has ( set ( 5 )). has ( clearRange ( 6 ,8 )). has ( set ( 9 )). has ( clearRange ( 10 ,59 ) );
36
+ assertThat (BitsCronField .parseSeconds ("0-4,8-12" )). has ( setRange ( 0 , 4 )). has ( clearRange ( 5 ,7 )). has ( setRange ( 8 , 12 )). has ( clearRange ( 13 ,59 ) );
37
+ assertThat (BitsCronField .parseHours ("0-23/2" )). has ( set ( 0 , 2 , 4 , 6 , 8 , 10 , 12 , 14 , 16 , 18 , 20 , 22 )). has ( clear ( 1 ,3 ,5 ,7 ,9 ,11 ,13 ,15 ,17 ,19 ,21 ,23 ) );
38
+ assertThat (BitsCronField .parseDaysOfWeek ("0" )). has ( clearRange ( 0 , 6 )). has ( set ( 7 , 7 ) );
39
+ assertThat (BitsCronField .parseSeconds ("57/2" )). has ( clearRange ( 0 , 56 )). has ( set ( 57 )). has ( clear ( 58 )). has ( set ( 59 ) );
37
40
}
38
41
39
42
@ Test
@@ -55,22 +58,78 @@ void invalidRange() {
55
58
56
59
@ Test
57
60
void parseWildcards () {
58
- assertThat (BitsCronField .parseSeconds ("*" ). bits ()). hasSetRange ( 0 , 60 );
59
- assertThat (BitsCronField .parseMinutes ("*" ). bits ()). hasSetRange ( 0 , 60 );
60
- assertThat (BitsCronField .parseHours ("*" ). bits ()). hasSetRange ( 0 , 23 );
61
- assertThat (BitsCronField .parseDaysOfMonth ("*" ). bits ()). hasUnset ( 0 ). hasSetRange ( 1 , 31 );
62
- assertThat (BitsCronField .parseDaysOfMonth ("?" ). bits ()). hasUnset ( 0 ). hasSetRange ( 1 , 31 );
63
- assertThat (BitsCronField .parseMonth ("*" ). bits ()). hasUnset ( 0 ). hasSetRange ( 1 , 12 );
64
- assertThat (BitsCronField .parseDaysOfWeek ("*" ). bits ()). hasUnset ( 0 ). hasSetRange ( 1 , 7 );
65
- assertThat (BitsCronField .parseDaysOfWeek ("?" ). bits ()). hasUnset ( 0 ). hasSetRange ( 1 , 7 );
61
+ assertThat (BitsCronField .parseSeconds ("*" )). has ( setRange ( 0 , 60 ) );
62
+ assertThat (BitsCronField .parseMinutes ("*" )). has ( setRange ( 0 , 60 ) );
63
+ assertThat (BitsCronField .parseHours ("*" )). has ( setRange ( 0 , 23 ) );
64
+ assertThat (BitsCronField .parseDaysOfMonth ("*" )). has ( clear ( 0 )). has ( setRange ( 1 , 31 ) );
65
+ assertThat (BitsCronField .parseDaysOfMonth ("?" )). has ( clear ( 0 )). has ( setRange ( 1 , 31 ) );
66
+ assertThat (BitsCronField .parseMonth ("*" )). has ( clear ( 0 )). has ( setRange ( 1 , 12 ) );
67
+ assertThat (BitsCronField .parseDaysOfWeek ("*" )). has ( clear ( 0 )). has ( setRange ( 1 , 7 ) );
68
+ assertThat (BitsCronField .parseDaysOfWeek ("?" )). has ( clear ( 0 )). has ( setRange ( 1 , 7 ) );
66
69
}
67
70
68
71
@ Test
69
72
void names () {
70
- assertThat (((BitsCronField )CronField .parseMonth ("JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC" )).bits ())
71
- .hasUnset (0 ).hasSetRange (1 , 12 );
72
- assertThat (((BitsCronField )CronField .parseDaysOfWeek ("SUN,MON,TUE,WED,THU,FRI,SAT" )).bits ())
73
- .hasUnset (0 ).hasSetRange (1 , 7 );
73
+ assertThat (((BitsCronField )CronField .parseMonth ("JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC" )))
74
+ .has (clear (0 )).has (setRange (1 , 12 ));
75
+ assertThat (((BitsCronField )CronField .parseDaysOfWeek ("SUN,MON,TUE,WED,THU,FRI,SAT" )))
76
+ .has (clear (0 )).has (setRange (1 , 7 ));
77
+ }
78
+
79
+ private static Condition <BitsCronField > set (int ... indices ) {
80
+ return new Condition <BitsCronField >(String .format ("set bits %s" , Arrays .toString (indices ))) {
81
+ @ Override
82
+ public boolean matches (BitsCronField value ) {
83
+ for (int index : indices ) {
84
+ if (!value .getBit (index )) {
85
+ return false ;
86
+ }
87
+ }
88
+ return true ;
89
+ }
90
+ };
91
+ }
92
+
93
+ private static Condition <BitsCronField > setRange (int min , int max ) {
94
+ return new Condition <BitsCronField >(String .format ("set range %d-%d" , min , max )) {
95
+ @ Override
96
+ public boolean matches (BitsCronField value ) {
97
+ for (int i = min ; i < max ; i ++) {
98
+ if (!value .getBit (i )) {
99
+ return false ;
100
+ }
101
+ }
102
+ return true ;
103
+ }
104
+ };
105
+ }
106
+
107
+ private static Condition <BitsCronField > clear (int ... indices ) {
108
+ return new Condition <BitsCronField >(String .format ("clear bits %s" , Arrays .toString (indices ))) {
109
+ @ Override
110
+ public boolean matches (BitsCronField value ) {
111
+ for (int index : indices ) {
112
+ if (value .getBit (index )) {
113
+ return false ;
114
+ }
115
+ }
116
+ return true ;
117
+ }
118
+ };
119
+ }
120
+
121
+ private static Condition <BitsCronField > clearRange (int min , int max ) {
122
+ return new Condition <BitsCronField >(String .format ("clear range %d-%d" , min , max )) {
123
+ @ Override
124
+ public boolean matches (BitsCronField value ) {
125
+ for (int i = min ; i < max ; i ++) {
126
+ if (value .getBit (i )) {
127
+ return false ;
128
+ }
129
+ }
130
+ return true ;
131
+ }
132
+ };
74
133
}
75
134
76
135
}
0 commit comments