From 879aa36a55ad33e80a1f5dfd8c3906897770fbd6 Mon Sep 17 00:00:00 2001 From: Luis Romero Date: Sun, 15 Apr 2018 16:46:37 -0400 Subject: [PATCH 1/4] created most tests/methods, working on final few --- src/main/java/io/zipcoder/Digits.java | 82 +++++++++++++++++++ src/main/java/io/zipcoder/Problem6.java | 43 ++++++++++ src/test/java/io/zipcoder/DigitsTest.java | 29 +++++++ src/test/java/io/zipcoder/Problem6Test.java | 88 +++++++++++++++++++++ 4 files changed, 242 insertions(+) create mode 100644 src/main/java/io/zipcoder/Digits.java create mode 100644 src/test/java/io/zipcoder/DigitsTest.java diff --git a/src/main/java/io/zipcoder/Digits.java b/src/main/java/io/zipcoder/Digits.java new file mode 100644 index 0000000..69fab46 --- /dev/null +++ b/src/main/java/io/zipcoder/Digits.java @@ -0,0 +1,82 @@ +package io.zipcoder; + +public enum Digits { + + ZERO_ZERO(0, "Zero Zero"), + ZERO_ONE(1, "Zero One"), + ZERO_TWO(2, "Zero Two"), + ZERO_THREE(3, "Zero Three"), + ZERO_FOUR(4, "Zero Four"), + ZERO_FIVE(5, "Zero Five"), + ZERO_SIX(6, "Zero Six"), + ZERO_SEVEN(7, "Zero Seven"), + ZERO_EIGHT(8, "Zero Eight"), + ZERO_NINE(9, "Zero Nine"), + TEN(10, "Ten"), + ELEVEN(11, "Eleven"), + TWELVE(12, "Twelve"), + THIRTEEN(13, "Thirteen"), + FOURTEEN(14, "Fourteen"), + FIFTEEN(15, "Fifteen"), + SIXTEEN(16, "Sixteen"), + SEVENTEEN(17, "Seventeen"), + EIGHTEEN(18, "Eighteen"), + NINETEEN(19, "Nineteen"), + TWENTY(20, "Twenty"), + TWENTY_ONE(21, "Twenty One"), + TWENTY_TWO(22, "Twenty Two"), + TWENTY_THREE(23, "Twenty Three"), + TWENTY_FOUR(24, "Twenty Four"), + TWENTY_FIVE(25, "Twenty Five"), + TWENTY_SIX(26, "Twenty Six"), + TWENTY_SEVEN(27, "Twenty Seven"), + TWENTY_EIGHT(28, "Twenty Eight"), + TWENTY_NINE(29, "Twenty Nine"), + THIRTY(30, "Thirty"), + THIRTY_ONE(31, "Thirty One"), + THIRTY_TWO(32, "Thirty Two"), + THIRTY_THREE(33, "Thirty Three"), + THIRTY_FOUR(34, "Thirty Four"), + THIRTY_FIVE(35, "Thirty Five"), + THIRTY_SIX(36, "Thirty Six"), + THIRTY_SEVEN(37, "Thirty Seven"), + THIRTY_EIGHT(38, "Thirty Eight"), + THIRTY_NINE(39, "Thirty Nine"), + FORTY(40, "Forty"), + FORTY_ONE(41, "Forty One"), + FORTY_TWO(42, "Forty Two"), + FORTY_THREE(43, "Forty Three"), + FORTY_FOUR(44, "Forty Four"), + FORTY_FIVE(45, "Forty Five"), + FORTY_SIX(46, "Forty Six"), + FORTY_SEVEN(47, "Forty Seven"), + FORTY_EIGHT(48, "Forty Eight"), + FORTY_NINE(49, "Forty Nine"), + FIFTY(50, "Fifty"), + FIFTY_ONE(51, "Fifty One"), + FIFTY_TWO(52, "Fifty Two"), + FIFTY_THREE(53, "Fifty Three"), + FIFTY_FOUR(54, "Fifty Four"), + FIFTY_FIVE(55, "Fifty Five"), + FIFTY_SIX(56, "Fifty Six"), + FIFTY_SEVEN(57, "Fifty Seven"), + FIFTY_EIGHT(58, "Fifty Eight"), + FIFTY_NINE(59, "Fifty Nine"); + + final int digitsInt; + final String digitsString; + + Digits(int digitsInt, String digitsString) { + this.digitsInt = digitsInt; + this.digitsString = digitsString; + } + + public int toInt() { + return digitsInt; + } + + public String toString() { + return digitsString; + } + +} diff --git a/src/main/java/io/zipcoder/Problem6.java b/src/main/java/io/zipcoder/Problem6.java index 4ee4e64..c49507d 100644 --- a/src/main/java/io/zipcoder/Problem6.java +++ b/src/main/java/io/zipcoder/Problem6.java @@ -1,4 +1,47 @@ package io.zipcoder; public class Problem6 { + + public Problem6() { + + } + + public char isTimeAmOrPm(String timeString) { + int stringLength = timeString.length(); + return timeString.charAt(stringLength - 2); + } + + public String[] timeStringToStringArray(String timeString) { + return removeLastTwoChars(timeString).split(":"); + } + + public String removeLastTwoChars(String timeString) { + return timeString.substring(0, timeString.length() - 2); + } + + public String writeTimeAsMilitary(String timeString) { + return null; + } + + public String writeHourAsMilitary(String hourString) { + int hourStringToDigits = Integer.parseInt(hourString); + return digitsToString(hourStringToDigits); + } + + public String writeMinutesAsMilitary(String minutesString) { + int minutesStringToDigits = Integer.parseInt(minutesString); + return digitsToString(minutesStringToDigits); + } + + public String digitsToString(int digitsToFind) { + for (Digits digits : Digits.values()) { + if (digitsToFind == digits.toInt()) { + return digits.toString(); + } + } + return "Digits not found"; + } + + + } diff --git a/src/test/java/io/zipcoder/DigitsTest.java b/src/test/java/io/zipcoder/DigitsTest.java new file mode 100644 index 0000000..01dbc7c --- /dev/null +++ b/src/test/java/io/zipcoder/DigitsTest.java @@ -0,0 +1,29 @@ +package io.zipcoder; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +public class DigitsTest { + + @Test + public void toIntTest() { + // Given + int expectedHour = 0; + // When + int actualHour = Digits.ZERO_ZERO.toInt(); + // Then + Assert.assertEquals(expectedHour, actualHour); + } + + @Test + public void toStringTest() { + // Given + String expectedHour = "Zero Zero"; + // When + String actualHour = Digits.ZERO_ZERO.toString(); + // Then + Assert.assertEquals(expectedHour, actualHour); + } + +} diff --git a/src/test/java/io/zipcoder/Problem6Test.java b/src/test/java/io/zipcoder/Problem6Test.java index d262e88..19a67dd 100644 --- a/src/test/java/io/zipcoder/Problem6Test.java +++ b/src/test/java/io/zipcoder/Problem6Test.java @@ -1,4 +1,92 @@ package io.zipcoder; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + public class Problem6Test { + + private Problem6 problem6; + private String timeStringPm0 = "1:30pm"; + + @Before + public void setup() { + problem6 = new Problem6(); + } + + @Test + public void isTimeAmOrPmTest() { + // Given + char expectedSecondToLastChar = 'p'; + // When + char actualSecondToLastChar = problem6.isTimeAmOrPm(timeStringPm0); + // Then + Assert.assertEquals(expectedSecondToLastChar, actualSecondToLastChar); + } + + @Test + public void timeStringToStringArrayTest() { + // Given + String[] expectedStringArr = { "1", "30"}; + // When + String[] actualStringArr = problem6.timeStringToStringArray(timeStringPm0); + // Then + Assert.assertArrayEquals(expectedStringArr, actualStringArr); + } + + @Test + public void removeLastTwoCharsTest() { + // Given + String expectedString = "1:30"; + // When + String actualString = problem6.removeLastTwoChars(timeStringPm0); + // Then + Assert.assertEquals(expectedString, actualString); + } + + @Test + public void writeTimeAsMilitaryTest() { + // Given + String expectedHourMilitary = "Zero One Hundred and Thirty Hours"; + // When + String actualHourMilitary = problem6.writeTimeAsMilitary(timeStringPm0); + // Then + Assert.assertEquals(expectedHourMilitary, actualHourMilitary); + } + + @Test + public void writeHourAsMilitaryTest() { + // Given + String hourString = "01"; + String expectedHourMilitary = "Zero One"; + // When + String actualHourMilitary = problem6.writeHourAsMilitary(hourString); + // Then + Assert.assertEquals(expectedHourMilitary, actualHourMilitary); + } + + @Test + public void writeMinutesAsMilitaryTest() { + // Given + String minutesString = "59"; + String expectedMinutesMilitary = "Fifty Nine"; + // When + String actualMinutesMilitary = problem6.writeMinutesAsMilitary(minutesString); + // Then + Assert.assertEquals(expectedMinutesMilitary, actualMinutesMilitary); + } + + @Test + public void digitsToStringTest() { + // Given + int digits = 0; + String expectedHourMilitary = "Zero Zero"; + // When + String actualHourMilitary = problem6.digitsToString(digits); + // Then + Assert.assertEquals(expectedHourMilitary, actualHourMilitary); + } + + + } From dfc7e87abb4efc5e9db8c08832201a776a4d75ef Mon Sep 17 00:00:00 2001 From: Luis Romero Date: Sun, 15 Apr 2018 17:41:17 -0400 Subject: [PATCH 2/4] everything works as one class and one enum class, tests included --- src/main/java/io/zipcoder/Problem6.java | 42 ++++++++++++++------- src/test/java/io/zipcoder/Problem6Test.java | 24 +----------- 2 files changed, 29 insertions(+), 37 deletions(-) diff --git a/src/main/java/io/zipcoder/Problem6.java b/src/main/java/io/zipcoder/Problem6.java index c49507d..08a28c2 100644 --- a/src/main/java/io/zipcoder/Problem6.java +++ b/src/main/java/io/zipcoder/Problem6.java @@ -6,6 +6,28 @@ public Problem6() { } + public String writeTimeAsMilitary(String timeString) { + char timeOfDay = isTimeAmOrPm(timeString); + String[] timeStringArray = timeStringToStringArray(timeString); + + String hourDigitsAsString = timeStringArray[0]; + int hourDigits = Integer.parseInt(hourDigitsAsString); + if ((timeOfDay == 'p') && (hourDigits != 12)) { + hourDigits += 12; + } + String minutesDigitsAsString = timeStringArray[1]; + int minutesDigits = Integer.parseInt(minutesDigitsAsString); + + StringBuilder sb = new StringBuilder(); + + sb.append(digitsToString(hourDigits)); + sb.append(" Hundred and "); + sb.append(digitsToString(minutesDigits)); + sb.append(" Hours"); + + return sb.toString(); + } + public char isTimeAmOrPm(String timeString) { int stringLength = timeString.length(); return timeString.charAt(stringLength - 2); @@ -19,20 +41,6 @@ public String removeLastTwoChars(String timeString) { return timeString.substring(0, timeString.length() - 2); } - public String writeTimeAsMilitary(String timeString) { - return null; - } - - public String writeHourAsMilitary(String hourString) { - int hourStringToDigits = Integer.parseInt(hourString); - return digitsToString(hourStringToDigits); - } - - public String writeMinutesAsMilitary(String minutesString) { - int minutesStringToDigits = Integer.parseInt(minutesString); - return digitsToString(minutesStringToDigits); - } - public String digitsToString(int digitsToFind) { for (Digits digits : Digits.values()) { if (digitsToFind == digits.toInt()) { @@ -42,6 +50,12 @@ public String digitsToString(int digitsToFind) { return "Digits not found"; } + public static void main(String[] args) { + Problem6 problem6 = new Problem6(); + String time = "3:28pm"; + System.out.println(time); + System.out.println(problem6.writeTimeAsMilitary(time)); + } } diff --git a/src/test/java/io/zipcoder/Problem6Test.java b/src/test/java/io/zipcoder/Problem6Test.java index 19a67dd..a1ac806 100644 --- a/src/test/java/io/zipcoder/Problem6Test.java +++ b/src/test/java/io/zipcoder/Problem6Test.java @@ -47,35 +47,13 @@ public void removeLastTwoCharsTest() { @Test public void writeTimeAsMilitaryTest() { // Given - String expectedHourMilitary = "Zero One Hundred and Thirty Hours"; + String expectedHourMilitary = "Thirteen Hundred and Thirty Hours"; // When String actualHourMilitary = problem6.writeTimeAsMilitary(timeStringPm0); // Then Assert.assertEquals(expectedHourMilitary, actualHourMilitary); } - @Test - public void writeHourAsMilitaryTest() { - // Given - String hourString = "01"; - String expectedHourMilitary = "Zero One"; - // When - String actualHourMilitary = problem6.writeHourAsMilitary(hourString); - // Then - Assert.assertEquals(expectedHourMilitary, actualHourMilitary); - } - - @Test - public void writeMinutesAsMilitaryTest() { - // Given - String minutesString = "59"; - String expectedMinutesMilitary = "Fifty Nine"; - // When - String actualMinutesMilitary = problem6.writeMinutesAsMilitary(minutesString); - // Then - Assert.assertEquals(expectedMinutesMilitary, actualMinutesMilitary); - } - @Test public void digitsToStringTest() { // Given From 3c18cb2ac2967b31971754c3b33c78a3fd1f375c Mon Sep 17 00:00:00 2001 From: Luis Romero Date: Sun, 15 Apr 2018 18:33:30 -0400 Subject: [PATCH 3/4] replaced enum with map, to keep it all in one class --- src/main/java/io/zipcoder/Problem6.java | 37 ++++++++++++++++++--- src/test/java/io/zipcoder/Problem6Test.java | 17 +++++++--- 2 files changed, 46 insertions(+), 8 deletions(-) diff --git a/src/main/java/io/zipcoder/Problem6.java b/src/main/java/io/zipcoder/Problem6.java index 08a28c2..624189d 100644 --- a/src/main/java/io/zipcoder/Problem6.java +++ b/src/main/java/io/zipcoder/Problem6.java @@ -1,9 +1,39 @@ package io.zipcoder; +import java.util.LinkedHashMap; +import java.util.Map; + public class Problem6 { + private Map map; + private String[] digitsAsMilitaryWords = { + "Zero Zero", "Zero One", "Zero Two", "Zero Three", "Zero Four", + "Zero Five", "Zero Six", "Zero Seven", "Zero Eight", "Zero Nine", + "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", + "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen", + "Twenty", "Twenty One", "Twenty Two", "Twenty Three", "Twenty Four", + "Twenty Five", "Twenty Six", "Twenty Seven", "Twenty Eight", "Twenty Nine", + "Thirty", "Thirty One", "Thirty Two", "Thirty Three", "Thirty Four", + "Thirty Five", "Thirty Six", "Thirty Seven", "Thirty Eight", "Thirty Nine", + "Forty", "Forty One", "Forty Two", "Forty Three", "Forty Four", + "Forty Five", "Forty Six", "Forty Seven", "Forty Eight", "Forty Nine", + "Fifty", "Fifty One", "Fifty Two", "Fifty Three", "Fifty Four", + "Fifty Five", "Fifty Six", "Fifty Seven", "Fifty Eight", "Fifty Nine" + }; + public Problem6() { + this.map = new LinkedHashMap(); + this.addDigitsAsMilitaryWordsToMap(); + } + public Map getMap() { + return map; + } + + public void addDigitsAsMilitaryWordsToMap() { + for (int i = 0; i < 60; i++) { + map.put(i, digitsAsMilitaryWords[i]); + } } public String writeTimeAsMilitary(String timeString) { @@ -20,9 +50,9 @@ public String writeTimeAsMilitary(String timeString) { StringBuilder sb = new StringBuilder(); - sb.append(digitsToString(hourDigits)); + sb.append(map.get(hourDigits)); sb.append(" Hundred and "); - sb.append(digitsToString(minutesDigits)); + sb.append(map.get(minutesDigits)); sb.append(" Hours"); return sb.toString(); @@ -41,7 +71,7 @@ public String removeLastTwoChars(String timeString) { return timeString.substring(0, timeString.length() - 2); } - public String digitsToString(int digitsToFind) { + public String digitsToStringFromDigitsEnum(int digitsToFind) { for (Digits digits : Digits.values()) { if (digitsToFind == digits.toInt()) { return digits.toString(); @@ -57,5 +87,4 @@ public static void main(String[] args) { System.out.println(problem6.writeTimeAsMilitary(time)); } - } diff --git a/src/test/java/io/zipcoder/Problem6Test.java b/src/test/java/io/zipcoder/Problem6Test.java index a1ac806..563a50d 100644 --- a/src/test/java/io/zipcoder/Problem6Test.java +++ b/src/test/java/io/zipcoder/Problem6Test.java @@ -14,6 +14,17 @@ public void setup() { problem6 = new Problem6(); } + @Test + public void Problem6DefaultConstructorTest() { + // Given + int expectedInt = 39; + String expectedString = "Thirty Nine"; + // When + String actualString = problem6.getMap().get(expectedInt); + // Then + Assert.assertEquals(expectedString, actualString); + } + @Test public void isTimeAmOrPmTest() { // Given @@ -55,16 +66,14 @@ public void writeTimeAsMilitaryTest() { } @Test - public void digitsToStringTest() { + public void digitsToStringFromDigitsEnumTest() { // Given int digits = 0; String expectedHourMilitary = "Zero Zero"; // When - String actualHourMilitary = problem6.digitsToString(digits); + String actualHourMilitary = problem6.digitsToStringFromDigitsEnum(digits); // Then Assert.assertEquals(expectedHourMilitary, actualHourMilitary); } - - } From ed2d848ccf4e842f72e3870569c85a4c7e380928 Mon Sep 17 00:00:00 2001 From: Luis Romero Date: Sun, 15 Apr 2018 19:05:11 -0400 Subject: [PATCH 4/4] didn't even need the map, it was redundant, only needed the array I created --- src/main/java/io/zipcoder/Problem6.java | 17 ++++------------- src/test/java/io/zipcoder/Problem6Test.java | 4 ++-- 2 files changed, 6 insertions(+), 15 deletions(-) diff --git a/src/main/java/io/zipcoder/Problem6.java b/src/main/java/io/zipcoder/Problem6.java index 624189d..973ca96 100644 --- a/src/main/java/io/zipcoder/Problem6.java +++ b/src/main/java/io/zipcoder/Problem6.java @@ -5,7 +5,6 @@ public class Problem6 { - private Map map; private String[] digitsAsMilitaryWords = { "Zero Zero", "Zero One", "Zero Two", "Zero Three", "Zero Four", "Zero Five", "Zero Six", "Zero Seven", "Zero Eight", "Zero Nine", @@ -22,18 +21,10 @@ public class Problem6 { }; public Problem6() { - this.map = new LinkedHashMap(); - this.addDigitsAsMilitaryWordsToMap(); } - public Map getMap() { - return map; - } - - public void addDigitsAsMilitaryWordsToMap() { - for (int i = 0; i < 60; i++) { - map.put(i, digitsAsMilitaryWords[i]); - } + public String[] getDigitsAsMilitaryWords() { + return digitsAsMilitaryWords; } public String writeTimeAsMilitary(String timeString) { @@ -50,9 +41,9 @@ public String writeTimeAsMilitary(String timeString) { StringBuilder sb = new StringBuilder(); - sb.append(map.get(hourDigits)); + sb.append(digitsAsMilitaryWords[hourDigits]); sb.append(" Hundred and "); - sb.append(map.get(minutesDigits)); + sb.append(digitsAsMilitaryWords[minutesDigits]); sb.append(" Hours"); return sb.toString(); diff --git a/src/test/java/io/zipcoder/Problem6Test.java b/src/test/java/io/zipcoder/Problem6Test.java index 563a50d..48bf611 100644 --- a/src/test/java/io/zipcoder/Problem6Test.java +++ b/src/test/java/io/zipcoder/Problem6Test.java @@ -15,12 +15,12 @@ public void setup() { } @Test - public void Problem6DefaultConstructorTest() { + public void getDigitsAsMilitaryWordsTest() { // Given int expectedInt = 39; String expectedString = "Thirty Nine"; // When - String actualString = problem6.getMap().get(expectedInt); + String actualString = problem6.getDigitsAsMilitaryWords()[expectedInt]; // Then Assert.assertEquals(expectedString, actualString); }