From dcae66a4a5b593d2ecbc38bb1a0c86aadf4f2db4 Mon Sep 17 00:00:00 2001 From: jess10tindo Date: Sat, 3 Oct 2020 13:01:01 -0400 Subject: [PATCH] Jess Code --- .../java/com/dtcc/projects/PhoneBook.java | 65 +++++++++++ .../java/com/dtcc/projects/PhoneBookTest.java | 103 ++++++++++++++++++ 2 files changed, 168 insertions(+) diff --git a/src/main/java/com/dtcc/projects/PhoneBook.java b/src/main/java/com/dtcc/projects/PhoneBook.java index 37094f3..97ba9c1 100644 --- a/src/main/java/com/dtcc/projects/PhoneBook.java +++ b/src/main/java/com/dtcc/projects/PhoneBook.java @@ -1,4 +1,69 @@ 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)); + } + } + + + + void addAll(String name, String[] phoneNumbers){ + phoneBookMap.put(name, Arrays.asList(phoneNumbers)); + } + + + void remove(String name){ + phoneBookMap.remove(name); + } + + boolean hasEntry(String name){ + return phoneBookMap.containsKey(name); + } + + List lookup(String name){ + List number = phoneBookMap.get(name); + return number; + } + + + String reverseLookup(String phoneNumber){ + Set keys = phoneBookMap.keySet(); + String nameResult = "Does not exist"; + for(String name : keys){ + for (String number : phoneBookMap.get(name)){ + if(number.equals(phoneNumber)){ + nameResult = name; + } + } + } + return nameResult; + } + + List getAllContactNames(){ + ArrayList namesList = new ArrayList<>(); + Set keys = phoneBookMap.keySet(); + for(String name : keys){ + namesList.add(name); + } + return namesList; + } } diff --git a/src/test/java/com/dtcc/projects/PhoneBookTest.java b/src/test/java/com/dtcc/projects/PhoneBookTest.java index 891889e..1ff32f1 100644 --- a/src/test/java/com/dtcc/projects/PhoneBookTest.java +++ b/src/test/java/com/dtcc/projects/PhoneBookTest.java @@ -1,4 +1,107 @@ package com.dtcc.projects; +import org.junit.Assert; +import org.junit.Test; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; + public class PhoneBookTest { + + + @Test + public void addTest(){ + PhoneBook phoneBook = new PhoneBook(); + String name = "Zan"; + String phoneNumber = "978-857-8677"; + phoneBook.add(name, phoneNumber); + 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"; + String[] numberArray = {"978-857-2345", "864-463-8245", "147-523-8134"}; + + phoneBook.addAll(name, numberArray); + + Assert.assertTrue(phoneBook.phoneBookMap.containsKey(name)); + Assert.assertEquals(Arrays.asList(numberArray), phoneBook.phoneBookMap.get(name)); + } + + @Test + public void removeTest() { + PhoneBook book = new PhoneBook(); + String name1 = "Zan"; + String[] numberArray1 = {"978-857-2345", "864-463-8245", "147-523-8134"}; + String name2 = "Cedric"; + String[] numberArray2 = {"978-857-7345"}; + + book.addAll(name1, numberArray1); + book.addAll(name2, numberArray2); + + book.remove(name2); + + Assert.assertFalse(book.phoneBookMap.containsKey(name2)); + } + + @Test + public void hasEntryTest(){ + PhoneBook book = new PhoneBook(); + String name1 = "Zan"; + String[] numberArray1 = {"978-857-2345", "864-463-8245", "147-523-8134"}; + book.addAll(name1, numberArray1); + + Assert.assertEquals(true, book.hasEntry(name1)); + } + + @Test + public void lookupTest(){ + PhoneBook book = new PhoneBook(); + String name1 = "Zan"; + String[] numberArray1 = {"978-857-2345", "864-463-8245", "147-523-8134"}; + String name2 = "Cedric"; + String[] numberArray2 = {"978-857-7345"}; + + book.addAll(name1, numberArray1); + book.addAll(name2, numberArray2); + + Assert.assertEquals(Arrays.asList(numberArray2), book.lookup(name2)); + } + + @Test + public void reverseLookupTest(){ + PhoneBook book = new PhoneBook(); + String name1 = "Zan"; + String[] numberArray1 = {"978-857-2345", "864-463-8245", "147-523-8134"}; + String name2 = "Cedric"; + String[] numberArray2 = {"978-857-7345"}; + + book.addAll(name1, numberArray1); + book.addAll(name2, numberArray2); + + Assert.assertEquals(name2, book.reverseLookup("978-857-7345")); + } + + @Test + public void getAllContactNamesTest(){ + PhoneBook book = new PhoneBook(); + String name1 = "Zan"; + String[] numberArray1 = {"978-857-2345", "864-463-8245", "147-523-8134"}; + String name2 = "Cedric"; + String[] numberArray2 = {"978-857-7345"}; + + book.addAll(name1, numberArray1); + book.addAll(name2, numberArray2); + + ArrayList namesList = new ArrayList<>(); + namesList.add(name1); + namesList.add(name2); + + Assert.assertEquals(namesList, book.getAllContactNames()); + } + }