Parcourir la source

Merge pull request #985 from sagarsane/java-phone-number

Added phone-number assignment test and sammple example.java
Katrina Owen il y a 13 ans
Parent
révision
90f91bb42a

+ 87
- 0
assignments/java/phone-number/PhoneNumberTest.java Voir le fichier

1
+import org.junit.Test;
2
+
3
+import static org.junit.Assert.*;
4
+
5
+public class PhoneNumberTest {
6
+
7
+    @Test
8
+    public void cleansNumber() {
9
+        final String expectedNumber = "1234567890";
10
+        final String actualNumber = new PhoneNumber("(123) 456-7890").getNumber();
11
+
12
+        assertEquals(
13
+            expectedNumber, actualNumber
14
+        );
15
+    }
16
+
17
+    @Test
18
+    public void cleansNumberWithDots() {
19
+        final String expectedNumber = "1234567890";
20
+        final String actualNumber = new PhoneNumber("123.456.7890").getNumber();
21
+
22
+        assertEquals(
23
+            expectedNumber, actualNumber
24
+        );
25
+    }
26
+
27
+    @Test
28
+    public void validWhen11DigitsAndFirstIs1() {
29
+        final String expectedNumber = "1234567890";
30
+        final String actualNumber = new PhoneNumber("11234567890").getNumber();
31
+
32
+        assertEquals(
33
+            expectedNumber, actualNumber
34
+        );
35
+    }
36
+
37
+    @Test
38
+    public void invalidWhenOnly11Digits() {
39
+        final String expectedNumber = "0000000000";
40
+        final String actualNumber = new PhoneNumber("21234567890").getNumber();
41
+
42
+        assertEquals(
43
+            expectedNumber, actualNumber
44
+        );
45
+    }
46
+
47
+    @Test
48
+    public void invalidWhen9Digits() {
49
+        final String expectedNumber = "0000000000";
50
+        final String actualNumber = new PhoneNumber("123456789").getNumber();
51
+
52
+        assertEquals(
53
+            expectedNumber, actualNumber
54
+        );
55
+    }
56
+
57
+    @Test
58
+    public void areaCode() {
59
+        final String expectedAreaCode = "123";
60
+        final String actualAreaCode = new PhoneNumber("1234567890").getAreaCode();
61
+
62
+        assertEquals(
63
+            expectedAreaCode, actualAreaCode
64
+        );
65
+    }
66
+
67
+    @Test
68
+    public void prettyPrint() {
69
+        final String expectedPrettyNumber = "(123) 456-7890";
70
+        final String actualPrettyNumber = new PhoneNumber("1234567890").pretty();
71
+
72
+        assertEquals(
73
+            expectedPrettyNumber, actualPrettyNumber
74
+        );
75
+    }
76
+
77
+    @Test
78
+    public void prettyPrintWithFullUSPhoneNumber() {
79
+        final String expectedPrettyNumber = "(123) 456-7890";
80
+        final String actualPrettyNumber = new PhoneNumber("11234567890").pretty();
81
+
82
+        assertEquals(
83
+            expectedPrettyNumber, actualPrettyNumber
84
+        );
85
+    }
86
+
87
+}

+ 43
- 0
assignments/java/phone-number/example.java Voir le fichier

1
+public class PhoneNumber {
2
+
3
+    private final String number;
4
+
5
+    public PhoneNumber(String phoneNumber) {
6
+        number = normalize(extractDigits(phoneNumber));
7
+    }
8
+
9
+    private String extractDigits(String dirtyNumber) {
10
+        return dirtyNumber.replaceAll("[^\\d]", "");
11
+    }
12
+
13
+    private String normalize(String number) {
14
+        if(number.length() == 11 && number.startsWith("1")) {
15
+            number = number.substring(1, number.length());
16
+        }
17
+
18
+        final boolean numberIsValid = (number.length() == 10);
19
+        final String normalizedNumber = numberIsValid ? number : "0000000000";
20
+        return normalizedNumber;
21
+    }
22
+
23
+    public String getNumber() {
24
+        return number;
25
+    }
26
+
27
+    public String getAreaCode() {
28
+        return number.substring(0, 3);
29
+    }
30
+
31
+    public String getExchangeCode() {
32
+        return number.substring(3, 6);
33
+    }
34
+
35
+    public String getSubscriberNumber() {
36
+        return number.substring(6, 10);
37
+    }
38
+
39
+    public String pretty() {
40
+        return "(" + getAreaCode() + ") " + getExchangeCode() + "-" + getSubscriberNumber();
41
+    }
42
+
43
+}