Browse Source

almost finished part 3 but not quite

Carolynn Vansant 6 years ago
parent
commit
b28f8c66e1

+ 30
- 21
src/main/java/com/zipcodewilmington/phonebook/PhoneBook.java View File

1
 package com.zipcodewilmington.phonebook;
1
 package com.zipcodewilmington.phonebook;
2
-import java.util.TreeMap;
3
-import java.util.Set;
4
-import java.util.Iterator;
5
-import java.util.Map;
2
+import java.util.*;
6
 
3
 
7
 /**
4
 /**
8
  * Created by leon on 1/23/18.
5
  * Created by leon on 1/23/18.
10
 public class PhoneBook {
7
 public class PhoneBook {
11
 
8
 
12
     //instance variable
9
     //instance variable
13
-    private TreeMap<String, String> treeMap;
10
+    private TreeMap<String, ArrayList<String>> treeMap;
14
 
11
 
15
 
12
 
16
     // void "no arguments" constructor -creates empty map
13
     // void "no arguments" constructor -creates empty map
17
     public PhoneBook() {
14
     public PhoneBook() {
18
-        this.treeMap= new TreeMap<String, String>();
15
+        this.treeMap= new TreeMap<String, ArrayList<String>>();
19
     }
16
     }
20
 
17
 
21
     // single argument constructor -type Map -creates new map w/ same key/value mappings as argument
18
     // single argument constructor -type Map -creates new map w/ same key/value mappings as argument
23
         this.treeMap = treeMap;
20
         this.treeMap = treeMap;
24
     }
21
     }
25
 
22
 
26
-    //add a name & number entry
27
-    public void add(String name, String number) {
28
-
29
-        if(!treeMap.containsKey(name)) {
23
+    //add a name & number entry, add number
24
+    public void inputEntry(String name, ArrayList<String> number) {
25
+        if (!treeMap.containsKey(name)) {
30
             treeMap.put(name, number);
26
             treeMap.put(name, number);
31
         }
27
         }
28
+    }
29
+
30
+    //add and remove numbers from existing names
31
+    //unfinished, no test cases yet
32
+    public void modifyNumbers(String name, ArrayList<String> number) {
33
+        for (Map.Entry<String, ArrayList<String>> entry : treeMap.entrySet()) {
34
+            ArrayList<String> value = entry.getValue();
35
+            for (String firstNumber : value) {
36
+
37
+            }
38
+        }
32
 
39
 
33
     }
40
     }
34
 
41
 
42
+
35
     //remove a name & number entry
43
     //remove a name & number entry
36
-    public void remove(String name) {
44
+    public void removeEntry(String name) {
37
             treeMap.remove(name);
45
             treeMap.remove(name);
38
     }
46
     }
39
 
47
 
40
     //find phone number lookup by name
48
     //find phone number lookup by name
41
-    public String lookup(String name) {
42
-        String number = treeMap.get(name);
43
-        return number;
49
+    public ArrayList<String> lookup(String name) {
50
+        return treeMap.get(name);
44
     }
51
     }
45
 
52
 
46
     //reverse lookup
53
     //reverse lookup
47
     public String reverseLookup (String number) {
54
     public String reverseLookup (String number) {
48
         String name = "";
55
         String name = "";
49
-        for(Map.Entry<String, String> entry: treeMap.entrySet()) {
50
-            if(entry.getValue().equals(number)) {
51
-                name = entry.getKey();
56
+        for(Map.Entry<String, ArrayList<String>> entry: treeMap.entrySet()) {
57
+            ArrayList<String> value = entry.getValue();
58
+            for(String revnumber: value) {
59
+                if(number.contains(revnumber)) {
60
+                    name = entry.getKey();
61
+                }
52
             }
62
             }
53
         }
63
         }
54
         return name;
64
         return name;
57
     //print out all of the entries in PhoneBook
67
     //print out all of the entries in PhoneBook
58
     public String display(){
68
     public String display(){
59
         StringBuilder printOut = new StringBuilder();
69
         StringBuilder printOut = new StringBuilder();
60
-        for(Map.Entry<String, String> entry: treeMap.entrySet()) {
70
+        for(Map.Entry<String, ArrayList<String>> entry: treeMap.entrySet()) {
61
             printOut
71
             printOut
62
                     .append(entry.getKey())
72
                     .append(entry.getKey())
63
                     .append(" ")
73
                     .append(" ")
64
-                    .append(entry.getValue())
74
+                    .append(entry.getValue().toString())
65
                     .append("\n");
75
                     .append("\n");
66
         }
76
         }
67
-        String print = printOut.toString();
68
-        return print;
77
+        return printOut.toString();
69
     }
78
     }
70
 
79
 
71
 
80
 

+ 58
- 40
src/test/java/com/zipcodewilmington/phonebook/PhoneBookTest.java View File

2
 
2
 
3
 import org.junit.Assert;
3
 import org.junit.Assert;
4
 import org.junit.Test;
4
 import org.junit.Test;
5
+import sun.nio.cs.ext.SJIS;
5
 
6
 
7
+import java.util.ArrayList;
6
 import java.util.TreeMap;
8
 import java.util.TreeMap;
7
 
9
 
8
 /**
10
 /**
19
     @Test
21
     @Test
20
     public void testConstructorWithArgument() {
22
     public void testConstructorWithArgument() {
21
         PhoneBook book = new PhoneBook();
23
         PhoneBook book = new PhoneBook();
22
-        book.add("Bob", "302-555-1234");
24
+        ArrayList<String> number = new ArrayList<String>();
25
+        number.add("302-555-2222");
26
+        number.add("302-555-3456");
27
+        book.inputEntry("Bob", number);
23
         Assert.assertNotNull(book);
28
         Assert.assertNotNull(book);
24
     }
29
     }
25
 
30
 
28
 
33
 
29
         //Given
34
         //Given
30
         PhoneBook book = new PhoneBook();
35
         PhoneBook book = new PhoneBook();
31
-        String expectedAddition = "302-555-1234";
32
 
36
 
37
+        ArrayList<String> expectedAddition = new ArrayList<String>();
38
+        expectedAddition.add("302-555-2222");
39
+        expectedAddition.add("302-555-3456");
33
         //When
40
         //When
34
-        book.add("Bob", "302-555-1234");
35
-        String actualAddition = book.lookup("Bob");
41
+        book.inputEntry("Bob", expectedAddition);
42
+        ArrayList<String> actualAddition = new ArrayList<String>(book.lookup("Bob"));
36
 
43
 
37
         //Then
44
         //Then
38
         Assert.assertEquals(expectedAddition, actualAddition);
45
         Assert.assertEquals(expectedAddition, actualAddition);
40
     }
47
     }
41
 
48
 
42
     @Test
49
     @Test
43
-    public void testRemove() {
50
+    public void testRemoveEntry() {
44
 
51
 
45
         //Given
52
         //Given
46
         PhoneBook book = new PhoneBook();
53
         PhoneBook book = new PhoneBook();
47
-        book.add("Bob", "302-555-1234");
54
+        ArrayList<String> bobNumber = new ArrayList<String>();
55
+        bobNumber.add("302-555-2222");
56
+        bobNumber.add("302-555-3456");
57
+        book.inputEntry("Bob", bobNumber);
48
         String expectedValue = "";
58
         String expectedValue = "";
49
 
59
 
50
         //When
60
         //When
51
-        book.remove("Bob");
61
+        book.removeEntry("Bob");
52
         String actualValue = book.display();
62
         String actualValue = book.display();
53
 
63
 
54
         //Then
64
         //Then
56
     }
66
     }
57
 
67
 
58
     @Test
68
     @Test
59
-    public void testRemove2() {
69
+    public void testRemoveEntry2() {
60
 
70
 
61
         //Given
71
         //Given
62
         PhoneBook book = new PhoneBook();
72
         PhoneBook book = new PhoneBook();
63
-        book.add("Bob", "302-555-1234");
64
-        String expectedValue = "";
73
+
74
+        ArrayList<String> expectedValue = new ArrayList<String>();
75
+        expectedValue.add("302-555-2222");
76
+        expectedValue.add("302-555-3456");
77
+        book.inputEntry("Bob", expectedValue);
65
 
78
 
66
         //When
79
         //When
67
-        book.remove("Robert");
80
+        book.removeEntry("Robert");
68
         String actualValue = book.display();
81
         String actualValue = book.display();
69
 
82
 
70
         //Then
83
         //Then
71
         Assert.assertNotEquals(expectedValue, actualValue);
84
         Assert.assertNotEquals(expectedValue, actualValue);
72
-
73
-
74
     }
85
     }
75
 
86
 
76
-
77
     @Test
87
     @Test
78
     public void testLookup(){
88
     public void testLookup(){
79
-
80
         //Given
89
         //Given
81
         PhoneBook book = new PhoneBook();
90
         PhoneBook book = new PhoneBook();
82
-        String expectedNumber = "302-555-1234";
83
-        book.add("Bob", expectedNumber);
84
-        //When
85
-        String actualNumber = book.lookup("Bob");
86
-        //Then
87
-        Assert.assertEquals(expectedNumber, actualNumber);
88
-    }
89
 
91
 
90
-    @Test
91
-    public void testLookup2(){
92
+        ArrayList<String> expectedNumber = new ArrayList<String>();
93
+        expectedNumber.add("302-555-2223");
94
+        expectedNumber.add("302-555-3456");
95
+        book.inputEntry("Bob", expectedNumber);
92
 
96
 
93
-        //Given
94
-        PhoneBook book = new PhoneBook();
95
-        book.add("Bob", "302-555-1234");
96
-        String expectedNumber = null;
97
         //When
97
         //When
98
-        String actualNumber = book.lookup("Frank");
98
+        ArrayList<String> actualNumber = new ArrayList<String>(book.lookup("Bob"));
99
+
99
         //Then
100
         //Then
100
         Assert.assertEquals(expectedNumber, actualNumber);
101
         Assert.assertEquals(expectedNumber, actualNumber);
101
     }
102
     }
105
 
106
 
106
         //Given
107
         //Given
107
         PhoneBook book = new PhoneBook();
108
         PhoneBook book = new PhoneBook();
108
-        book.add("Bob", "302-555-1234");
109
-        String expectedNumber = "302-555-9988";
110
-        book.add("Frank", expectedNumber);
109
+
110
+        ArrayList<String> bobNumber = new ArrayList<String>();
111
+        bobNumber.add("302-555-2223");
112
+        book.inputEntry("Bob", bobNumber);
113
+
114
+        ArrayList<String> expectedNumber = new ArrayList<String>();
115
+        expectedNumber.add("302-555-9988");
116
+        book.inputEntry("Frank", expectedNumber);
117
+
111
         //When
118
         //When
112
-        String actualNumber = book.lookup("Frank");
119
+        ArrayList<String> actualNumber = new ArrayList<String> (book.lookup("Frank"));
113
         //Then
120
         //Then
114
         Assert.assertEquals(expectedNumber, actualNumber);
121
         Assert.assertEquals(expectedNumber, actualNumber);
115
     }
122
     }
120
         //Given
127
         //Given
121
         PhoneBook book = new PhoneBook();
128
         PhoneBook book = new PhoneBook();
122
         String expectedName = "Bob";
129
         String expectedName = "Bob";
123
-        book.add(expectedName, "302-555-1234");
124
-        //When
125
-        String actualName = book.reverseLookup("302-555-1234");
130
+        ArrayList<String> bobNumber = new ArrayList<String>();
131
+        bobNumber.add("302-555-2223");
132
+        book.inputEntry(expectedName, bobNumber);
133
+
134
+        //When;
135
+        String actualName = book.reverseLookup("302-555-2223");
136
+
126
         //Then
137
         //Then
127
         Assert.assertEquals(expectedName, actualName);
138
         Assert.assertEquals(expectedName, actualName);
128
     }
139
     }
130
 
141
 
131
     @Test
142
     @Test
132
     public void testDisplay() {
143
     public void testDisplay() {
133
-        //Given: need help from instructor
134
-        String expectedNameNumber = "Bob 302-555-1234\nFrank 777-555-1111\n";
144
+        //Given:
135
         PhoneBook book = new PhoneBook();
145
         PhoneBook book = new PhoneBook();
136
-        book.add("Bob", "302-555-1234");
137
-        book.add("Frank", "777-555-1111");
146
+        ArrayList<String> bobNumber = new ArrayList<String>();
147
+        bobNumber.add("302-555-1234");
148
+        bobNumber.add("302-556-1245");
149
+        ArrayList<String> frankNumber = new ArrayList<String>();
150
+        frankNumber.add("777-555-1111");
151
+        book.inputEntry("Bob", bobNumber);
152
+        book.inputEntry("Frank", frankNumber);
153
+
154
+        String expectedNameNumber = "Bob " + bobNumber.toString() + "\n" + "Frank " + frankNumber.toString() + "\n";
155
+
138
         //When
156
         //When
139
         String actualNameNumber = book.display();
157
         String actualNameNumber = book.display();
140
         //Then
158
         //Then