Przeglądaj źródła

Merge branch 'allergies'

Piet van Dongen 11 lat temu
rodzic
commit
c9d6bf6aba

+ 11
- 0
allergies/build.gradle Wyświetl plik

@@ -0,0 +1,11 @@
1
+apply plugin: "java"
2
+apply plugin: "eclipse"
3
+apply plugin: "idea"
4
+
5
+repositories {
6
+  mavenCentral()
7
+}
8
+
9
+dependencies {
10
+  testCompile "junit:junit:4.10"
11
+}

+ 22
- 0
allergies/example.java Wyświetl plik

@@ -0,0 +1,22 @@
1
+import java.util.EnumSet;
2
+import java.util.List;
3
+import java.util.stream.Collectors;
4
+
5
+public class Allergies {
6
+
7
+    private int score;
8
+
9
+    public Allergies(int score) {
10
+        this.score = score;
11
+    }
12
+
13
+    public List<Allergen> getList() {
14
+        return EnumSet.allOf(Allergen.class).stream()
15
+                .filter(x -> isAllergicTo(x))
16
+                .collect(Collectors.toList());
17
+    }
18
+
19
+    public boolean isAllergicTo(Allergen allergen) {
20
+        return (score & allergen.getScore()) == allergen.getScore();
21
+    }
22
+}

+ 0
- 0
allergies/src/main/java/.keep Wyświetl plik


+ 20
- 0
allergies/src/main/java/Allergen.java Wyświetl plik

@@ -0,0 +1,20 @@
1
+public enum Allergen {
2
+    EGGS(1),
3
+    PEANUTS(2),
4
+    SHELLFISH(4),
5
+    STRAWBERRIES(8),
6
+    TOMATOES(16),
7
+    CHOCOLATE(32),
8
+    POLLEN(64),
9
+    CATS(128);
10
+
11
+    private final int score;
12
+
13
+    Allergen(int score) {
14
+        this.score = score;
15
+    }
16
+
17
+    public int getScore() {
18
+        return score;
19
+    }
20
+}

+ 2
- 0
allergies/src/main/java/Allergies.java Wyświetl plik

@@ -0,0 +1,2 @@
1
+public class Allergies {
2
+}

+ 172
- 0
allergies/src/test/java/AllergiesTest.java Wyświetl plik

@@ -0,0 +1,172 @@
1
+import org.junit.Test;
2
+
3
+import java.util.Arrays;
4
+import java.util.List;
5
+
6
+import static org.junit.Assert.assertEquals;
7
+
8
+public class AllergiesTest {
9
+
10
+    @Test
11
+    public void allergicToEggs() {
12
+        Allergies allergies = new Allergies(1);
13
+
14
+        assertEquals(true, allergies.isAllergicTo(Allergen.EGGS));
15
+    }
16
+
17
+    @Test
18
+    public void allergicToPeanuts() {
19
+        Allergies allergies = new Allergies(2);
20
+
21
+        assertEquals(true, allergies.isAllergicTo(Allergen.PEANUTS));
22
+    }
23
+
24
+    @Test
25
+    public void allergicToShellfish() {
26
+        Allergies allergies = new Allergies(4);
27
+
28
+        assertEquals(true, allergies.isAllergicTo(Allergen.SHELLFISH));
29
+    }
30
+
31
+    @Test
32
+    public void allergicToStrawberries() {
33
+        Allergies allergies = new Allergies(8);
34
+
35
+        assertEquals(true, allergies.isAllergicTo(Allergen.STRAWBERRIES));
36
+    }
37
+
38
+    @Test
39
+    public void allergicToTomatoes() {
40
+        Allergies allergies = new Allergies(16);
41
+
42
+        assertEquals(true, allergies.isAllergicTo(Allergen.TOMATOES));
43
+    }
44
+
45
+    @Test
46
+    public void allergicToChocolate() {
47
+        Allergies allergies = new Allergies(32);
48
+
49
+        assertEquals(true, allergies.isAllergicTo(Allergen.CHOCOLATE));
50
+    }
51
+
52
+    @Test
53
+    public void allergicToPollen() {
54
+        Allergies allergies = new Allergies(64);
55
+
56
+        assertEquals(true, allergies.isAllergicTo(Allergen.POLLEN));
57
+    }
58
+
59
+    @Test
60
+    public void allergicToCats() {
61
+        Allergies allergies = new Allergies(128);
62
+
63
+        assertEquals(true, allergies.isAllergicTo(Allergen.CATS));
64
+    }
65
+
66
+    @Test
67
+    public void isAllergicToEggsInAdditionToOtherStuff() {
68
+        Allergies allergies = new Allergies(5);
69
+
70
+        assertEquals(true, allergies.isAllergicTo(Allergen.EGGS));
71
+    }
72
+
73
+    @Test
74
+    public void noAllergies() {
75
+        Allergies allergies = new Allergies(0);
76
+
77
+        assertEquals(0, allergies.getList().size());
78
+    }
79
+
80
+    @Test
81
+    public void isAllergicToJustEggs() {
82
+        Allergies allergies = new Allergies(1);
83
+        List<Allergen> expectedAllergens = Arrays.asList(new Allergen[]{Allergen.EGGS});
84
+
85
+        assertEquals(expectedAllergens, allergies.getList());
86
+    }
87
+
88
+    @Test
89
+    public void isAllergicToJustPeanuts() {
90
+        Allergies allergies = new Allergies(2);
91
+        List<Allergen> expectedAllergens = Arrays.asList(new Allergen[]{Allergen.PEANUTS});
92
+
93
+        assertEquals(expectedAllergens, allergies.getList());
94
+    }
95
+
96
+    @Test
97
+    public void isAllergicToJustStrawberries() {
98
+        Allergies allergies = new Allergies(8);
99
+        List<Allergen> expectedAllergens = Arrays.asList(new Allergen[]{Allergen.STRAWBERRIES});
100
+
101
+        assertEquals(expectedAllergens, allergies.getList());
102
+    }
103
+
104
+    @Test
105
+    public void isAllergicToEggsAndPeanuts() {
106
+        Allergies allergies = new Allergies(3);
107
+        List<Allergen> expectedAllergens = Arrays.asList(new Allergen[]{
108
+                Allergen.EGGS,
109
+                Allergen.PEANUTS
110
+        });
111
+
112
+        assertEquals(expectedAllergens, allergies.getList());
113
+    }
114
+
115
+    @Test
116
+    public void isAllergicToEggsAndShellfish() {
117
+        Allergies allergies = new Allergies(5);
118
+        List<Allergen> expectedAllergens = Arrays.asList(new Allergen[]{
119
+                Allergen.EGGS,
120
+                Allergen.SHELLFISH
121
+        });
122
+
123
+        assertEquals(expectedAllergens, allergies.getList());
124
+    }
125
+
126
+    @Test
127
+    public void isAllergicToLotsOfStuff() {
128
+        Allergies allergies = new Allergies(248);
129
+        List<Allergen> expectedAllergens = Arrays.asList(new Allergen[]{
130
+                Allergen.STRAWBERRIES,
131
+                Allergen.TOMATOES,
132
+                Allergen.CHOCOLATE,
133
+                Allergen.POLLEN,
134
+                Allergen.CATS
135
+        });
136
+
137
+        assertEquals(expectedAllergens, allergies.getList());
138
+    }
139
+
140
+    @Test
141
+    public void isAllergicToEverything() {
142
+        Allergies allergies = new Allergies(255);
143
+        List<Allergen> expectedAllergens = Arrays.asList(new Allergen[]{
144
+                Allergen.EGGS,
145
+                Allergen.PEANUTS,
146
+                Allergen.SHELLFISH,
147
+                Allergen.STRAWBERRIES,
148
+                Allergen.TOMATOES,
149
+                Allergen.CHOCOLATE,
150
+                Allergen.POLLEN,
151
+                Allergen.CATS
152
+        });
153
+
154
+        assertEquals(expectedAllergens, allergies.getList());
155
+    }
156
+
157
+    @Test
158
+    public void ignoreNonAllergenScoreParts() {
159
+        Allergies allergies = new Allergies(509);
160
+        List<Allergen> expectedAllergens = Arrays.asList(new Allergen[]{
161
+                Allergen.EGGS,
162
+                Allergen.SHELLFISH,
163
+                Allergen.STRAWBERRIES,
164
+                Allergen.TOMATOES,
165
+                Allergen.CHOCOLATE,
166
+                Allergen.POLLEN,
167
+                Allergen.CATS
168
+        });
169
+
170
+        assertEquals(expectedAllergens, allergies.getList());
171
+    }
172
+}

+ 2
- 1
config.json Wyświetl plik

@@ -21,7 +21,8 @@
21 21
     "roman-numerals",
22 22
     "binary",
23 23
     "prime-factors",
24
-    "raindrops"
24
+    "raindrops",
25
+    "allergies"
25 26
   ],
26 27
   "deprecated": [
27 28
   ],