diff --git a/src/main/java/com/dtcc/projects/PhoneBook.java b/src/main/java/com/dtcc/projects/PhoneBook.java index 37094f3..8f22380 100644 --- a/src/main/java/com/dtcc/projects/PhoneBook.java +++ b/src/main/java/com/dtcc/projects/PhoneBook.java @@ -1,4 +1,71 @@ package com.dtcc.projects; +import java.util.*; + public class PhoneBook { + Map> phoneBookMap; + + public PhoneBook(){ + this(new LinkedHashMap>()); + } + + public PhoneBook(Map> map){ + this.phoneBookMap=map; + } + + public void add(String name,String phoneNumber){ + List phoneNumberList=phoneBookMap.get(name); + if(phoneNumberList!=null){ + phoneNumberList.add(phoneNumber); + } + else{ + phoneBookMap.put(name,Collections.singletonList(phoneNumber)); + } + } + + public void addAll(String name, String[] pnumbers){ + if(!phoneBookMap.containsKey(name)) { + phoneBookMap.put(name,Arrays.asList(pnumbers)); + } + } + + public void remove(String name){ + if(phoneBookMap.containsKey(name)) + phoneBookMap.remove(name); + } + + public boolean hasEntry(String name){ + return phoneBookMap.containsKey(name); + } + + public List lookup(String name){ + /* List sendList=new ArrayList<>(); + for(Map.Entry> e: phoneBookMap.entrySet()){ + if(e.getKey().equalsIgnoreCase(name)){ + sendList= e.getValue(); + } + }*/ + return phoneBookMap.get(name); + } + + public String reverseLookup(String phoneNumber){ + String strName=""; + for(Map.Entry> e: phoneBookMap.entrySet()) { + if(e.getValue().contains(phoneNumber)){ + strName=e.getKey(); + } + } + return strName; + } + + public List getAllContactNames(){ + List keyList=new ArrayList<>(); + if(phoneBookMap!=null){ + for(String s : phoneBookMap.keySet()){ + keyList.add(s); + } + } + return keyList; + } + } diff --git a/src/test/java/com/dtcc/projects/PhoneBookTest.java b/src/test/java/com/dtcc/projects/PhoneBookTest.java index 891889e..67aee23 100644 --- a/src/test/java/com/dtcc/projects/PhoneBookTest.java +++ b/src/test/java/com/dtcc/projects/PhoneBookTest.java @@ -1,4 +1,88 @@ package com.dtcc.projects; +import org.junit.Assert; +import org.junit.Assert.*; +import org.junit.Before; +import org.junit.Test; + +import java.util.*; + public class PhoneBookTest { + + PhoneBook phoneBook; + @Before + public void setup(){ + phoneBook=new PhoneBook(); + } + + @Test + public void testAdd(){ + String name="Charu"; + String phoneNumber="123-123-1234"; + phoneBook.add(name,phoneNumber); + Assert.assertTrue(phoneBook.phoneBookMap.containsKey(name)); + Assert.assertEquals(phoneNumber,phoneBook.phoneBookMap.get(name).get(0)); + } + + @Test + public void tesAddAll(){ + String[] list= {"123-123-123","456-345-8934"}; + String name="Nitu"; + phoneBook.addAll(name,list); + Assert.assertEquals(2,phoneBook.phoneBookMap.get(name).size()); + Assert.assertEquals(Arrays.asList(list),phoneBook.phoneBookMap.get(name)); + } + + @Test + public void testRemoveKey(){ + String name="Sam"; + String phoneNumber="456-678-0987"; + phoneBook.add(name,phoneNumber); + phoneBook.remove(name); + Assert.assertEquals(false,phoneBook.phoneBookMap.containsKey(name)); + } + + @Test + public void testHasEntry(){ + String[] list={"123-132-127","456-345-8934"}; + String name="Ramona"; + phoneBook.addAll(name,list); + Assert.assertTrue(phoneBook.hasEntry(name)); + } + + @Test + public void testLookup(){ + String[] list={"123-132-127","456-345-8934"}; + String name="Seher"; + phoneBook.addAll(name,list); + List nameList=phoneBook.lookup(name); + Assert.assertEquals(Arrays.asList(list),nameList); + } + + @Test + public void testReverseLookup(){ + String actual="Rakhi"; + String phoneNumber="123-123-4564"; + phoneBook.add(actual,phoneNumber); + String expected=phoneBook.reverseLookup(phoneNumber); + Assert.assertEquals(actual,expected); + } + + @Test + public void testGetAllContactNames(){ + List expectedList=new ArrayList<>(); + List actual=new ArrayList<>(); + String name1="Seema"; + String phoneNumber="123-123-4564"; + String name2="Shreya"; + String[] strList={"123-132-127","456-345-8934"}; + actual.add(name1); + actual.add(name2); + phoneBook.add(name1,phoneNumber); + phoneBook.addAll(name2,strList); + expectedList=phoneBook.getAllContactNames(); + Assert.assertEquals(actual,expectedList); + + } + }