Skip to content
Snippets Groups Projects
Commit acfa33e6 authored by Kevin Jovanovic's avatar Kevin Jovanovic
Browse files

Test etc added

parent d6d9338b
No related branches found
No related tags found
No related merge requests found
Showing
with 246 additions and 148 deletions
#
# https://help.github.com/articles/dealing-with-line-endings/
#
# These are explicitly windows files and should use crlf
*.bat text eol=crlf
# Created by https://www.gitignore.io/api/java,gradle,eclipse,intellij,visualstudiocode
# Edit at https://www.gitignore.io/?templates=java,gradle,eclipse,intellij,visualstudiocode
### Eclipse ###
.metadata
bin/
tmp/
*.tmp
*.bak
*.swp
*~.nib
local.properties
.settings/
.loadpath
.recommenders
# External tool builders
.externalToolBuilders/
# Locally stored "Eclipse launch configurations"
*.launch
# PyDev specific (Python IDE for Eclipse)
*.pydevproject
# CDT-specific (C/C++ Development Tooling)
.cproject
# CDT- autotools
.autotools
# Java annotation processor (APT)
.factorypath
# PDT-specific (PHP Development Tools)
.buildpath
# sbteclipse plugin
.target
# Tern plugin
.tern-project
# TeXlipse plugin
.texlipse
# STS (Spring Tool Suite)
.springBeans
# Code Recommenders
.recommenders/
# Annotation Processing
.apt_generated/
# Scala IDE specific (Scala & Java development for Eclipse)
.cache-main
.scala_dependencies
.worksheet
### Eclipse Patch ###
# Eclipse Core
.project
# JDT-specific (Eclipse Java Development Tools)
.classpath
# Annotation Processing
.apt_generated
.sts4-cache/
### Intellij ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf
# Generated files
.idea/**/contentModel.xml
# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml
# Gradle
.idea/**/gradle.xml
.idea/**/libraries
# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr
# CMake
cmake-build-*/
# Mongo Explorer plugin
.idea/**/mongoSettings.xml
# File-based project format
*.iws
# IntelliJ
out/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Cursive Clojure plugin
.idea/replstate.xml
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
# Editor-based Rest Client
.idea/httpRequests
# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser
### Intellij Patch ###
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
# *.iml
# modules.xml
# .idea/misc.xml
# *.ipr
# Sonarlint plugin
.idea/**/sonarlint/
# SonarQube Plugin
.idea/**/sonarIssues.xml
# Markdown Navigator plugin
.idea/**/markdown-navigator.xml
.idea/**/markdown-navigator/
### Java ###
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
### VisualStudioCode ###
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
### VisualStudioCode Patch ###
# Ignore all local history of files
.history
### Gradle ###
.gradle
build/
# Ignore Gradle GUI config
gradle-app.setting
# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
!gradle-wrapper.jar
# Cache of project
.gradletasknamecache
# # Work around https://youtrack.jetbrains.com/issue/IDEA-116898
# gradle/wrapper/gradle-wrapper.properties
### Gradle Patch ###
**/build/
# End of https://www.gitignore.io/api/java,gradle,eclipse,intellij,visualstudiocode
\ No newline at end of file
File deleted
File deleted
File deleted
File deleted
......@@ -3,14 +3,14 @@
*
* This generated file contains a sample Java project to get you started.
* For more details take a look at the Java Quickstart chapter in the Gradle
* User Manual available at https://docs.gradle.org/5.6.1/userguide/tutorial_java_projects.html
* User Manual available at https://docs.gradle.org/6.3/userguide/tutorial_java_projects.html
*/
plugins {
// Apply the java plugin to add support for Java
id 'java'
// Apply the application plugin to add support for building a CLI application
// Apply the application plugin to add support for building a CLI application.
id 'application'
}
......@@ -22,17 +22,17 @@ repositories {
dependencies {
// This dependency is used by the application.
implementation 'com.google.guava:guava:28.0-jre'
implementation 'com.google.guava:guava:28.2-jre'
// Use JUnit Jupiter API for testing.
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.4.2'
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.0'
// Use JUnit Jupiter Engine for testing.
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.4.2'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.6.0'
}
application {
// Define the main class for the application
// Define the main class for the application.
mainClassName = 'io.fp.phonebook.App'
}
......
No preview for this file type
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
......@@ -154,19 +154,19 @@ if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
else
eval `echo args$i`="\"$arg\""
fi
i=$((i+1))
i=`expr $i + 1`
done
case $i in
(0) set -- ;;
(1) set -- "$args0" ;;
(2) set -- "$args0" "$args1" ;;
(3) set -- "$args0" "$args1" "$args2" ;;
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
0) set -- ;;
1) set -- "$args0" ;;
2) set -- "$args0" "$args1" ;;
3) set -- "$args0" "$args1" "$args2" ;;
4) set -- "$args0" "$args1" "$args2" "$args3" ;;
5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
esac
fi
......@@ -175,14 +175,9 @@ save () {
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
echo " "
}
APP_ARGS=$(save "$@")
APP_ARGS=`save "$@"`
# Collect all arguments for the java command, following the shell quoting and substitution rules
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
cd "$(dirname "$0")"
fi
exec "$JAVACMD" "$@"
......@@ -29,6 +29,9 @@ if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
......
......@@ -4,7 +4,7 @@
* The settings file is used to specify which projects to include in your build.
*
* Detailed information about configuring a multi-project build in Gradle can be found
* in the user manual at https://docs.gradle.org/5.6.1/userguide/multi_project_builds.html
* in the user manual at https://docs.gradle.org/6.3/userguide/multi_project_builds.html
*/
rootProject.name = 'phonebook'
rootProject.name = 'campus'
package io.fp.phonebook;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
import java.util.Map;
import java.util.Set;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
public class PhoneBookTest {
PhoneBook phoneBook;
Integer[] numbers = { 1, 2, 3 };
@BeforeEach
public void setUp() {
phoneBook = new PhoneBook();
}
@Test
public void testCreateContactArray() {
assertDoesNotThrow(()-> {
phoneBook.createContact("Person", numbers);
for (int i = 0; i < numbers.length; i++) {
assertEquals(true, phoneBook.getPhoneNumbers("Person").contains(numbers[i]));
}
assertEquals(3, phoneBook.getPhoneNumbers("Person").size());
});
}
@Test
public void testCreateContactArrayTwoTimes() throws PhoneBookException {
assertThrows(PhoneBookException.class, () -> {
phoneBook.createContact("Person", numbers);
phoneBook.createContact("Person", numbers);
});
}
@Test
public void testCreateContactSingleNumber() {
assertDoesNotThrow(()-> {
phoneBook.createContact("Person", 1);
assertEquals(true, phoneBook.getPhoneNumbers("Person").contains(1));
assertEquals(1, phoneBook.getPhoneNumbers("Person").size());
});
}
@Test
public void testDeleteEntryByPhoneNumber() {
assertDoesNotThrow(()-> {
phoneBook.createContact("Person1", numbers);
phoneBook.createContact("Person2", 4);
String deletedPerson = phoneBook.deleteEntryByPhoneNumber(1);
assertEquals("Person1", deletedPerson);
assertEquals(true, phoneBook.getPhoneNumbers("Person1").contains(2));
assertEquals(true, phoneBook.getPhoneNumbers("Person1").contains(3));
assertEquals(true, phoneBook.getPhoneNumbers("Person2").contains(4));
assertEquals(2, phoneBook.getPhoneNumbers("Person1").size());
assertEquals(1, phoneBook.getPhoneNumbers("Person2").size());
});
}
@Test
public void testDeleteEntriesOfAPerson() {
assertDoesNotThrow(()-> {
phoneBook.createContact("Person1", numbers);
phoneBook.createContact("Person2", 4);
Set<Integer> deletedSet = phoneBook.deleteEntriesOfAPerson("Person1");
for (int i = 0; i < numbers.length; i++) {
assertEquals(true, deletedSet.contains(numbers[i]));
}
assertEquals(true, phoneBook.getPhoneNumbers("Person2").contains(4));
assertEquals(1, phoneBook.getPhoneNumbers("Person2").size());
assertEquals(0, phoneBook.getPhoneNumbers("Person1").size());
});
}
@Test
public void testDeleteEntriesOfAPersonUnknownPerson() {
assertDoesNotThrow(()-> {
phoneBook.createContact("Person1", numbers);
Set<Integer> deletedSet = phoneBook.deleteEntriesOfAPerson("Person2");
for (int i = 0; i < numbers.length; i++) {
assertEquals(true, phoneBook.getPhoneNumbers("Person1").contains(numbers[i]));
}
assertEquals(3, phoneBook.getPhoneNumbers("Person1").size());
assertEquals(0, deletedSet.size());
});
}
@Test
public void testDeleteEntryByPhoneNumberUnknownNumber() {
assertDoesNotThrow(()-> {
phoneBook.createContact("Person", numbers);
String deletedPerson = phoneBook.deleteEntryByPhoneNumber(4);
assertEquals(null, deletedPerson);
for (int i = 0; i < numbers.length; i++) {
assertEquals(true, phoneBook.getPhoneNumbers("Person").contains(numbers[i]));
}
assertEquals(3, phoneBook.getPhoneNumbers("Person").size());
});
}
@Test
public void testGetMap() {
assertDoesNotThrow(()-> {
phoneBook.createContact("Person", numbers);
Map<Integer, String> phoneBookMap = phoneBook.getBook();
assertEquals("Person", phoneBookMap.get(1));
assertEquals("Person", phoneBookMap.get(2));
assertEquals("Person", phoneBookMap.get(3));
assertEquals(3, phoneBookMap.size());
});
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment