ソースを参照

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

Phone number exceptions
FridaTveit 9 年 前
コミット
9b097f604f
共有2 個のファイルを変更した22 個の追加17 個の削除を含む
  1. 12
    5
      exercises/phone-number/src/example/java/PhoneNumber.java
  2. 10
    12
      exercises/phone-number/src/test/java/PhoneNumberTest.java

+ 12
- 5
exercises/phone-number/src/example/java/PhoneNumber.java ファイルの表示

@@ -11,13 +11,20 @@ public class PhoneNumber {
11 11
     }
12 12
 
13 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 30
     public String getNumber() {

+ 10
- 12
exercises/phone-number/src/test/java/PhoneNumberTest.java ファイルの表示

@@ -1,10 +1,14 @@
1 1
 import org.junit.Test;
2 2
 import org.junit.Ignore;
3
+import org.junit.Rule;
4
+import org.junit.rules.ExpectedException;
3 5
 
4 6
 import static org.junit.Assert.*;
5 7
 
6 8
 public class PhoneNumberTest {
7 9
 
10
+    @Rule
11
+    public ExpectedException expectedException = ExpectedException.none();
8 12
 
9 13
     @Test
10 14
     public void cleansNumber() {
@@ -41,23 +45,17 @@ public class PhoneNumberTest {
41 45
     @Ignore
42 46
     @Test
43 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 53
     @Ignore
53 54
     @Test
54 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 61
     @Ignore