From a684839c8f942049b01fd733a13dfd84e6cac240 Mon Sep 17 00:00:00 2001 From: OBNA Date: Tue, 27 Oct 2020 23:50:35 -0500 Subject: [PATCH 1/4] Test false substrings but have it return true This test passes for all substr except where the substr length is longer then the string the remains after the matching char is found --- src/edu/mills/cs180a/StringUtilitiesTester.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/edu/mills/cs180a/StringUtilitiesTester.java b/src/edu/mills/cs180a/StringUtilitiesTester.java index a38617b..6b686c1 100644 --- a/src/edu/mills/cs180a/StringUtilitiesTester.java +++ b/src/edu/mills/cs180a/StringUtilitiesTester.java @@ -1,8 +1,11 @@ package edu.mills.cs180a; +import static org.junit.Assert.assertFalse; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; class StringUtilitiesTester { @Test @@ -22,4 +25,17 @@ void isSubstring_False_EmptyString() { void isSubstring_True_Length1Substring() { assertTrue(StringUtilities.isSubstring("A", "ABC")); } + + @ParameterizedTest + @ValueSource(strings = {"is", "land", "isl", "ands"}) + void isSubstring_True_Substrings(String input) { + assertTrue(StringUtilities.isSubstring(input, "island")); + } + + @ParameterizedTest + @ValueSource(strings = {"iz", "lanp", "islaz", "anda"}) + void isSubstring_False_Substrings(String input) { + assertFalse(StringUtilities.isSubstring(input, "island")); + } + } From 97ff2364f7b918565a11ee9c67238fb6916de935 Mon Sep 17 00:00:00 2001 From: OBNA Date: Wed, 28 Oct 2020 00:30:41 -0500 Subject: [PATCH 2/4] Add to helper method a check for substr length For when the substr length is longer than the text - offset, return false. Coverage is 91.1% --- src/edu/mills/cs180a/StringUtilities.java | 6 +++++ .../mills/cs180a/StringUtilitiesTester.java | 23 +++++++++++++++---- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/edu/mills/cs180a/StringUtilities.java b/src/edu/mills/cs180a/StringUtilities.java index 31f03b8..a1b5707 100644 --- a/src/edu/mills/cs180a/StringUtilities.java +++ b/src/edu/mills/cs180a/StringUtilities.java @@ -40,6 +40,12 @@ public static boolean isSubstring(String substring, String text) { // check if substring appears at the given offset in text private static boolean isSubstringHelper(String substring, String text, int offset) { + int subLength = getLength(substring); + + if(subLength - 1 > text.length() - offset) { + return false; + } + // i is used as an index for substring, offset is used for text for (int i = 1; // The character with index 0 has already been tested. i < substring.length() && offset < text.length(); i++, offset++) { diff --git a/src/edu/mills/cs180a/StringUtilitiesTester.java b/src/edu/mills/cs180a/StringUtilitiesTester.java index 6b686c1..7a53db5 100644 --- a/src/edu/mills/cs180a/StringUtilitiesTester.java +++ b/src/edu/mills/cs180a/StringUtilitiesTester.java @@ -5,6 +5,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; import org.junit.jupiter.params.provider.ValueSource; class StringUtilitiesTester { @@ -27,15 +28,27 @@ void isSubstring_True_Length1Substring() { } @ParameterizedTest - @ValueSource(strings = {"is", "land", "isl", "ands"}) - void isSubstring_True_Substrings(String input) { - assertTrue(StringUtilities.isSubstring(input, "island")); + @ValueSource(strings = {"is", "land", "isl", "and"}) + void isSubstring_True_Substrings(String substring) { + assertTrue(StringUtilities.isSubstring(substring, "island")); } @ParameterizedTest @ValueSource(strings = {"iz", "lanp", "islaz", "anda"}) - void isSubstring_False_Substrings(String input) { - assertFalse(StringUtilities.isSubstring(input, "island")); + void isSubstring_False_Substrings(String substring) { + assertFalse(StringUtilities.isSubstring(substring, "island")); + } + + @ParameterizedTest + @CsvSource(value = {"na bre,banana bread", "Ye.s,Said Ye.ssir"}) + void isSubstring_True_ValidSubstrings(String substring, String text) { + assertTrue(StringUtilities.isSubstring(substring, text)); + } + + @ParameterizedTest + @CsvSource(value = {"hi, HighFive", "yes, yeSs", "lp he,welp hello"}) + void isSubstring_False_InvalidSubstrings(String substring, String text) { + assertFalse(StringUtilities.isSubstring(substring, text)); } } From 93eb4db3748fd79b63a38d99774ff6db00ad5a3d Mon Sep 17 00:00:00 2001 From: OBNA Date: Wed, 28 Oct 2020 17:32:31 -0500 Subject: [PATCH 3/4] Correct test name and amend styling requirements --- src/edu/mills/cs180a/StringUtilitiesTester.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/edu/mills/cs180a/StringUtilitiesTester.java b/src/edu/mills/cs180a/StringUtilitiesTester.java index 7a53db5..03ed96f 100644 --- a/src/edu/mills/cs180a/StringUtilitiesTester.java +++ b/src/edu/mills/cs180a/StringUtilitiesTester.java @@ -35,19 +35,19 @@ void isSubstring_True_Substrings(String substring) { @ParameterizedTest @ValueSource(strings = {"iz", "lanp", "islaz", "anda"}) - void isSubstring_False_Substrings(String substring) { + void isSubstring_False_NonSubstrings(String substring) { assertFalse(StringUtilities.isSubstring(substring, "island")); } @ParameterizedTest @CsvSource(value = {"na bre,banana bread", "Ye.s,Said Ye.ssir"}) - void isSubstring_True_ValidSubstrings(String substring, String text) { + void isSubstring_True_Substrings(String substring, String text) { assertTrue(StringUtilities.isSubstring(substring, text)); } @ParameterizedTest @CsvSource(value = {"hi, HighFive", "yes, yeSs", "lp he,welp hello"}) - void isSubstring_False_InvalidSubstrings(String substring, String text) { + void isSubstring_False_NonSubstrings(String substring, String text) { assertFalse(StringUtilities.isSubstring(substring, text)); } From fb72bd082daef4c92b3286726d4f00e81210a6a3 Mon Sep 17 00:00:00 2001 From: OBNA Date: Wed, 28 Oct 2020 17:35:15 -0500 Subject: [PATCH 4/4] Add space after --- src/edu/mills/cs180a/StringUtilities.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/edu/mills/cs180a/StringUtilities.java b/src/edu/mills/cs180a/StringUtilities.java index a1b5707..4998072 100644 --- a/src/edu/mills/cs180a/StringUtilities.java +++ b/src/edu/mills/cs180a/StringUtilities.java @@ -42,7 +42,7 @@ public static boolean isSubstring(String substring, String text) { private static boolean isSubstringHelper(String substring, String text, int offset) { int subLength = getLength(substring); - if(subLength - 1 > text.length() - offset) { + if (subLength - 1 > text.length() - offset) { return false; }