Pārlūkot izejas kodu

finished everything, will consolidate printing presentation

Luis Romero 6 gadus atpakaļ
vecāks
revīzija
e25c3721e0

+ 8
- 0
src/main/java/io/zipcoder/ItemParseException.java Parādīt failu

@@ -32,6 +32,14 @@ public class ItemParseException extends Exception {
32 32
         return errors;
33 33
     }
34 34
 
35
+    public String errorCountAsString() {
36
+        String s = String.format("%-13s", "Errors");
37
+        StringBuilder sb = new StringBuilder();
38
+        sb.append(s);
39
+        sb.append("\t\t" + "seen: " + errorCount + " times");
40
+        return sb.toString();
41
+    }
42
+
35 43
     public String errorsAsString() {
36 44
         StringBuilder sb = new StringBuilder();
37 45
         sb.append("Error count: " + errorCount + "\n");

+ 19
- 2
src/main/java/io/zipcoder/ItemParser.java Parādīt failu

@@ -100,13 +100,30 @@ public class ItemParser {
100 100
                 timeOrTimes = "time";
101 101
             }
102 102
             if (keyName.equals(name)) {
103
-                sb.append("name:   " + capitalizeFirstLetterOnly(name));
104
-                sb.append("\t\tseen: " + itemOrganizer.get(name).size() + " " + timeOrTimes);
103
+                int numberOfEmptyPriceFields = countNumberOfEmptyPriceFields(name);
104
+                int actualCount = itemOrganizer.get(name).size() - numberOfEmptyPriceFields;
105
+                String s = String.format("%-5s%8s", "name:", capitalizeFirstLetterOnly(name));
106
+                sb.append(s);
107
+                sb.append("\t\tseen: " + actualCount + " " + timeOrTimes);
105 108
             }
106 109
         }
107 110
         return sb.toString();
108 111
     }
109 112
 
113
+    public int countNumberOfEmptyPriceFields(String name) {
114
+        int count = 0;
115
+        for (String keyName : itemOrganizer.keySet()) {
116
+            if (keyName.equals(name)) {
117
+                for (Item item : itemOrganizer.get(keyName)) {
118
+                    if (item.getPrice() == 0) {
119
+                        count++;
120
+                    }
121
+                }
122
+            }
123
+        }
124
+        return count;
125
+    }
126
+
110 127
     public String capitalizeFirstLetterOnly(String word) {
111 128
         StringBuilder sb = new StringBuilder();
112 129
         String firstLetterOfWord = word.substring(0,1);

+ 1
- 5
src/main/java/io/zipcoder/Main.java Parādīt failu

@@ -29,12 +29,8 @@ public class Main {
29 29
         System.out.println(itemParser.pricesAndTheirCountAsString(itemParser.getPricesAndTheirCount("cookies")));
30 30
         System.out.println(itemParser.itemNameAndCountAsString("apples"));
31 31
         System.out.println(itemParser.pricesAndTheirCountAsString(itemParser.getPricesAndTheirCount("apples")));
32
+        System.out.println(itemParser.getIpe().errorCountAsString());
32 33
 
33 34
 
34
-
35
-
36
-        System.out.println("*****************************");
37
-        System.out.println(itemParser.getIpe().errorsAsString());
38
-
39 35
     }
40 36
 }

+ 16
- 0
src/test/java/io/zipcoder/ItemParserTest.java Parādīt failu

@@ -17,6 +17,7 @@ public class ItemParserTest {
17 17
 
18 18
     // I "broke" the original String value (I removed "Milk"), because the original String value was good
19 19
     private String rawBrokenSingleItem =    "naMe:;price:3.23;type:Food;expiration:1/25/2016##";
20
+    private String rawBrokenSingleItem2 =   "naMe:Milk;price:;type:Food;expiration:1/25/2016##";
20 21
 
21 22
     private String rawMultipleItems = "naMe:Milk;price:3.23;type:Food;expiration:1/25/2016##"
22 23
                                       +"naME:BreaD;price:1.23;type:Food;expiration:1/02/2016##"
@@ -117,6 +118,21 @@ public class ItemParserTest {
117 118
     }
118 119
 
119 120
     @Test
121
+    public void countNumberOfEmptyPriceFieldsTest() throws ItemParseException {
122
+        // Given
123
+        String expectedName = "milk";
124
+        int expectedEmptyPrice = 1;
125
+        itemParser.parseRawDataIntoItemStringArray(rawBrokenSingleItem2);
126
+        itemParser.createItems();
127
+        // When
128
+        itemParser.addNameAndItemsOfSameNameToItemOrganizer();
129
+        int actualEmptyPrice = itemParser.countNumberOfEmptyPriceFields(expectedName);
130
+        // Then
131
+        Assert.assertEquals(expectedEmptyPrice, actualEmptyPrice);
132
+
133
+    }
134
+
135
+    @Test
120 136
     public void capitalizeFirstLetterOnlyTest() {
121 137
         // Given
122 138
         String word = "word";