Browse Source

Added test cases as per #1141 (#1224)

* Added Test Cases and if statements

* Added version file

* Added test messages
Timoleon Latinopoulos 8 years ago
parent
commit
3631108c0d

+ 10
- 2
exercises/phone-number/.meta/src/reference/java/PhoneNumber.java View File

9
     private String extractDigits(String dirtyNumber) {
9
     private String extractDigits(String dirtyNumber) {
10
         StringBuilder stringBuilder = new StringBuilder();
10
         StringBuilder stringBuilder = new StringBuilder();
11
         for (char c : dirtyNumber.toCharArray()) {
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
                 continue;
14
                 continue;
15
             }
15
             }
16
             if (!Character.isDigit(c)) {
16
             if (!Character.isDigit(c)) {
34
                 throw new IllegalArgumentException("Can only have 11 digits if number starts with '1'");
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
         return number;
46
         return number;
39
     }
47
     }

+ 1
- 0
exercises/phone-number/.meta/version View File

1
+1.3.0

+ 56
- 19
exercises/phone-number/src/test/java/PhoneNumberTest.java View File

11
             "Can only have 11 digits if number starts with '1'";
11
             "Can only have 11 digits if number starts with '1'";
12
     private final static String illegalCharacterExceptionMessage =
12
     private final static String illegalCharacterExceptionMessage =
13
             "Illegal character in phone number. Only digits, spaces, parentheses, hyphens or dots accepted.";
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
     @Rule
17
     @Rule
16
     public ExpectedException expectedException = ExpectedException.none();
18
     public ExpectedException expectedException = ExpectedException.none();
17
 
19
 
18
     @Test
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
         assertEquals(
25
         assertEquals(
24
                 expectedNumber, actualNumber
26
                 expectedNumber, actualNumber
27
 
29
 
28
     @Ignore("Remove to run test")
30
     @Ignore("Remove to run test")
29
     @Test
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
         assertEquals(
36
         assertEquals(
35
                 expectedNumber, actualNumber
37
                 expectedNumber, actualNumber
38
 
40
 
39
     @Ignore("Remove to run test")
41
     @Ignore("Remove to run test")
40
     @Test
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
         assertEquals(
47
         assertEquals(
46
                 expectedNumber, actualNumber
48
                 expectedNumber, actualNumber
57
 
59
 
58
     @Ignore("Remove to run test")
60
     @Ignore("Remove to run test")
59
     @Test
61
     @Test
60
-    public void invalidWhen11Digits() {
62
+    public void invalidWhen11DigitsDoesNotStartWith1() {
61
         expectedException.expect(IllegalArgumentException.class);
63
         expectedException.expect(IllegalArgumentException.class);
62
         expectedException.expectMessage(numberIs11DigitsButDoesNotStartWith1ExceptionMessage);
64
         expectedException.expectMessage(numberIs11DigitsButDoesNotStartWith1ExceptionMessage);
63
-        new PhoneNumber("21234567890");
65
+        new PhoneNumber("22234567890");
64
     }
66
     }
65
 
67
 
66
     @Ignore("Remove to run test")
68
     @Ignore("Remove to run test")
67
     @Test
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
         assertEquals(
85
         assertEquals(
73
                 expectedNumber, actualNumber
86
                 expectedNumber, actualNumber
76
 
89
 
77
     @Ignore("Remove to run test")
90
     @Ignore("Remove to run test")
78
     @Test
91
     @Test
79
-    public void invalidWhen12Digits() {
92
+    public void invalidWhenMoreThan11Digits() {
80
         expectedException.expect(IllegalArgumentException.class);
93
         expectedException.expect(IllegalArgumentException.class);
81
         expectedException.expectMessage(wrongLengthExceptionMessage);
94
         expectedException.expectMessage(wrongLengthExceptionMessage);
82
         new PhoneNumber("321234567890");
95
         new PhoneNumber("321234567890");
92
 
105
 
93
     @Ignore("Remove to run test")
106
     @Ignore("Remove to run test")
94
     @Test
107
     @Test
95
-    public void invalidWithPunctuation() {
108
+    public void invalidWithPunctuations() {
96
         expectedException.expect(IllegalArgumentException.class);
109
         expectedException.expect(IllegalArgumentException.class);
97
         expectedException.expectMessage(illegalCharacterExceptionMessage);
110
         expectedException.expectMessage(illegalCharacterExceptionMessage);
98
         new PhoneNumber("123-@:!-7890");
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
     @Ignore("Remove to run test")
138
     @Ignore("Remove to run test")
102
     @Test
139
     @Test
103
-    public void invalidWithRightNumberOfDigitsButLettersMixedIn() {
140
+    public void invalidIfExchangeCodeStartsWith1() {
104
         expectedException.expect(IllegalArgumentException.class);
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
 }