Просмотр исходного кода

Merge pull request #258 from colin-mullikin/phone-number-exceptions

Phone number exceptions
FridaTveit 9 лет назад
Родитель
Сommit
9b097f604f

+ 12
- 5
exercises/phone-number/src/example/java/PhoneNumber.java Просмотреть файл

11
     }
11
     }
12
 
12
 
13
     private String normalize(String number) {
13
     private String normalize(String number) {
14
-        if(number.length() == 11 && number.startsWith("1")) {
15
-            number = number.substring(1, number.length());
14
+        if(number.length() > 11 || number.length() < 10){
15
+            throw new IllegalArgumentException("Number must be 10 or 11 digits");
16
         }
16
         }
17
 
17
 
18
-        final boolean numberIsValid = (number.length() == 10);
19
-        final String normalizedNumber = numberIsValid ? number : "0000000000";
20
-        return normalizedNumber;
18
+        if(number.length() == 11){
19
+            if(number.startsWith("1")){
20
+                number = number.substring(1, number.length());
21
+            }
22
+            else{
23
+                throw new IllegalArgumentException("Can only have 11 digits if number starts with '1'");
24
+            }
25
+        } 
26
+        
27
+        return number;
21
     }
28
     }
22
 
29
 
23
     public String getNumber() {
30
     public String getNumber() {

+ 10
- 12
exercises/phone-number/src/test/java/PhoneNumberTest.java Просмотреть файл

1
 import org.junit.Test;
1
 import org.junit.Test;
2
 import org.junit.Ignore;
2
 import org.junit.Ignore;
3
+import org.junit.Rule;
4
+import org.junit.rules.ExpectedException;
3
 
5
 
4
 import static org.junit.Assert.*;
6
 import static org.junit.Assert.*;
5
 
7
 
6
 public class PhoneNumberTest {
8
 public class PhoneNumberTest {
7
 
9
 
10
+    @Rule
11
+    public ExpectedException expectedException = ExpectedException.none();
8
 
12
 
9
     @Test
13
     @Test
10
     public void cleansNumber() {
14
     public void cleansNumber() {
41
     @Ignore
45
     @Ignore
42
     @Test
46
     @Test
43
     public void invalidWhenOnly11Digits() {
47
     public void invalidWhenOnly11Digits() {
44
-        final String expectedNumber = "0000000000";
45
-        final String actualNumber = new PhoneNumber("21234567890").getNumber();
46
-
47
-        assertEquals(
48
-            expectedNumber, actualNumber
49
-        );
48
+        expectedException.expect(IllegalArgumentException.class);
49
+        expectedException.expectMessage("Can only have 11 digits if number starts with '1'");
50
+        new PhoneNumber("21234567890").getNumber();
50
     }
51
     }
51
 
52
 
52
     @Ignore
53
     @Ignore
53
     @Test
54
     @Test
54
     public void invalidWhen9Digits() {
55
     public void invalidWhen9Digits() {
55
-        final String expectedNumber = "0000000000";
56
-        final String actualNumber = new PhoneNumber("123456789").getNumber();
57
-
58
-        assertEquals(
59
-            expectedNumber, actualNumber
60
-        );
56
+        expectedException.expect(IllegalArgumentException.class);
57
+        expectedException.expectMessage("Number must be 10 or 11 digits");
58
+        new PhoneNumber("123456789").getNumber();
61
     }
59
     }
62
 
60
 
63
     @Ignore
61
     @Ignore