trackler 2.2.1.84 → 2.2.1.85

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/problem-specifications/exercises/atbash-cipher/canonical-data.json +38 -14
  4. data/problem-specifications/exercises/bracket-push/canonical-data.json +44 -16
  5. data/problem-specifications/exercises/change/canonical-data.json +46 -24
  6. data/problem-specifications/exercises/collatz-conjecture/canonical-data.json +20 -8
  7. data/problem-specifications/exercises/connect/canonical-data.json +87 -67
  8. data/problem-specifications/exercises/crypto-square/canonical-data.json +23 -9
  9. data/problem-specifications/exercises/diamond/canonical-data.json +16 -6
  10. data/problem-specifications/exercises/difference-of-squares/canonical-data.json +29 -11
  11. data/problem-specifications/exercises/dominoes/canonical-data.json +37 -13
  12. data/problem-specifications/exercises/flatten-array/canonical-data.json +19 -7
  13. data/problem-specifications/exercises/meetup/canonical-data.json +667 -477
  14. data/tracks/haskell/config.json +9 -0
  15. data/tracks/haskell/docs/LEARNING.md +3 -3
  16. data/tracks/haskell/exercises/food-chain/examples/success-standard/src/FoodChain.hs +1 -1
  17. data/tracks/haskell/exercises/forth/examples/success-standard/src/Forth.hs +2 -2
  18. data/tracks/haskell/exercises/parallel-letter-frequency/examples/success-standard/src/Frequency.hs +1 -1
  19. data/tracks/haskell/exercises/sgf-parsing/examples/success-standard/src/Sgf.hs +1 -1
  20. data/tracks/haskell/exercises/twelve-days/README.md +89 -0
  21. data/tracks/haskell/exercises/twelve-days/examples/success-standard/package.yaml +16 -0
  22. data/tracks/haskell/exercises/twelve-days/examples/success-standard/src/TwelveDays.hs +36 -0
  23. data/tracks/haskell/exercises/twelve-days/package.yaml +20 -0
  24. data/tracks/haskell/exercises/twelve-days/src/TwelveDays.hs +4 -0
  25. data/tracks/haskell/exercises/twelve-days/stack.yaml +1 -0
  26. data/tracks/haskell/exercises/twelve-days/test/Tests.hs +146 -0
  27. data/tracks/haskell/exercises/zipper/examples/success-standard/src/Zipper.hs +3 -3
  28. data/tracks/java/exercises/allergies/.meta/version +2 -0
  29. data/tracks/java/exercises/allergies/src/test/java/AllergiesTest.java +10 -65
  30. data/tracks/java/exercises/anagram/.meta/version +1 -0
  31. data/tracks/java/exercises/anagram/src/test/java/AnagramTest.java +36 -35
  32. data/tracks/java/exercises/atbash-cipher/.meta/version +1 -0
  33. data/tracks/java/exercises/atbash-cipher/src/test/java/AtbashTest.java +3 -2
  34. data/tracks/java/exercises/bob/.meta/src/reference/java/Bob.java +3 -0
  35. data/tracks/java/exercises/bob/.meta/version +1 -0
  36. data/tracks/java/exercises/bob/src/test/java/BobTest.java +79 -15
  37. data/tracks/java/exercises/crypto-square/.meta/src/reference/java/CryptoSquare.java +62 -0
  38. data/tracks/java/exercises/crypto-square/.meta/version +1 -0
  39. data/tracks/java/exercises/crypto-square/src/test/java/CryptoSquareTest.java +28 -101
  40. data/tracks/java/exercises/custom-set/.meta/version +1 -1
  41. data/tracks/java/exercises/custom-set/src/test/java/CustomSetTest.java +8 -0
  42. data/tracks/java/exercises/forth/.meta/version +1 -1
  43. data/tracks/java/exercises/forth/src/test/java/ForthEvaluatorTest.java +52 -12
  44. data/tracks/java/exercises/pascals-triangle/.meta/version +1 -1
  45. data/tracks/java/exercises/pascals-triangle/src/test/java/PascalsTriangleGeneratorTest.java +48 -0
  46. data/tracks/java/exercises/prime-factors/.meta/version +1 -0
  47. data/tracks/java/exercises/prime-factors/src/test/java/PrimeFactorsCalculatorTest.java +2 -6
  48. data/tracks/java/exercises/protein-translation/.meta/version +1 -1
  49. data/tracks/java/exercises/roman-numerals/.meta/version +1 -0
  50. data/tracks/java/exercises/roman-numerals/src/test/java/RomanNumeralsTest.java +0 -1
  51. data/tracks/java/exercises/rotational-cipher/.meta/version +1 -0
  52. data/tracks/java/exercises/rotational-cipher/src/test/java/RotationalCipherTest.java +7 -7
  53. data/tracks/javascript/.eslintignore +0 -1
  54. data/tracks/javascript/README.md +1 -1
  55. data/tracks/javascript/exercises/clock/example.js +8 -11
  56. metadata +18 -3
  57. data/tracks/java/exercises/crypto-square/.meta/src/reference/java/Crypto.java +0 -74
@@ -28,10 +28,9 @@ public class AnagramTest {
28
28
 
29
29
  @Ignore("Remove to run test")
30
30
  @Test
31
- public void testDetectLongerAnagram() {
32
- Anagram detector = new Anagram("listen");
33
- List<String> anagrams = detector.match(Arrays.asList("enlists", "google", "inlets", "banana"));
34
- assertThat(anagrams, hasItem("inlets"));
31
+ public void testDoesNotConfuseDifferentDuplicates() {
32
+ Anagram detector = new Anagram("galea");
33
+ assertTrue(detector.match(Collections.singletonList("eagle")).isEmpty());
35
34
  }
36
35
 
37
36
  @Ignore("Remove to run test")
@@ -44,17 +43,25 @@ public class AnagramTest {
44
43
 
45
44
  @Ignore("Remove to run test")
46
45
  @Test
47
- public void testDetectMultipleAnagramsForLongerWord() {
48
- Anagram detector = new Anagram("allergy");
49
- List<String> anagrams = detector.match(Arrays.asList("gallery", "ballerina", "regally", "clergy", "largely", "leading"));
50
- assertThat(anagrams, allOf(hasItem("gallery"), hasItem("largely"), hasItem("regally")));
46
+ public void testEliminateAnagramSubsets() {
47
+ Anagram detector = new Anagram("good");
48
+ assertTrue(detector.match(Arrays.asList("dog", "goody")).isEmpty());
51
49
  }
52
50
 
53
51
  @Ignore("Remove to run test")
54
52
  @Test
55
- public void testDoesNotConfuseDifferentDuplicates() {
56
- Anagram detector = new Anagram("galea");
57
- assertTrue(detector.match(Collections.singletonList("eagle")).isEmpty());
53
+ public void testDetectLongerAnagram() {
54
+ Anagram detector = new Anagram("listen");
55
+ List<String> anagrams = detector.match(Arrays.asList("enlists", "google", "inlets", "banana"));
56
+ assertThat(anagrams, hasItem("inlets"));
57
+ }
58
+
59
+ @Ignore("Remove to run test")
60
+ @Test
61
+ public void testDetectMultipleAnagramsForLongerWord() {
62
+ Anagram detector = new Anagram("allergy");
63
+ List<String> anagrams = detector.match(Arrays.asList("gallery", "ballerina", "regally", "clergy", "largely", "leading"));
64
+ assertThat(anagrams, allOf(hasItem("gallery"), hasItem("regally"), hasItem("largely")));
58
65
  }
59
66
 
60
67
  @Ignore("Remove to run test")
@@ -66,20 +73,6 @@ public class AnagramTest {
66
73
  assertThat(anagrams.size(), is(1));
67
74
  }
68
75
 
69
- @Ignore("Remove to run test")
70
- @Test
71
- public void testIdenticalWordRepeatedIsNotAnagram() {
72
- Anagram detector = new Anagram("go");
73
- assertTrue(detector.match(Collections.singletonList("go Go GO")).isEmpty());
74
- }
75
-
76
- @Ignore("Remove to run test")
77
- @Test
78
- public void testCapitalWordIsNotOwnAnagram() {
79
- Anagram detector = new Anagram("BANANA");
80
- assertTrue(detector.match(Collections.singletonList("Banana")).isEmpty());
81
- }
82
-
83
76
  @Ignore("Remove to run test")
84
77
  @Test
85
78
  public void testEliminateAnagramsWithSameChecksum() {
@@ -89,9 +82,10 @@ public class AnagramTest {
89
82
 
90
83
  @Ignore("Remove to run test")
91
84
  @Test
92
- public void testEliminateAnagramSubsets() {
93
- Anagram detector = new Anagram("good");
94
- assertTrue(detector.match(Arrays.asList("dog", "goody")).isEmpty());
85
+ public void testCaseInsensitiveWhenBothAnagramAndSubjectStartWithUpperCaseLetter() {
86
+ Anagram detector = new Anagram("Orchestra");
87
+ List<String> anagrams = detector.match(Arrays.asList("cashregister", "Carthorse", "radishes"));
88
+ assertThat(anagrams, hasItem("Carthorse"));
95
89
  }
96
90
 
97
91
  @Ignore("Remove to run test")
@@ -112,17 +106,16 @@ public class AnagramTest {
112
106
 
113
107
  @Ignore("Remove to run test")
114
108
  @Test
115
- public void testCaseInsensitiveWhenBothAnagramAndSubjectStartWithUpperCaseLetter() {
116
- Anagram detector = new Anagram("Orchestra");
117
- List<String> anagrams = detector.match(Arrays.asList("cashregister", "Carthorse", "radishes"));
118
- assertThat(anagrams, hasItem("Carthorse"));
109
+ public void testWordIsNotItsOwnAnagram() {
110
+ Anagram detector = new Anagram("banana");
111
+ assertTrue(detector.match(Collections.singletonList("Banana")).isEmpty());
119
112
  }
120
113
 
121
114
  @Ignore("Remove to run test")
122
115
  @Test
123
- public void testWordIsNotItsOwnAnagram() {
124
- Anagram detector = new Anagram("banana");
125
- assertTrue(detector.match(Collections.singletonList("Banana")).isEmpty());
116
+ public void testIdenticalWordRepeatedIsNotAnagram() {
117
+ Anagram detector = new Anagram("go");
118
+ assertTrue(detector.match(Collections.singletonList("go Go GO")).isEmpty());
126
119
  }
127
120
 
128
121
  @Ignore("Remove to run test")
@@ -131,4 +124,12 @@ public class AnagramTest {
131
124
  Anagram detector = new Anagram("tapper");
132
125
  assertTrue(detector.match(Collections.singletonList("patter")).isEmpty());
133
126
  }
127
+
128
+ @Ignore("Remove to run test")
129
+ @Test
130
+ public void testCapitalWordIsNotOwnAnagram() {
131
+ Anagram detector = new Anagram("BANANA");
132
+ assertTrue(detector.match(Collections.singletonList("Banana")).isEmpty());
133
+ }
134
+
134
135
  }
@@ -21,11 +21,12 @@ public class AtbashTest {
21
21
  @Parameters(name = "{index}: expected plaintext \"{0}\" to encode to ciphertext \"{1}\".")
22
22
  public static Collection<Object[]> data() {
23
23
  return Arrays.asList(new Object[][]{
24
- {"no", "ml"},
25
24
  {"yes", "bvh"},
25
+ {"no", "ml"},
26
26
  {"OMG", "lnt"},
27
+ {"O M G", "lnt"},
27
28
  {"mindblowingly", "nrmwy oldrm tob"},
28
- {"Testing, 1 2 3, testing.", "gvhgr mt123 gvhgr mt"},
29
+ {"Testing,1 2 3, testing.", "gvhgr mt123 gvhgr mt"},
29
30
  {"Truth is fiction.", "gifgs rhurx grlm"},
30
31
  {"The quick brown fox jumps over the lazy dog.", "gsvjf rxpyi ldmul cqfnk hlevi gsvoz abwlt"}
31
32
  });
@@ -7,6 +7,9 @@ class Bob {
7
7
  if (isSilence(input)) {
8
8
  return "Fine. Be that way!";
9
9
  }
10
+ if (isShout(input) && isQuestion(input)) {
11
+ return "Calm down, I know what I'm doing!";
12
+ }
10
13
  if (isShout(input)) {
11
14
  return "Whoa, chill out!";
12
15
  }
@@ -30,6 +30,15 @@ public class BobTest {
30
30
  );
31
31
  }
32
32
 
33
+ @Ignore("Remove to run test")
34
+ @Test
35
+ public void shoutingGibberish() {
36
+ assertEquals(
37
+ "Whoa, chill out!",
38
+ bob.hey("FCECDFCAAB")
39
+ );
40
+ }
41
+
33
42
  @Ignore("Remove to run test")
34
43
  @Test
35
44
  public void askingAQuestion() {
@@ -48,6 +57,15 @@ public class BobTest {
48
57
  );
49
58
  }
50
59
 
60
+ @Ignore("Remove to run test")
61
+ @Test
62
+ public void askingGibberish() {
63
+ assertEquals(
64
+ "Sure.",
65
+ bob.hey("fffbbcbeab?")
66
+ );
67
+ }
68
+
51
69
  @Ignore("Remove to run test")
52
70
  @Test
53
71
  public void talkingForcefully() {
@@ -69,7 +87,7 @@ public class BobTest {
69
87
  @Test
70
88
  public void forcefulQuestions() {
71
89
  assertEquals(
72
- "Whoa, chill out!", bob.hey("WHAT THE HELL WERE YOU THINKING?")
90
+ "Calm down, I know what I'm doing!", bob.hey("WHAT THE HELL WERE YOU THINKING?")
73
91
  );
74
92
  }
75
93
 
@@ -107,33 +125,25 @@ public class BobTest {
107
125
 
108
126
  @Ignore("Remove to run test")
109
127
  @Test
110
- public void shoutingWithUmlauts() {
111
- assertEquals(
112
- "Whoa, chill out!", bob.hey("\u00dcML\u00c4\u00dcTS!")
113
- );
114
- }
115
-
116
- @Ignore("Remove to run test")
117
- @Test
118
- public void calmlySpeakingWithUmlauts() {
128
+ public void shoutingWithNoExclamationMark() {
119
129
  assertEquals(
120
- "Whatever.", bob.hey("\u00dcML\u00e4\u00dcTS!")
130
+ "Whoa, chill out!", bob.hey("I HATE YOU")
121
131
  );
122
132
  }
123
133
 
124
134
  @Ignore("Remove to run test")
125
135
  @Test
126
- public void shoutingWithNoExclamationMark() {
136
+ public void statementContainingQuestionMark() {
127
137
  assertEquals(
128
- "Whoa, chill out!", bob.hey("I HATE YOU")
138
+ "Whatever.", bob.hey("Ending with ? means a question.")
129
139
  );
130
140
  }
131
141
 
132
142
  @Ignore("Remove to run test")
133
143
  @Test
134
- public void statementContainingQuestionMark() {
144
+ public void nonLettersWithQuestion() {
135
145
  assertEquals(
136
- "Whatever.", bob.hey("Ending with ? means a question.")
146
+ "Sure.", bob.hey(":) ?")
137
147
  );
138
148
  }
139
149
 
@@ -160,4 +170,58 @@ public class BobTest {
160
170
  "Fine. Be that way!", bob.hey(" ")
161
171
  );
162
172
  }
173
+
174
+ @Ignore("Remove to run test")
175
+ @Test
176
+ public void alternateSilence() {
177
+ assertEquals(
178
+ "Fine. Be that way!", bob.hey("\t\t\t\t\t\t\t\t\t\t")
179
+ );
180
+ }
181
+
182
+ @Ignore("Remove to run test")
183
+ @Test
184
+ public void multipleLineQuestion() {
185
+ assertEquals(
186
+ "Whatever.",
187
+ bob.hey("\nDoes this cryogenic chamber make me look fat?\nno")
188
+ );
189
+ }
190
+
191
+ @Ignore("Remove to run test")
192
+ @Test
193
+ public void startingWithWhitespace() {
194
+ assertEquals(
195
+ "Whatever.",
196
+ bob.hey(" hmmmmmmm...")
197
+ );
198
+ }
199
+
200
+ @Ignore("Remove to run test")
201
+ @Test
202
+ public void endingWithWhiteSpace() {
203
+ assertEquals(
204
+ "Sure.",
205
+ bob.hey("Okay if like my spacebar quite a bit? ")
206
+ );
207
+ }
208
+
209
+ @Ignore("Remove to run test")
210
+ @Test
211
+ public void otherWhiteSpace() {
212
+ assertEquals(
213
+ "Fine. Be that way!",
214
+ bob.hey("\n\r \t")
215
+ );
216
+ }
217
+
218
+ @Ignore("Remove to run test")
219
+ @Test
220
+ public void nonQuestionEndingWithWhiteSpace() {
221
+ assertEquals(
222
+ "Whatever.",
223
+ bob.hey("This is a statement ending with whitespace ")
224
+ );
225
+ }
226
+
163
227
  }
@@ -0,0 +1,62 @@
1
+ import java.util.ArrayList;
2
+ import java.util.List;
3
+
4
+ class CryptoSquare {
5
+
6
+ private String ciphertext;
7
+
8
+ CryptoSquare(String plaintext) {
9
+ this.ciphertext = calculateCiphertext(plaintext);
10
+ }
11
+
12
+ String getCiphertext() {
13
+ return ciphertext;
14
+ }
15
+
16
+ private String calculateCiphertext(String plaintext) {
17
+ String normalizedPlaintext = normalizeText(plaintext);
18
+ StringBuilder ciphertext = new StringBuilder(normalizedPlaintext.length());
19
+ int squareSize = calculateSquareSize(normalizedPlaintext);
20
+
21
+ for (int i = 0; i < squareSize; i++) {
22
+ for (String segment : getSegments(normalizedPlaintext, squareSize)) {
23
+ if (i < segment.length()) {
24
+ ciphertext.append(segment.charAt(i));
25
+ } else {
26
+ ciphertext.append(" ");
27
+ }
28
+ }
29
+
30
+ if (i < squareSize - 1) {
31
+ ciphertext.append(" ");
32
+ }
33
+ }
34
+
35
+ return ciphertext.toString();
36
+ }
37
+
38
+ private String normalizeText(String plaintext) {
39
+ return plaintext.toLowerCase().codePoints()
40
+ .filter(Character::isLetterOrDigit)
41
+ .collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append)
42
+ .toString();
43
+ }
44
+
45
+ private int calculateSquareSize(String normalizedPlaintext) {
46
+ return (int) Math.ceil(Math.sqrt(normalizedPlaintext.length()));
47
+ }
48
+
49
+ private List<String> getSegments(String normalizedPlaintext, int squareSize) {
50
+ List<String> segments = new ArrayList<>();
51
+
52
+ for (int i = 0; i < normalizedPlaintext.length(); i += squareSize) {
53
+ if (i + squareSize < normalizedPlaintext.length()) {
54
+ segments.add(normalizedPlaintext.substring(i, i + squareSize));
55
+ } else {
56
+ segments.add(normalizedPlaintext.substring(i));
57
+ }
58
+ }
59
+
60
+ return segments;
61
+ }
62
+ }
@@ -8,138 +8,65 @@ import static org.junit.Assert.assertEquals;
8
8
 
9
9
  public class CryptoSquareTest {
10
10
 
11
-
12
- @Test
13
- public void strangeCharactersAreStrippedDuringNormalization() {
14
- Crypto crypto = new Crypto("s#$%^&plunk");
15
- String expectedOutput = "splunk";
16
-
17
- assertEquals(expectedOutput, crypto.getNormalizedPlaintext());
18
- }
19
-
20
- @Ignore("Remove to run test")
21
- @Test
22
- public void lettersAreLowerCasedDuringNormalization() {
23
- Crypto crypto = new Crypto("WHOA HEY!");
24
- String expectedOutput = "whoahey";
25
-
26
- assertEquals(expectedOutput, crypto.getNormalizedPlaintext());
27
- }
28
-
29
- @Ignore("Remove to run test")
30
- @Test
31
- public void numbersAreKeptDuringNormalization() {
32
- Crypto crypto = new Crypto("1, 2, 3, GO!");
33
- String expectedOutput = "123go";
34
-
35
- assertEquals(expectedOutput, crypto.getNormalizedPlaintext());
36
- }
37
-
38
- @Ignore("Remove to run test")
39
- @Test
40
- public void smallestSquareSizeIs2() {
41
- Crypto crypto = new Crypto("1234");
42
- int expectedOutput = 2;
43
-
44
- assertEquals(expectedOutput, crypto.getSquareSize());
45
- }
46
-
47
- @Ignore("Remove to run test")
48
- @Test
49
- public void sizeOfTextWhoseLengthIsPerfectSquareIsItsSquareRoot() {
50
- Crypto crypto = new Crypto("123456789");
51
- int expectedOutput = 3;
52
-
53
- assertEquals(expectedOutput, crypto.getSquareSize());
54
- }
55
-
56
- @Ignore("Remove to run test")
57
- @Test
58
- public void sizeOfTextWhoseLengthIsNoPerfectSquareIsNextBiggestSquareRoot() {
59
- Crypto crypto = new Crypto("123456789abc");
60
- int expectedOutput = 4;
61
-
62
- assertEquals(expectedOutput, crypto.getSquareSize());
63
- }
64
-
65
- @Ignore("Remove to run test")
66
- @Test
67
- public void sizeIsDeterminedByNormalizedText() {
68
- Crypto crypto = new Crypto("Oh hey, this is nuts!");
69
- int expectedOutput = 4;
70
-
71
- assertEquals(expectedOutput, crypto.getSquareSize());
72
- }
73
-
74
- @Ignore("Remove to run test")
75
- @Test
76
- public void segmentsAreSplitBySquareSize() {
77
- Crypto crypto = new Crypto("Never vex thine heart with idle woes");
78
- List<String> expectedOutput = Arrays.asList(new String[]{"neverv", "exthin", "eheart", "withid", "lewoes"});
79
-
80
- assertEquals(expectedOutput, crypto.getPlaintextSegments());
81
- }
82
-
83
- @Ignore("Remove to run test")
84
11
  @Test
85
- public void segmentsAreSplitBySquareSizeUntilTextRunsOut() {
86
- Crypto crypto = new Crypto("ZOMG! ZOMBIES!!!");
87
- List<String> expectedOutput = Arrays.asList(new String[]{"zomg", "zomb", "ies"});
12
+ public void emptyPlaintextResultsInEmptyCiphertext() {
13
+ CryptoSquare cryptoSquare = new CryptoSquare("");
14
+ String expectedOutput = "";
88
15
 
89
- assertEquals(expectedOutput, crypto.getPlaintextSegments());
16
+ assertEquals(expectedOutput, cryptoSquare.getCiphertext());
90
17
  }
91
18
 
92
19
  @Ignore("Remove to run test")
93
20
  @Test
94
- public void cipherTextCombinesTextByColumn() {
95
- Crypto crypto = new Crypto("First, solve the problem. Then, write the code.");
96
- String expectedOutput = "foeewhilpmrervrticseohtottbeedshlnte";
21
+ public void lettersAreLowerCasedDuringEncryption() {
22
+ CryptoSquare cryptoSquare = new CryptoSquare("A");
23
+ String expectedOutput = "a";
97
24
 
98
- assertEquals(expectedOutput, crypto.getCipherText());
25
+ assertEquals(expectedOutput, cryptoSquare.getCiphertext());
99
26
  }
100
27
 
101
28
  @Ignore("Remove to run test")
102
29
  @Test
103
- public void cipherTextSkipsCellsWithNoText() {
104
- Crypto crypto = new Crypto("Time is an illusion. Lunchtime doubly so.");
105
- String expectedOutput = "tasneyinicdsmiohooelntuillibsuuml";
30
+ public void spacesAreRemovedDuringEncryption() {
31
+ CryptoSquare cryptoSquare = new CryptoSquare(" b ");
32
+ String expectedOutput = "b";
106
33
 
107
- assertEquals(expectedOutput, crypto.getCipherText());
34
+ assertEquals(expectedOutput, cryptoSquare.getCiphertext());
108
35
  }
109
36
 
110
37
  @Ignore("Remove to run test")
111
38
  @Test
112
- public void normalizedCipherTextIsSplitByHeightOfSquare() {
113
- Crypto crypto = new Crypto("Vampires are people too!");
114
- String expectedOutput = "vrel aepe mset paoo irpo";
39
+ public void punctuationIsRemovedDuringEncryption() {
40
+ CryptoSquare cryptoSquare = new CryptoSquare("@1,%!");
41
+ String expectedOutput = "1";
115
42
 
116
- assertEquals(expectedOutput, crypto.getNormalizedCipherText());
43
+ assertEquals(expectedOutput, cryptoSquare.getCiphertext());
117
44
  }
118
45
 
119
46
  @Ignore("Remove to run test")
120
47
  @Test
121
- public void normalizedCipherNotExactlyDivisibleBy5SpillsIntoSmallerSegment() {
122
- Crypto crypto = new Crypto("Madness, and then illumination.");
123
- String expectedOutput = "msemo aanin dnin ndla etlt shui";
48
+ public void nineCharacterPlaintextResultsInThreeChunksOfThreeCharacters() {
49
+ CryptoSquare cryptoSquare = new CryptoSquare("This is fun!");
50
+ String expectedOutput = "tsf hiu isn";
124
51
 
125
- assertEquals(expectedOutput, crypto.getNormalizedCipherText());
52
+ assertEquals(expectedOutput, cryptoSquare.getCiphertext());
126
53
  }
127
54
 
128
55
  @Ignore("Remove to run test")
129
56
  @Test
130
- public void normalizedCipherIsSplitIntoSegmentsOfCorrectSize() {
131
- Crypto crypto = new Crypto("If man was meant to stay on the ground god would have given us roots");
132
- String expectedOutput = "imtgdvs fearwer mayoogo anouuio ntnnlvt wttddes aohghn sseoau";
57
+ public void eightCharacterPlaintextResultsInThreeChunksWithATrailingSpace() {
58
+ CryptoSquare cryptoSquare = new CryptoSquare("Chill out.");
59
+ String expectedOutput = "clu hlt io ";
133
60
 
134
- assertEquals(expectedOutput, crypto.getNormalizedCipherText());
61
+ assertEquals(expectedOutput, cryptoSquare.getCiphertext());
135
62
  }
136
63
 
137
64
  @Ignore("Remove to run test")
138
65
  @Test
139
- public void normalizedCipherTextIsSplitIntoSegmentsOfCorrectSizeWithPunctuation() {
140
- Crypto crypto = new Crypto("Have a nice day. Feed the dog & chill out!");
141
- String expectedOutput = "hifei acedl veeol eddgo aatcu nyhht";
66
+ public void fiftyFourCharacterPlaintextResultsInSevenChunksWithTrailingSpaces() {
67
+ CryptoSquare cryptoSquare = new CryptoSquare("If man was meant to stay on the ground, god would have given us roots.");
68
+ String expectedOutput = "imtgdvs fearwer mayoogo anouuio ntnnlvt wttddes aohghn sseoau ";
142
69
 
143
- assertEquals(expectedOutput, crypto.getNormalizedCipherText());
70
+ assertEquals(expectedOutput, cryptoSquare.getCiphertext());
144
71
  }
145
72
  }