/
DecompositionSpec.groovy
114 lines (89 loc) · 1.54 KB
/
DecompositionSpec.groovy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
import spock.lang.Specification
class DecompositionSpec extends Specification {
def "factor 2 decomposition"() {
given:
def sut = new Decomposition()
expect:
sut.factors(number) == factors
where:
number | factors
2 | [2]
4 | [2, 2]
16 | [2, 2, 2, 2]
}
def "any factor decomposition"() {
given:
def sut = new Decomposition()
expect:
sut.factors(number) == factors
where:
number | factors
300 | [2, 2, 3, 5, 5]
123456789 | [3, 3, 3607, 3803]
}
def "valid numbers"() {
given:
def sut = new Decomposition()
expect:
sut.isValid(number) == valid
where:
number | valid
3 | true
"hello" | false
}
def "big numbers"() {
given:
def sut = new Decomposition()
expect:
sut.isBig(number) == valid
where:
number | valid
3 | false
1000000 | false
1000001 | true
}
def "small numbers"() {
given:
def sut = new Decomposition()
expect:
sut.isSmall(number) == valid
where:
number | valid
3 | false
1 | true
0 | true
-10 | true
}
def "roman numerals"() {
given:
def sut = new Decomposition()
expect:
sut.romanToArabic(roman) == arabic
sut.arabicToRoman(arabic) == roman
where:
roman | arabic
"I" | 1
"II" | 2
"III" | 3
"V" | 5
"X" | 10
"L" | 50
"C" | 100
"IV" | 4
"IX" | 9
"XL" | 40
"XC" | 90
}
def "is roman"() {
given:
def sut = new Decomposition()
expect:
sut.isRoman(roman) == isRoman
where:
roman | isRoman
"I" | true
"III" | true
"IVXLC" | true
"IVi" | false
}
}