diff --git a/README.md b/README.md index 96afea4..32fcdd9 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ * `void remove(String name)` * removes an entry to the composite associate data type * `Boolean hasEntry(String name)` - * removes an entry to the composite associate data type + * Checks if it has entry * `List lookup(String name)` * returns a phone number for the respective input `name` * `String reverseLookup(String phoneNumber)` diff --git a/src/main/java/com/dtcc/projects/PhoneBook.java b/src/main/java/com/dtcc/projects/PhoneBook.java index 37094f3..fb91f31 100644 --- a/src/main/java/com/dtcc/projects/PhoneBook.java +++ b/src/main/java/com/dtcc/projects/PhoneBook.java @@ -1,4 +1,50 @@ 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[] phoneNumbers){ + + phoneBookMap.put(name, Arrays.asList(phoneNumbers)); + } + + public void remove (String name){ + phoneBookMap.remove(name); + + } + public boolean hasEntry (String name){ + phoneBookMap.containsKey(name); + + return true; + } + + public List lookup(String name){ + return phoneBookMap.get(name); + } + + public String reverseLookup(String phoneNumber){ + for(int i; ) + return name; + } + } diff --git a/src/test/java/com/dtcc/projects/PhoneBookTest.java b/src/test/java/com/dtcc/projects/PhoneBookTest.java index 891889e..0b3d018 100644 --- a/src/test/java/com/dtcc/projects/PhoneBookTest.java +++ b/src/test/java/com/dtcc/projects/PhoneBookTest.java @@ -1,4 +1,103 @@ package com.dtcc.projects; +import org.junit.Assert; +import org.junit.Test; + +import java.util.ArrayList; +import java.util.Arrays; + public class PhoneBookTest { -} + + @Test + public void addTest(){ + PhoneBook phoneBook = new PhoneBook(); + String name = "Zan"; + String phoneNumber = "12345432"; + phoneBook.add(name,phoneNumber); + + Assert.assertTrue(phoneBook.phoneBookMap.containsKey(name)); + Assert.assertEquals(phoneNumber,phoneBook.phoneBookMap.get(name).get(0)); + } + + @Test + public void adAllTest(){ + //Given + PhoneBook phonebook = new PhoneBook(); + String name = "Zan again"; + String[] numbersArray = {"127575877", "64182922", "26853733"}; + + //When + phonebook.addAll(name, numbersArray); + + //Then + Assert.assertEquals(Arrays.asList(numbersArray), phonebook.phoneBookMap.get(name)); + } + + @Test + public void removeTest(){ + PhoneBook phonebook = new PhoneBook(); + String name1 = "Emad"; + String number1 = "555555555"; + phonebook.add(name1, number1); + + String name2 = "Cedric"; + String number2 = "111111111"; + phonebook.add(name2, number2); + + phonebook.remove(name1); + + Assert.assertFalse(phonebook.phoneBookMap.containsKey(name1)); + } + + @Test + public void hasEntryTest(){ + PhoneBook phonebook = new PhoneBook(); + String name1 = "Emad"; + String number1 = "555555555"; + phonebook.add(name1, number1); + + phonebook.hasEntry(name1); + + Assert.assertTrue(phonebook.phoneBookMap.containsKey(name1)); + } + + @Test + public void lookupTest(){ + PhoneBook phonebook = new PhoneBook(); + String name1 = "Emad"; + ArrayList numbersArray= new ArrayList(); + numbersArray.add("7667676766"); + phonebook.phoneBookMap.put(name1,numbersArray); + + phonebook.lookup(name1); + + Assert.assertEquals(numbersArray, phonebook.lookup(name1)); + } + + @Test + public void reverseLookupTest(){ + PhoneBook phonebook = new PhoneBook(); + String name = "Emad"; + String phoneNumber= ("7667676766"); + + phonebook.reverseLookup(phoneNumber); + + Assert.assertEquals(phoneNumber, phonebook.phoneBookMap.containsValue(name)); + } + + @Test + public void getAllContactNamesTest(){ + PhoneBook phonebook = new PhoneBook(); + String name1 = "Emad"; + String number1 = "555555555"; + phonebook.add(name1, number1); + + String name2 = "Cedric"; + String number2 = "111111111"; + phonebook.add(name2, number2); + + phonebook.getAllCintactNames(); + + Assert.assertEquals(getAllCintactNames, phonebook.phoneBookMap.containsValue(name1,name2)); + } +} \ No newline at end of file