Преглед изворни кода

Added test cases as per #1141 (#1224)

* Added Test Cases and if statements

* Added version file

* Added test messages
Timoleon Latinopoulos пре 8 година
родитељ
комит
3631108c0d

+ 10
- 2
exercises/phone-number/.meta/src/reference/java/PhoneNumber.java Прегледај датотеку

@@ -9,8 +9,8 @@ public class PhoneNumber {
9 9
     private String extractDigits(String dirtyNumber) {
10 10
         StringBuilder stringBuilder = new StringBuilder();
11 11
         for (char c : dirtyNumber.toCharArray()) {
12
-            if (c == ' ' || c == '.' || c == '(' || c == ')' || c == '-') {
13
-                // Remove spaces, dots, parentheses and hyphens
12
+            if (c == ' ' || c == '.' || c == '(' || c == ')' || c == '-' || c == '+') {
13
+                // Remove spaces, dots, parentheses, hyphens and pluses
14 14
                 continue;
15 15
             }
16 16
             if (!Character.isDigit(c)) {
@@ -34,6 +34,14 @@ public class PhoneNumber {
34 34
                 throw new IllegalArgumentException("Can only have 11 digits if number starts with '1'");
35 35
             }
36 36
         }
37
+        
38
+        if (number.startsWith("0") || number.startsWith("1")){
39
+            throw new IllegalArgumentException("Illegal Area Or Exchange Code. "
40
+                    + "Only 2-9 are valid digits");
41
+        } else if (number.charAt(3) == '0' || number.charAt(3) == '1'){
42
+            throw new IllegalArgumentException("Illegal Area Or Exchange Code. "
43
+                    + "Only 2-9 are valid digits");
44
+        } 
37 45
 
38 46
         return number;
39 47
     }

+ 1
- 0
exercises/phone-number/.meta/version Прегледај датотеку

@@ -0,0 +1 @@
1
+1.3.0

+ 56
- 19
exercises/phone-number/src/test/java/PhoneNumberTest.java Прегледај датотеку

@@ -11,14 +11,16 @@ public class PhoneNumberTest {
11 11
             "Can only have 11 digits if number starts with '1'";
12 12
     private final static String illegalCharacterExceptionMessage =
13 13
             "Illegal character in phone number. Only digits, spaces, parentheses, hyphens or dots accepted.";
14
+    private final static String illegalAreaOrExchangeCodeMessage =
15
+            "Illegal Area Or Exchange Code. Only 2-9 are valid digits";
14 16
 
15 17
     @Rule
16 18
     public ExpectedException expectedException = ExpectedException.none();
17 19
 
18 20
     @Test
19
-    public void cleansNumber() {
20
-        final String expectedNumber = "1234567890";
21
-        final String actualNumber = new PhoneNumber("(123) 456-7890").getNumber();
21
+    public void cleansTheNumber() {
22
+        final String expectedNumber = "2234567890";
23
+        final String actualNumber = new PhoneNumber("(223) 456-7890").getNumber();
22 24
 
23 25
         assertEquals(
24 26
                 expectedNumber, actualNumber
@@ -27,9 +29,9 @@ public class PhoneNumberTest {
27 29
 
28 30
     @Ignore("Remove to run test")
29 31
     @Test
30
-    public void cleansNumberWithDots() {
31
-        final String expectedNumber = "1234567890";
32
-        final String actualNumber = new PhoneNumber("123.456.7890").getNumber();
32
+    public void cleansNumbersWithDots() {
33
+        final String expectedNumber = "2234567890";
34
+        final String actualNumber = new PhoneNumber("223.456.7890").getNumber();
33 35
 
34 36
         assertEquals(
35 37
                 expectedNumber, actualNumber
@@ -38,9 +40,9 @@ public class PhoneNumberTest {
38 40
 
39 41
     @Ignore("Remove to run test")
40 42
     @Test
41
-    public void cleansNumberWithMultipleSpaces() {
42
-        final String expectedNumber = "1234567890";
43
-        final String actualNumber = new PhoneNumber("123 456   7890   ").getNumber();
43
+    public void cleansNumbersWithMultipleSpaces() {
44
+        final String expectedNumber = "2234567890";
45
+        final String actualNumber = new PhoneNumber("223 456   7890   ").getNumber();
44 46
 
45 47
         assertEquals(
46 48
                 expectedNumber, actualNumber
@@ -57,17 +59,28 @@ public class PhoneNumberTest {
57 59
 
58 60
     @Ignore("Remove to run test")
59 61
     @Test
60
-    public void invalidWhen11Digits() {
62
+    public void invalidWhen11DigitsDoesNotStartWith1() {
61 63
         expectedException.expect(IllegalArgumentException.class);
62 64
         expectedException.expectMessage(numberIs11DigitsButDoesNotStartWith1ExceptionMessage);
63
-        new PhoneNumber("21234567890");
65
+        new PhoneNumber("22234567890");
64 66
     }
65 67
 
66 68
     @Ignore("Remove to run test")
67 69
     @Test
68
-    public void validWhen11DigitsAndFirstIs1() {
69
-        final String expectedNumber = "1234567890";
70
-        final String actualNumber = new PhoneNumber("11234567890").getNumber();
70
+    public void validWhen11DigitsAndStartingWith1() {
71
+        final String expectedNumber = "2234567890";
72
+        final String actualNumber = new PhoneNumber("12234567890").getNumber();
73
+
74
+        assertEquals(
75
+                expectedNumber, actualNumber
76
+        );
77
+    }
78
+    
79
+    @Ignore("Remove to run test")
80
+    @Test
81
+    public void validWhen11DigitsAndStartingWith1EvenWithPunctuation() {
82
+        final String expectedNumber = "2234567890";
83
+        final String actualNumber = new PhoneNumber("+1 (223) 456-7890").getNumber();
71 84
 
72 85
         assertEquals(
73 86
                 expectedNumber, actualNumber
@@ -76,7 +89,7 @@ public class PhoneNumberTest {
76 89
 
77 90
     @Ignore("Remove to run test")
78 91
     @Test
79
-    public void invalidWhen12Digits() {
92
+    public void invalidWhenMoreThan11Digits() {
80 93
         expectedException.expect(IllegalArgumentException.class);
81 94
         expectedException.expectMessage(wrongLengthExceptionMessage);
82 95
         new PhoneNumber("321234567890");
@@ -92,17 +105,41 @@ public class PhoneNumberTest {
92 105
 
93 106
     @Ignore("Remove to run test")
94 107
     @Test
95
-    public void invalidWithPunctuation() {
108
+    public void invalidWithPunctuations() {
96 109
         expectedException.expect(IllegalArgumentException.class);
97 110
         expectedException.expectMessage(illegalCharacterExceptionMessage);
98 111
         new PhoneNumber("123-@:!-7890");
99 112
     }
113
+    
114
+    @Ignore("Remove to run test")
115
+    @Test
116
+    public void invalidIfAreaCodeStartsWith0() {
117
+        expectedException.expect(IllegalArgumentException.class);
118
+        expectedException.expectMessage(illegalAreaOrExchangeCodeMessage);
119
+        new PhoneNumber("(023) 456-7890");
120
+    }
121
+    
122
+    @Ignore("Remove to run test")
123
+    @Test
124
+    public void invalidIfAreaCodeStartsWith1() {
125
+        expectedException.expect(IllegalArgumentException.class);
126
+        expectedException.expectMessage(illegalAreaOrExchangeCodeMessage);
127
+        new PhoneNumber("(123) 456-7890");
128
+    }
129
+    
130
+    @Ignore("Remove to run test")
131
+    @Test
132
+    public void invalidIfExchangeCodeStartsWith0() {
133
+        expectedException.expect(IllegalArgumentException.class);
134
+        expectedException.expectMessage(illegalAreaOrExchangeCodeMessage);
135
+        new PhoneNumber("(223) 056-7890");
136
+    }
100 137
 
101 138
     @Ignore("Remove to run test")
102 139
     @Test
103
-    public void invalidWithRightNumberOfDigitsButLettersMixedIn() {
140
+    public void invalidIfExchangeCodeStartsWith1() {
104 141
         expectedException.expect(IllegalArgumentException.class);
105
-        expectedException.expectMessage(illegalCharacterExceptionMessage);
106
-        new PhoneNumber("1a2b3c4d5e6f7g8h9i0j");
142
+        expectedException.expectMessage(illegalAreaOrExchangeCodeMessage);
143
+        new PhoneNumber("(223) 156-7890");
107 144
     }
108 145
 }