diff --git a/src/main/java/com/dtcc/projects/PhoneBook.java b/src/main/java/com/dtcc/projects/PhoneBook.java index 51400b3..c6b5aaa 100644 --- a/src/main/java/com/dtcc/projects/PhoneBook.java +++ b/src/main/java/com/dtcc/projects/PhoneBook.java @@ -1,14 +1,11 @@ package com.dtcc.projects; -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; +import java.util.*; public class PhoneBook { - Map> phoneBookMap; + static Map> phoneBookMap; public PhoneBook(){ this(new LinkedHashMap>()); @@ -27,6 +24,47 @@ public void add (String name, String phoneNumber) { phoneBookMap.put(name, Collections.singletonList(phoneNumber)); } } + void addAll(String name, String[] phoneNumbers){ + phoneBookMap.put(name, Arrays.asList(phoneNumbers)); + + } + public static void remove(String name){ + phoneBookMap.remove(name); + + } + + public static boolean hasEntry(String name){ + return phoneBookMap.containsKey(name); + } + + public List lookup(String name){ + List lookupList = new ArrayList<>(); + for(Map.Entry> entry : phoneBookMap.entrySet()){ + if(entry.getKey().equalsIgnoreCase(name)){ + lookupList = entry.getValue(); + } + } + return lookupList; + } + + public String reverseLookup(String phoneNumber){ + String reversekey = ""; + for(Map.Entry> entry : phoneBookMap.entrySet()){ + if(entry.getValue().contains(phoneNumber)){ + reversekey = entry.getKey(); + } + } + return reversekey; + } + public List getAllContactNames(){ + List allnamelist = new ArrayList<>(); + for(Map.Entry> entry : phoneBookMap.entrySet()){ + allnamelist.add(entry.getKey()); + + + } + return allnamelist; + } } diff --git a/src/test/java/com/dtcc/projects/PhoneBookTest.java b/src/test/java/com/dtcc/projects/PhoneBookTest.java index 63277e2..37d5eac 100644 --- a/src/test/java/com/dtcc/projects/PhoneBookTest.java +++ b/src/test/java/com/dtcc/projects/PhoneBookTest.java @@ -3,6 +3,9 @@ import org.junit.Assert; import org.junit.Test; +import java.util.Arrays; +import java.util.List; + public class PhoneBookTest { @Test @@ -14,4 +17,71 @@ public void addTest(){ Assert.assertTrue(phoneBook.phoneBookMap.containsKey(name)); Assert.assertEquals(phoneNumber,phoneBook.phoneBookMap.get(name).get(0)); } + + @Test + public void addAllTest(){ + PhoneBook phoneBook = new PhoneBook(); + String name = "Zan Again"; + String[] phoneNumbers = {"1122", "34567", "134789"}; + phoneBook.addAll(name, phoneNumbers); + Assert.assertEquals(Arrays.asList(phoneNumbers), phoneBook.phoneBookMap.get(name)); + } + + @Test + public void removeTest(){ + PhoneBook phoneBook = new PhoneBook(); + String name = "Zan"; + String phoneNumber = "33333333333"; + phoneBook.add(name, phoneNumber); + String name1 = "Zan1"; + String phoneNumber1 = "333333333331"; + phoneBook.add(name1, phoneNumber1); + phoneBook.remove(name); + Assert.assertFalse(phoneBook.phoneBookMap.containsKey("Zan")); + } + + @Test + public void hasEntryTest(){ + PhoneBook phoneBook1 = new PhoneBook(); + String name = "Zan"; + String phoneNumber = "33333333333"; + phoneBook1.add(name, phoneNumber); + Assert.assertTrue(phoneBook1.phoneBookMap.containsKey("Zan")); + } + + @Test + public void lookupTest(){ + PhoneBook phoneBook1 = new PhoneBook(); + String name = "Zan"; + String[] phoneNumberList = {"33333333333", "1234", "123456"}; + phoneBook1.addAll(name, phoneNumberList); + List names = phoneBook1.lookup(name); + Assert.assertEquals(Arrays.asList(phoneNumberList), names); + + } + @Test + public void reverseLookupTest(){ + PhoneBook phoneBook1 = new PhoneBook(); + String name = "Zan"; + String phoneNumber = "33333333333"; + phoneBook1.add(name, phoneNumber); + Assert.assertEquals(phoneBook1.reverseLookup(phoneNumber), + name); + } + + @Test + public void getAllContactNamesTest(){ + PhoneBook phoneBook1 = new PhoneBook(); + String name1 = "Zan"; + String[] phoneNumber1 = {"33333333333", "123"}; + phoneBook1.addAll(name1, phoneNumber1); + String name2="Zan2"; + String[] phoneNumber2 = {"999999999", "22222222222","44444444444"}; + phoneBook1.addAll(name2, phoneNumber2); + String[] actual={"Zan","Zan2"}; + Assert.assertEquals(Arrays.asList(actual), phoneBook1.getAllContactNames()); + } + + + } diff --git a/target/classes/com/dtcc/projects/PhoneBook.class b/target/classes/com/dtcc/projects/PhoneBook.class new file mode 100644 index 0000000..976e744 Binary files /dev/null and b/target/classes/com/dtcc/projects/PhoneBook.class differ diff --git a/target/test-classes/com/dtcc/projects/PhoneBookTest.class b/target/test-classes/com/dtcc/projects/PhoneBookTest.class new file mode 100644 index 0000000..084fff8 Binary files /dev/null and b/target/test-classes/com/dtcc/projects/PhoneBookTest.class differ