ソースを参照

Looks like everything should work but some test cases won't pass

Mitch Taylor 8 年 前
コミット
c96ad0b50d

+ 18
- 4
src/main/java/com/zipcodewilmington/phone/PhoneNumberFactory.java ファイルの表示

@@ -1,7 +1,9 @@
1 1
 package com.zipcodewilmington.phone;
2 2
 
3 3
 import com.zipcodewilmington.exceptions.InvalidPhoneNumberFormatException;
4
+import com.zipcodewilmington.tools.RandomNumberFactory;
4 5
 
6
+import java.util.logging.Level;
5 7
 import java.util.logging.Logger;
6 8
 
7 9
 /**
@@ -19,15 +21,24 @@ public final class PhoneNumberFactory {
19 21
      * @param phoneNumberCount - number of PhoneNumber objects to instantiate
20 22
      * @return array of randomly generated PhoneNumber objects
21 23
      */ //TODO - Implement logic
22
-    public static PhoneNumber[] createRandomPhoneNumberArray(int phoneNumberCount) {
23
-        return null;
24
+    public static PhoneNumber[] createRandomPhoneNumberArray(int phoneNumberCount) throws InvalidPhoneNumberFormatException{
25
+        PhoneNumber[] phoneNumbers = new PhoneNumber[phoneNumberCount];
26
+        for (int i = 0; i < phoneNumberCount; i++) {
27
+            phoneNumbers[i] = createRandomPhoneNumber();
28
+        }
29
+        return phoneNumbers;
24 30
     }
25 31
 
26 32
     /**
27 33
      * @return an instance of PhoneNumber with randomly generated phone number value
28 34
      */ //TODO - Implement logic
29 35
     public static PhoneNumber createRandomPhoneNumber() throws InvalidPhoneNumberFormatException {
30
-        return createPhoneNumberSafely(-1, -1, -1);
36
+        try {
37
+            int areaCode = RandomNumberFactory.createInteger(100, 999);
38
+            int officeCode = RandomNumberFactory.createInteger(100, 999);
39
+            int phoneLine = RandomNumberFactory.createInteger(1000, 9999);
40
+            return createPhoneNumberSafely(areaCode, officeCode, phoneLine);
41
+        } catch (InvalidPhoneNumberFormatException e) {return null;}
31 42
     }
32 43
 
33 44
 
@@ -38,13 +49,15 @@ public final class PhoneNumberFactory {
38 49
      * @return a new phone number object
39 50
      */ //TODO - if input is valid, return respective PhoneNumber object, else return null
40 51
     public static PhoneNumber createPhoneNumberSafely(int areaCode, int centralOfficeCode, int phoneLineCode) throws InvalidPhoneNumberFormatException{
52
+        String tempString = "";
41 53
         try {
42 54
             // if (3 == String.valueOf(areaCode).length() && 3 == String.valueOf(centralOfficeCode).length() && 4 == String.valueOf(phoneLineCode).length()) {
43
-            String tempString = String.valueOf(areaCode) + String.valueOf(centralOfficeCode) + String.valueOf(phoneLineCode);
55
+            tempString = String.valueOf(areaCode) + String.valueOf(centralOfficeCode) + String.valueOf(phoneLineCode);
44 56
             return createPhoneNumber(tempString);
45 57
             //     return createPhoneNumber(tempString);
46 58
             // }
47 59
         } catch (InvalidPhoneNumberFormatException inv) {
60
+            logger.log(Level.FINE, (tempString + "is not a valid phone number"));
48 61
             return null;
49 62
         }
50 63
     }
@@ -55,6 +68,7 @@ public final class PhoneNumberFactory {
55 68
      * @throws InvalidPhoneNumberFormatException - thrown if phoneNumberString does not match acceptable format
56 69
      */ // TODO - Add throws statement to method signature
57 70
     public static PhoneNumber createPhoneNumber (String phoneNumberString) throws InvalidPhoneNumberFormatException {
71
+        logger.log(Level.FINE, ("Attempting to create a new PhoneNumber object with a value of " + phoneNumberString));
58 72
         return new PhoneNumber(phoneNumberString);
59 73
     }
60 74
 }

+ 1
- 1
src/main/java/com/zipcodewilmington/tools/RandomNumberFactory.java ファイルの表示

@@ -11,7 +11,7 @@ public abstract class RandomNumberFactory {
11 11
 
12 12
     /** @return a random float between the specified min and max numeric range */
13 13
     public static Float createFloat(float min, float max) {
14
-        return random.nextFloat() * (max - min) + min;
14
+        return random.nextFloat() * (max - min) + 1;
15 15
     }
16 16
 
17 17
     /** @return a random integer between the specified min and max numeric range */

+ 5
- 5
src/test/java/com/zipcodewilmington/PhoneNumberFactoryTest.java ファイルの表示

@@ -21,7 +21,7 @@ public class PhoneNumberFactoryTest {
21 21
     }
22 22
 
23 23
     @Test
24
-    public void testCreatePhoneNumberSafely() {
24
+    public void testCreatePhoneNumberSafely() throws InvalidPhoneNumberFormatException {
25 25
         // : Given
26 26
         int areaCode = 0;
27 27
         int centralOfficeCode = 0;
@@ -35,7 +35,7 @@ public class PhoneNumberFactoryTest {
35 35
     }
36 36
 
37 37
     @Test
38
-    public void testGetAreaCode() {
38
+    public void testGetAreaCode() throws InvalidPhoneNumberFormatException {
39 39
         // : Given
40 40
         Integer areaCode = 302;
41 41
         int centralOfficeCode = 312;
@@ -49,7 +49,7 @@ public class PhoneNumberFactoryTest {
49 49
     }
50 50
 
51 51
     @Test
52
-    public void testGetCentralOfficeCode() {
52
+    public void testGetCentralOfficeCode() throws InvalidPhoneNumberFormatException {
53 53
         // : Given
54 54
         int areaCode = 302;
55 55
         Integer centralOfficeCode = 312;
@@ -64,7 +64,7 @@ public class PhoneNumberFactoryTest {
64 64
 
65 65
 
66 66
     @Test
67
-    public void testPhoneLineCode() {
67
+    public void testPhoneLineCode() throws InvalidPhoneNumberFormatException {
68 68
         // : Given
69 69
         int areaCode = 302;
70 70
         int centralOfficeCode = 312;
@@ -78,7 +78,7 @@ public class PhoneNumberFactoryTest {
78 78
     }
79 79
 
80 80
     @Test
81
-    public void testCreateRandomPhoneNumber() {
81
+    public void testCreateRandomPhoneNumber() throws InvalidPhoneNumberFormatException {
82 82
         for (int i = 0; i < 999; i++) {
83 83
             // : Given
84 84
             // : When