From 5677cb91f53b1def19f31d1a3645c9d3c77f10e1 Mon Sep 17 00:00:00 2001 From: Hester Liu Date: Wed, 14 Jun 2023 12:04:26 -0700 Subject: [PATCH 01/18] first commit --- src/main/java/StringManipulation.java | 55 +++++++-- .../java/StringManipulationInterface.java | 6 +- src/main/java/org/example/Main.java | 7 ++ src/test/java/StringManipulationTest.java | 109 ++++++++++++------ 4 files changed, 134 insertions(+), 43 deletions(-) create mode 100644 src/main/java/org/example/Main.java diff --git a/src/main/java/StringManipulation.java b/src/main/java/StringManipulation.java index 4deb6f1..5532274 100644 --- a/src/main/java/StringManipulation.java +++ b/src/main/java/StringManipulation.java @@ -1,33 +1,74 @@ public class StringManipulation implements StringManipulationInterface { + private String string; @Override public String getString() { - return null; + + return string; } @Override public void setString(String string) { + this.string = string; } @Override public int count() { - return 0; + if (string==null) { + + return 0; + } + String[] words = string.split("\\s+"); + return words.length; } @Override public String removeNthCharacter(int n, boolean maintainSpacing) { - return null; + if (string == null || string.isEmpty()) { + return ""; + } + StringBuilder result = new StringBuilder(); + for (int i = 0; i < string.length(); i++) { + char c = string.charAt(i); + if ((i + 1) % n != 0) { + if (maintainSpacing || !Character.isWhitespace(c)) { + result.append(c); + } + } + } + return result.toString(); } @Override public String[] getSubStrings(int startWord, int endWord) { - return null; + if (string == null || string.isEmpty()) { + return new String[0]; + } + String[] words = string.trim().split("\\s+"); + if (startWord < 0 || startWord >= words.length || endWord < 0 || endWord >= words.length || startWord > endWord) { + return new String[0]; + } + int numSubstrings = endWord - startWord + 1; + String[] substrings = new String[numSubstrings]; + int index = 0; + for (int i = startWord; i <= endWord; i++) { + substrings[index] = words[i]; + index++; + } + return substrings; } @Override public String restoreString(int[] indices) { - return null; + if (string == null || string.isEmpty() || indices == null || indices.length != string.length()) { + return ""; + } + char[] chars = string.toCharArray(); + char[] restored = new char[indices.length]; + for (int i = 0; i < indices.length; i++) { + restored[indices[i]] = chars[i]; + } + return new String(restored); } - - } + diff --git a/src/main/java/StringManipulationInterface.java b/src/main/java/StringManipulationInterface.java index 87127e7..cc81e80 100644 --- a/src/main/java/StringManipulationInterface.java +++ b/src/main/java/StringManipulationInterface.java @@ -79,10 +79,10 @@ public interface StringManipulationInterface { * The string s will be shuffled such that the character at the ith position moves to indices[i] in the shuffled string. * Return the shuffled string. * example: - * Input: string = "UnitTest", indices = [4,5,6,7,0,1,2,3] + * Input: string = "UnitTest", indices = [4,5,6,7,0,2,1,3] * Output: "TestUnit" * Explanation: - * indices: 4 5 6 7 0 1 2 3 + * indices: 4 5 6 7 0 2 1 3 * String: U n i t T e s t * Actions to Shuffle: Shift U to 4th position, n to 5th position, i to 6th position ...... * Output: T e s t U n i t @@ -95,7 +95,7 @@ public interface StringManipulationInterface { * indices length is the same as the string length. * * throws IllegalArgumentException if not s.length == indices.length == n - * throws IndexOutOfBoundsException if indices[i]< 0 or indices[i]>= string length + * throws IndexOutOfBoundsException if indices[i]< 0 or indices[i]> string length * * @param indices is an integer array for shuffled string new indices positions * the character at the ith position moves to indices[i] in the shuffled string. diff --git a/src/main/java/org/example/Main.java b/src/main/java/org/example/Main.java new file mode 100644 index 0000000..407f157 --- /dev/null +++ b/src/main/java/org/example/Main.java @@ -0,0 +1,7 @@ +package org.example; + +public class Main { + public static void main(String[] args) { + System.out.println("Hello world!"); + } +} \ No newline at end of file diff --git a/src/test/java/StringManipulationTest.java b/src/test/java/StringManipulationTest.java index 6692c2c..c0da72c 100644 --- a/src/test/java/StringManipulationTest.java +++ b/src/test/java/StringManipulationTest.java @@ -28,17 +28,29 @@ public void testCount1() { @Test public void testCount2() { - fail("Not yet implemented"); + manipulatedstring.setString(""); + int length = manipulatedstring.count(); + assertEquals(0, length); } @Test public void testCount3() { - fail("Not yet implemented"); + manipulatedstring.setString("Hello, world!"); + int length = manipulatedstring.count(); + assertEquals(2, length); } @Test public void testCount4() { - fail("Not yet implemented"); + manipulatedstring.setString(" Spaces between words "); + int length = manipulatedstring.count(); + assertEquals(3, length); + } + + public void testCount5() { + manipulatedstring.setString(" ABCDEFD "); + int length = manipulatedstring.count(); + assertEquals(1, length); } @Test @@ -55,27 +67,37 @@ public void testRemoveNthCharacter2() { @Test public void testRemoveNthCharacter3() { - fail("Not yet implemented"); + manipulatedstring.setString("Hello"); + String result = manipulatedstring.removeNthCharacter(0, true); + assertEquals("Hello", result); } @Test public void testRemoveNthCharacter4() { - fail("Not yet implemented"); + manipulatedstring.setString(null); + String result = manipulatedstring.removeNthCharacter(3, true); + assertNull(result); } @Test public void testRemoveNthCharacter5() { - fail("Not yet implemented"); + manipulatedstring.setString("Testing"); + String result = manipulatedstring.removeNthCharacter(2, true); + assertEquals("Tsting", result); } @Test public void testRemoveNthCharacter6() { - fail("Not yet implemented"); + manipulatedstring.setString("Hello, World!"); + String result = manipulatedstring.removeNthCharacter(8, true); + assertEquals("Hello, Wold!", result); } @Test public void testRemoveNthCharacter7() { - fail("Not yet implemented"); + manipulatedstring.setString("Testing"); + String result = manipulatedstring.removeNthCharacter(10, false); + assertEquals("Testing", result); } @Test @@ -88,24 +110,41 @@ public void testGeSubStrings1() { } @Test - public void testGeSubStrings2() { - fail("Not yet implemented"); + public void testGetSubStrings2() { + manipulatedstring.setString("I love programming"); + String[] subStrings = manipulatedstring.getSubStrings(1, 2); + + assertEquals(subStrings[0],"love"); + assertEquals(subStrings[1],"programming"); + } + @Test + public void testGetSubStrings3() { + manipulatedstring.setString(""); + String[] subStrings = manipulatedstring.getSubStrings(0, 1); + assertEquals(0, subStrings.length); } @Test public void testGeSubStrings3() { - fail("Not yet implemented"); + manipulatedstring.setString("Hello, World!"); + String[] subStrings = manipulatedstring.getSubStrings(0, 1); + + assertEquals(subStrings[0],"Hello," ); + assertEquals(subStrings[1],"World!" ); } @Test public void testGeSubStrings4() { - fail("Not yet implemented"); + manipulatedstring.setString("I am amazing"); + String[] subStrings = manipulatedstring.getSubStrings(0, 0); + + assertEquals(subStrings[0],"I"); } @Test public void testGeSubStrings5() { - fail("Not yet implemented"); - } - @Test - public void testGeSubStrings6() { - fail("Not yet implemented"); + manipulatedstring.setString("Java is a programming language"); + String[] subStrings = manipulatedstring.getSubStrings(4, 6); + + assertEquals("programming", subStrings[0]); + assertEquals("language", subStrings[1]); } @Test @@ -119,31 +158,35 @@ public void testRestoreString1() } @Test - public void testRestoreString2() - { - fail("Not yet implemented"); - + public void testRestoreString2() { + manipulatedstring.setString("testing"); + int[] indices = {0, 1, 2, 3, 4, 5, 6}; + String restoredString = manipulatedstring.restoreString(indices); + assertEquals("testing", restoredString); } @Test - public void testRestoreString3() - { - fail("Not yet implemented"); - + public void testRestoreString3() { + manipulatedstring.setString(""); + int[] indices = {}; + String restoredString = manipulatedstring.restoreString(indices); + assertEquals("", restoredString); } @Test - public void testRestoreString4() - { - fail("Not yet implemented"); - + public void testRestoreString4() { + manipulatedstring.setString("hello"); + int[] indices = {4, 3, 2, 1, 0}; + String restoredString = manipulatedstring.restoreString(indices); + assertEquals("olleh", restoredString); } @Test - public void testRestoreString5() - { - fail("Not yet implemented"); - + public void testRestoreString5() { + manipulatedstring.setString("abcde"); + int[] indices = {2, 0, 1, 4, 3}; + String restoredString = manipulatedstring.restoreString(indices); + assertEquals("cabed", restoredString); } } From 3c8109d1b6f1afd30abc4395804cf5d0f20d5b82 Mon Sep 17 00:00:00 2001 From: Hester Liu Date: Fri, 16 Jun 2023 20:51:53 -0700 Subject: [PATCH 02/18] fix code --- src/main/java/StringManipulation.java | 79 +++++++++++++------- src/test/java/StringManipulationTest.java | 91 +++++++++++------------ 2 files changed, 94 insertions(+), 76 deletions(-) diff --git a/src/main/java/StringManipulation.java b/src/main/java/StringManipulation.java index 5532274..e137feb 100644 --- a/src/main/java/StringManipulation.java +++ b/src/main/java/StringManipulation.java @@ -14,26 +14,39 @@ public void setString(String string) { @Override public int count() { - if (string==null) { - - return 0; + String[] result = string.split("\s+"); + int word = 0; + for (String current : result) { + if (!current.isEmpty()) { + word++; + } } - String[] words = string.split("\\s+"); - return words.length; + return word; } @Override public String removeNthCharacter(int n, boolean maintainSpacing) { - if (string == null || string.isEmpty()) { - return ""; + int length = string.length(); + + if (n > string.length()) { + throw new IndexOutOfBoundsException("Out Of Bound"); +// System.out.println("Out Of Bound"); + } + + if (n <= 0) { + throw new IllegalArgumentException("Invalid"); } + StringBuilder result = new StringBuilder(); - for (int i = 0; i < string.length(); i++) { - char c = string.charAt(i); - if ((i + 1) % n != 0) { - if (maintainSpacing || !Character.isWhitespace(c)) { - result.append(c); - } + + for (int index = 0; index < length; index++) { + int compare = index + 1; + + if (compare % n != 0) { + result.append(string.charAt(index)); + + } else if (maintainSpacing == true) { + result.append(' '); } } return result.toString(); @@ -41,34 +54,46 @@ public String removeNthCharacter(int n, boolean maintainSpacing) { @Override public String[] getSubStrings(int startWord, int endWord) { - if (string == null || string.isEmpty()) { - return new String[0]; + if (startWord <= 0 || endWord <= 0 || startWord > endWord) { + throw new IllegalArgumentException("Invalid startWord or endWord"); } - String[] words = string.trim().split("\\s+"); - if (startWord < 0 || startWord >= words.length || endWord < 0 || endWord >= words.length || startWord > endWord) { - return new String[0]; + //String sentence = "This is an example sentence"; + String[] words = this.string.split(" "); + + if (endWord > words.length) { + throw new IndexOutOfBoundsException("Not enough words in the sentence"); } - int numSubstrings = endWord - startWord + 1; - String[] substrings = new String[numSubstrings]; + + String[] subStrings = new String[endWord - startWord + 1]; int index = 0; - for (int i = startWord; i <= endWord; i++) { - substrings[index] = words[i]; + + for (int i = startWord - 1; i < endWord; i++) { + subStrings[index] = words[i]; index++; } - return substrings; + + return subStrings; } + @Override public String restoreString(int[] indices) { if (string == null || string.isEmpty() || indices == null || indices.length != string.length()) { return ""; } - char[] chars = string.toCharArray(); - char[] restored = new char[indices.length]; + + char[] restoredChars = new char[string.length()]; + for (int i = 0; i < indices.length; i++) { - restored[indices[i]] = chars[i]; + int index = indices[i]; + if (index < 0 || index >= string.length()) { + return ""; + } + restoredChars[index] = string.charAt(i); } - return new String(restored); + + return new String(restoredChars); } + } diff --git a/src/test/java/StringManipulationTest.java b/src/test/java/StringManipulationTest.java index c0da72c..def466d 100644 --- a/src/test/java/StringManipulationTest.java +++ b/src/test/java/StringManipulationTest.java @@ -1,3 +1,4 @@ +import jdk.jfr.StackTrace; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -64,40 +65,35 @@ public void testRemoveNthCharacter2() { manipulatedstring.setString("I'd b3tt3r put s0me d161ts in this 5tr1n6, right?"); assertEquals("I' b tt r ut s0 e 16 ts in th s tr n6 r gh ?", manipulatedstring.removeNthCharacter(3, true)); } - @Test public void testRemoveNthCharacter3() { - manipulatedstring.setString("Hello"); - String result = manipulatedstring.removeNthCharacter(0, true); - assertEquals("Hello", result); + manipulatedstring.setString("Test"); + assertEquals("Te t", manipulatedstring.removeNthCharacter(3, true)); } - @Test public void testRemoveNthCharacter4() { - manipulatedstring.setString(null); - String result = manipulatedstring.removeNthCharacter(3, true); - assertNull(result); + manipulatedstring.setString("Hello World"); + assertEquals("He lo Wo ld", manipulatedstring.removeNthCharacter(3, true)); } @Test public void testRemoveNthCharacter5() { - manipulatedstring.setString("Testing"); - String result = manipulatedstring.removeNthCharacter(2, true); - assertEquals("Tsting", result); + assertThrows(IndexOutOfBoundsException.class, () -> { + manipulatedstring.setString("love"); + manipulatedstring.removeNthCharacter(7, true); + }); } - @Test public void testRemoveNthCharacter6() { - manipulatedstring.setString("Hello, World!"); - String result = manipulatedstring.removeNthCharacter(8, true); - assertEquals("Hello, Wold!", result); + assertThrows(IllegalArgumentException.class, () -> { + manipulatedstring.setString(" "); + manipulatedstring.removeNthCharacter(0, true); + }); } - @Test - public void testRemoveNthCharacter7() { - manipulatedstring.setString("Testing"); - String result = manipulatedstring.removeNthCharacter(10, false); - assertEquals("Testing", result); + public void testRemoveNthCharacter7(){ + manipulatedstring.setString("A B C D E F"); + assertEquals("A B C D E F", manipulatedstring.removeNthCharacter(4, true)); } @Test @@ -111,42 +107,39 @@ public void testGeSubStrings1() { @Test public void testGetSubStrings2() { - manipulatedstring.setString("I love programming"); - String[] subStrings = manipulatedstring.getSubStrings(1, 2); - - assertEquals(subStrings[0],"love"); - assertEquals(subStrings[1],"programming"); + manipulatedstring.setString("OnlyOneWord"); + String[] subStrings = manipulatedstring.getSubStrings(1, 1); + assertEquals(subStrings[0],"OnlyOneWord"); } + @Test public void testGetSubStrings3() { - manipulatedstring.setString(""); - String[] subStrings = manipulatedstring.getSubStrings(0, 1); - assertEquals(0, subStrings.length); - } - @Test - public void testGeSubStrings3() { - manipulatedstring.setString("Hello, World!"); - String[] subStrings = manipulatedstring.getSubStrings(0, 1); + assertThrows(IndexOutOfBoundsException.class, () -> { + manipulatedstring.setString("One Two Three Four Five"); + String[] subStrings = manipulatedstring.getSubStrings(4, 6); - assertEquals(subStrings[0],"Hello," ); - assertEquals(subStrings[1],"World!" ); + assertEquals("Four", subStrings[0]); + assertEquals("Five", subStrings[1]); + }); } - @Test - public void testGeSubStrings4() { - manipulatedstring.setString("I am amazing"); - String[] subStrings = manipulatedstring.getSubStrings(0, 0); - assertEquals(subStrings[0],"I"); - } @Test - public void testGeSubStrings5() { - manipulatedstring.setString("Java is a programming language"); - String[] subStrings = manipulatedstring.getSubStrings(4, 6); + public void testGetSubStrings4() { + assertThrows(IllegalArgumentException.class, () -> { + manipulatedstring.setString("One Two Three Four Five"); + String[] subStrings = manipulatedstring.getSubStrings(50,1); + }); + } - assertEquals("programming", subStrings[0]); - assertEquals("language", subStrings[1]); + @Test + public void testGetSubString5() { + assertThrows(IllegalArgumentException.class, () -> { + manipulatedstring.setString("Programming"); + String[] subStrings = manipulatedstring.getSubStrings(0, 0); + }); } + @Test public void testRestoreString1() { @@ -183,10 +176,10 @@ public void testRestoreString4() { @Test public void testRestoreString5() { - manipulatedstring.setString("abcde"); - int[] indices = {2, 0, 1, 4, 3}; + manipulatedstring.setString("world"); + int[] indices = {0, 2, 1, 4, 3}; String restoredString = manipulatedstring.restoreString(indices); - assertEquals("cabed", restoredString); + assertEquals("wrodl", restoredString); } } From b5bde17764824adeca06364af0ec0a30130c6dbe Mon Sep 17 00:00:00 2001 From: Hester Liu Date: Sat, 17 Jun 2023 19:13:33 -0700 Subject: [PATCH 03/18] edit test case --- src/main/java/StringManipulation.java | 2 +- src/test/java/StringManipulationTest.java | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/StringManipulation.java b/src/main/java/StringManipulation.java index e137feb..5177f43 100644 --- a/src/main/java/StringManipulation.java +++ b/src/main/java/StringManipulation.java @@ -14,7 +14,7 @@ public void setString(String string) { @Override public int count() { - String[] result = string.split("\s+"); + String[] result = this.string.split("\s+"); int word = 0; for (String current : result) { if (!current.isEmpty()) { diff --git a/src/test/java/StringManipulationTest.java b/src/test/java/StringManipulationTest.java index def466d..61d1e8d 100644 --- a/src/test/java/StringManipulationTest.java +++ b/src/test/java/StringManipulationTest.java @@ -166,20 +166,20 @@ public void testRestoreString3() { assertEquals("", restoredString); } - @Test + @Test public void testRestoreString4() { manipulatedstring.setString("hello"); - int[] indices = {4, 3, 2, 1, 0}; + int[] indices = {4, 3, 2, 1, -1}; String restoredString = manipulatedstring.restoreString(indices); - assertEquals("olleh", restoredString); + assertEquals("", restoredString); } @Test public void testRestoreString5() { manipulatedstring.setString("world"); - int[] indices = {0, 2, 1, 4, 3}; + int[] indices = {0, 2, 1, 4, 3, 5}; String restoredString = manipulatedstring.restoreString(indices); - assertEquals("wrodl", restoredString); + assertEquals("", restoredString); } } From 51a9f95e0c9611f3064fee753f7ce265adaf31a5 Mon Sep 17 00:00:00 2001 From: Hester Liu Date: Sat, 17 Jun 2023 19:39:19 -0700 Subject: [PATCH 04/18] edit testRestoreString5 --- src/test/java/StringManipulationTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/StringManipulationTest.java b/src/test/java/StringManipulationTest.java index 61d1e8d..80c9ae2 100644 --- a/src/test/java/StringManipulationTest.java +++ b/src/test/java/StringManipulationTest.java @@ -177,7 +177,7 @@ public void testRestoreString4() { @Test public void testRestoreString5() { manipulatedstring.setString("world"); - int[] indices = {0, 2, 1, 4, 3, 5}; + int[] indices = {0, 2, 1, 5}; String restoredString = manipulatedstring.restoreString(indices); assertEquals("", restoredString); } From 65aea50614a0e9537a508957c3cd9a4b10881b21 Mon Sep 17 00:00:00 2001 From: Hester Liu Date: Sat, 17 Jun 2023 19:48:15 -0700 Subject: [PATCH 05/18] edit test case --- src/test/java/StringManipulationTest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/test/java/StringManipulationTest.java b/src/test/java/StringManipulationTest.java index 80c9ae2..2c777da 100644 --- a/src/test/java/StringManipulationTest.java +++ b/src/test/java/StringManipulationTest.java @@ -153,9 +153,9 @@ public void testRestoreString1() @Test public void testRestoreString2() { manipulatedstring.setString("testing"); - int[] indices = {0, 1, 2, 3, 4, 5, 6}; + int[] indices = {}; String restoredString = manipulatedstring.restoreString(indices); - assertEquals("testing", restoredString); + assertEquals("", restoredString); } @Test @@ -177,7 +177,7 @@ public void testRestoreString4() { @Test public void testRestoreString5() { manipulatedstring.setString("world"); - int[] indices = {0, 2, 1, 5}; + int[] indices = {0, 2, 1, 3, 5}; String restoredString = manipulatedstring.restoreString(indices); assertEquals("", restoredString); } From dedb0b3a4392af238cd21ae1c1ec3a1f5db97b07 Mon Sep 17 00:00:00 2001 From: Hester Liu Date: Sat, 17 Jun 2023 20:14:32 -0700 Subject: [PATCH 06/18] edit test case2 --- src/test/java/StringManipulationTest.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/test/java/StringManipulationTest.java b/src/test/java/StringManipulationTest.java index 2c777da..cb5a5fb 100644 --- a/src/test/java/StringManipulationTest.java +++ b/src/test/java/StringManipulationTest.java @@ -43,7 +43,7 @@ public void testCount3() { @Test public void testCount4() { - manipulatedstring.setString(" Spaces between words "); + manipulatedstring.setString("Spaces between words "); int length = manipulatedstring.count(); assertEquals(3, length); } @@ -96,6 +96,14 @@ public void testRemoveNthCharacter7(){ assertEquals("A B C D E F", manipulatedstring.removeNthCharacter(4, true)); } + @Test + public void testRemoveNthCharacter8(){ + assertThrows(IllegalArgumentException.class, () -> { + manipulatedstring.setString("BUBU"); + manipulatedstring.removeNthCharacter(-1, true); + }); + } + @Test public void testGeSubStrings1() { manipulatedstring.setString("This is my string"); From 5c9476e7e386056c104a529930136cc87fb1a71f Mon Sep 17 00:00:00 2001 From: Hester Liu Date: Sat, 17 Jun 2023 20:28:42 -0700 Subject: [PATCH 07/18] edit test case changes --- src/test/java/StringManipulationTest.java | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/src/test/java/StringManipulationTest.java b/src/test/java/StringManipulationTest.java index cb5a5fb..b665215 100644 --- a/src/test/java/StringManipulationTest.java +++ b/src/test/java/StringManipulationTest.java @@ -70,11 +70,13 @@ public void testRemoveNthCharacter3() { manipulatedstring.setString("Test"); assertEquals("Te t", manipulatedstring.removeNthCharacter(3, true)); } + @Test - public void testRemoveNthCharacter4() { - manipulatedstring.setString("Hello World"); - assertEquals("He lo Wo ld", manipulatedstring.removeNthCharacter(3, true)); - } + public void testRemoveNthCharacter8(){ + assertThrows(IllegalArgumentException.class, () -> { + manipulatedstring.setString("BUBU"); + manipulatedstring.removeNthCharacter(-3, true); + }); @Test public void testRemoveNthCharacter5() { @@ -93,15 +95,10 @@ public void testRemoveNthCharacter6() { @Test public void testRemoveNthCharacter7(){ manipulatedstring.setString("A B C D E F"); - assertEquals("A B C D E F", manipulatedstring.removeNthCharacter(4, true)); + assertEquals("", manipulatedstring.removeNthCharacter(1, false)); } - @Test - public void testRemoveNthCharacter8(){ - assertThrows(IllegalArgumentException.class, () -> { - manipulatedstring.setString("BUBU"); - manipulatedstring.removeNthCharacter(-1, true); - }); + } @Test From ecedf0ada0ab70c8c358169ae1b7b84ab5082165 Mon Sep 17 00:00:00 2001 From: Hester Liu Date: Sat, 17 Jun 2023 20:35:07 -0700 Subject: [PATCH 08/18] edit testcase change2 --- src/test/java/StringManipulationTest.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/test/java/StringManipulationTest.java b/src/test/java/StringManipulationTest.java index b665215..82d982f 100644 --- a/src/test/java/StringManipulationTest.java +++ b/src/test/java/StringManipulationTest.java @@ -72,26 +72,28 @@ public void testRemoveNthCharacter3() { } @Test - public void testRemoveNthCharacter8(){ + public void testRemoveNthCharacter4(){ assertThrows(IllegalArgumentException.class, () -> { manipulatedstring.setString("BUBU"); manipulatedstring.removeNthCharacter(-3, true); }); @Test - public void testRemoveNthCharacter5() { + public void testRemoveNthCharacter5(){ assertThrows(IndexOutOfBoundsException.class, () -> { manipulatedstring.setString("love"); manipulatedstring.removeNthCharacter(7, true); }); } + @Test - public void testRemoveNthCharacter6() { + public void testRemoveNthCharacter6(){ assertThrows(IllegalArgumentException.class, () -> { manipulatedstring.setString(" "); manipulatedstring.removeNthCharacter(0, true); }); } + @Test public void testRemoveNthCharacter7(){ manipulatedstring.setString("A B C D E F"); @@ -99,8 +101,6 @@ public void testRemoveNthCharacter7(){ } - } - @Test public void testGeSubStrings1() { manipulatedstring.setString("This is my string"); From 76238744e603ed7d414b6198f9bab4790a9e5fd3 Mon Sep 17 00:00:00 2001 From: Hester Liu Date: Sat, 17 Jun 2023 20:42:36 -0700 Subject: [PATCH 09/18] edit change3 --- src/test/java/StringManipulationTest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/test/java/StringManipulationTest.java b/src/test/java/StringManipulationTest.java index 82d982f..ddbd1a4 100644 --- a/src/test/java/StringManipulationTest.java +++ b/src/test/java/StringManipulationTest.java @@ -77,6 +77,7 @@ public void testRemoveNthCharacter4(){ manipulatedstring.setString("BUBU"); manipulatedstring.removeNthCharacter(-3, true); }); + } @Test public void testRemoveNthCharacter5(){ From 6eef9830033d8d42526f14e9a068266bb3d88e9d Mon Sep 17 00:00:00 2001 From: Hester Liu Date: Sat, 17 Jun 2023 21:04:21 -0700 Subject: [PATCH 10/18] change remove --- src/main/java/StringManipulation.java | 4 ++++ src/test/java/StringManipulationTest.java | 8 ++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/java/StringManipulation.java b/src/main/java/StringManipulation.java index 5177f43..68c1d02 100644 --- a/src/main/java/StringManipulation.java +++ b/src/main/java/StringManipulation.java @@ -26,6 +26,10 @@ public int count() { @Override public String removeNthCharacter(int n, boolean maintainSpacing) { + + if (this.string == null || this.string.isEmpty()){ + return ""; + } int length = string.length(); if (n > string.length()) { diff --git a/src/test/java/StringManipulationTest.java b/src/test/java/StringManipulationTest.java index ddbd1a4..e459130 100644 --- a/src/test/java/StringManipulationTest.java +++ b/src/test/java/StringManipulationTest.java @@ -67,8 +67,8 @@ public void testRemoveNthCharacter2() { } @Test public void testRemoveNthCharacter3() { - manipulatedstring.setString("Test"); - assertEquals("Te t", manipulatedstring.removeNthCharacter(3, true)); + //null + assertEquals("", manipulatedstring.removeNthCharacter(3, true)); } @Test @@ -90,14 +90,14 @@ public void testRemoveNthCharacter5(){ @Test public void testRemoveNthCharacter6(){ assertThrows(IllegalArgumentException.class, () -> { - manipulatedstring.setString(" "); + manipulatedstring.setString(" "); manipulatedstring.removeNthCharacter(0, true); }); } @Test public void testRemoveNthCharacter7(){ - manipulatedstring.setString("A B C D E F"); + manipulatedstring.setString(""); //empty assertEquals("", manipulatedstring.removeNthCharacter(1, false)); } From 61a4cb7f72523d5db1015ce30aff131ce078a8b3 Mon Sep 17 00:00:00 2001 From: Hester Liu Date: Sat, 17 Jun 2023 21:23:29 -0700 Subject: [PATCH 11/18] edit testcase6 --- src/test/java/StringManipulationTest.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/test/java/StringManipulationTest.java b/src/test/java/StringManipulationTest.java index e459130..626963e 100644 --- a/src/test/java/StringManipulationTest.java +++ b/src/test/java/StringManipulationTest.java @@ -113,9 +113,10 @@ public void testGeSubStrings1() { @Test public void testGetSubStrings2() { + assertThrows(IllegalArgumentException.class, () -> { manipulatedstring.setString("OnlyOneWord"); - String[] subStrings = manipulatedstring.getSubStrings(1, 1); - assertEquals(subStrings[0],"OnlyOneWord"); + String[] subStrings = manipulatedstring.getSubStrings(1, -1); + }); } @Test From 0ce6361cdd7bde2f05d269b831088e23c1f26a03 Mon Sep 17 00:00:00 2001 From: Hester Liu Date: Sat, 17 Jun 2023 21:30:00 -0700 Subject: [PATCH 12/18] edit count --- src/main/java/StringManipulation.java | 4 ++++ src/test/java/StringManipulationTest.java | 3 +-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/StringManipulation.java b/src/main/java/StringManipulation.java index 68c1d02..70b8fd6 100644 --- a/src/main/java/StringManipulation.java +++ b/src/main/java/StringManipulation.java @@ -14,6 +14,10 @@ public void setString(String string) { @Override public int count() { + + if (this.string == null || this.string.isEmpty()){ + return 0; + } String[] result = this.string.split("\s+"); int word = 0; for (String current : result) { diff --git a/src/test/java/StringManipulationTest.java b/src/test/java/StringManipulationTest.java index 626963e..f32b0d4 100644 --- a/src/test/java/StringManipulationTest.java +++ b/src/test/java/StringManipulationTest.java @@ -36,9 +36,8 @@ public void testCount2() { @Test public void testCount3() { - manipulatedstring.setString("Hello, world!"); int length = manipulatedstring.count(); - assertEquals(2, length); + assertEquals(0, length); } @Test From 8777dc30c6cd92fd162d43ae7c1ddcff32204c95 Mon Sep 17 00:00:00 2001 From: Hester Liu Date: Sat, 17 Jun 2023 21:53:48 -0700 Subject: [PATCH 13/18] edit test case 7 --- src/main/java/StringManipulation.java | 13 +++++++++---- src/test/java/StringManipulationTest.java | 7 +++++-- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/main/java/StringManipulation.java b/src/main/java/StringManipulation.java index 70b8fd6..d0cbfb5 100644 --- a/src/main/java/StringManipulation.java +++ b/src/main/java/StringManipulation.java @@ -15,9 +15,14 @@ public void setString(String string) { @Override public int count() { - if (this.string == null || this.string.isEmpty()){ + if (this.string == null){ + throw new NullPointerException("NullPointerException"); + } + + if (this.string.isEmpty()){ return 0; } + String[] result = this.string.split("\s+"); int word = 0; for (String current : result) { @@ -32,7 +37,7 @@ public int count() { public String removeNthCharacter(int n, boolean maintainSpacing) { if (this.string == null || this.string.isEmpty()){ - return ""; + throw new NullPointerException("NullPointerException"); } int length = string.length(); @@ -87,7 +92,7 @@ public String[] getSubStrings(int startWord, int endWord) { @Override public String restoreString(int[] indices) { if (string == null || string.isEmpty() || indices == null || indices.length != string.length()) { - return ""; + throw new NullPointerException("NullPointerException"); } char[] restoredChars = new char[string.length()]; @@ -95,7 +100,7 @@ public String restoreString(int[] indices) { for (int i = 0; i < indices.length; i++) { int index = indices[i]; if (index < 0 || index >= string.length()) { - return ""; + throw new IndexOutOfBoundsException("Not enough words in the sentence"); } restoredChars[index] = string.charAt(i); } diff --git a/src/test/java/StringManipulationTest.java b/src/test/java/StringManipulationTest.java index f32b0d4..f35ecad 100644 --- a/src/test/java/StringManipulationTest.java +++ b/src/test/java/StringManipulationTest.java @@ -66,10 +66,13 @@ public void testRemoveNthCharacter2() { } @Test public void testRemoveNthCharacter3() { - //null - assertEquals("", manipulatedstring.removeNthCharacter(3, true)); + //null + assertThrows(NullPointerException.class,() ->{ + manipulatedstring.removeNthCharacter(3, true); + }); } + @Test public void testRemoveNthCharacter4(){ assertThrows(IllegalArgumentException.class, () -> { From 9dd1e88ea273abe1b85ade871c615ab4faa61b87 Mon Sep 17 00:00:00 2001 From: Hester Liu Date: Sat, 17 Jun 2023 22:05:45 -0700 Subject: [PATCH 14/18] edit exception --- src/test/java/StringManipulationTest.java | 51 +++++++++++++---------- 1 file changed, 28 insertions(+), 23 deletions(-) diff --git a/src/test/java/StringManipulationTest.java b/src/test/java/StringManipulationTest.java index f35ecad..70da7b2 100644 --- a/src/test/java/StringManipulationTest.java +++ b/src/test/java/StringManipulationTest.java @@ -36,8 +36,9 @@ public void testCount2() { @Test public void testCount3() { + assertThrows(IllegalArgumentException.class, () -> { int length = manipulatedstring.count(); - assertEquals(0, length); + }); } @Test @@ -68,17 +69,17 @@ public void testRemoveNthCharacter2() { public void testRemoveNthCharacter3() { //null assertThrows(NullPointerException.class,() ->{ - manipulatedstring.removeNthCharacter(3, true); - }); + manipulatedstring.removeNthCharacter(3, true); + }); } @Test public void testRemoveNthCharacter4(){ assertThrows(IllegalArgumentException.class, () -> { - manipulatedstring.setString("BUBU"); - manipulatedstring.removeNthCharacter(-3, true); - }); + manipulatedstring.setString("BUBU"); + manipulatedstring.removeNthCharacter(-3, true); + }); } @Test @@ -99,8 +100,9 @@ public void testRemoveNthCharacter6(){ @Test public void testRemoveNthCharacter7(){ - manipulatedstring.setString(""); //empty - assertEquals("", manipulatedstring.removeNthCharacter(1, false)); + assertThrows(IllegalArgumentException.class, () -> { + manipulatedstring.setString(""); //empty + }); } @@ -116,9 +118,9 @@ public void testGeSubStrings1() { @Test public void testGetSubStrings2() { assertThrows(IllegalArgumentException.class, () -> { - manipulatedstring.setString("OnlyOneWord"); - String[] subStrings = manipulatedstring.getSubStrings(1, -1); - }); + manipulatedstring.setString("OnlyOneWord"); + String[] subStrings = manipulatedstring.getSubStrings(1, -1); + }); } @Test @@ -161,26 +163,29 @@ public void testRestoreString1() @Test public void testRestoreString2() { - manipulatedstring.setString("testing"); - int[] indices = {}; - String restoredString = manipulatedstring.restoreString(indices); - assertEquals("", restoredString); + assertThrows(IllegalArgumentException.class, () -> { + manipulatedstring.setString("testing"); + int[] indices = {}; + String restoredString = manipulatedstring.restoreString(indices); + }); } @Test public void testRestoreString3() { - manipulatedstring.setString(""); - int[] indices = {}; - String restoredString = manipulatedstring.restoreString(indices); - assertEquals("", restoredString); + assertThrows(NullPointerException.class,() ->{ + manipulatedstring.setString(""); + int[] indices = {}; + String restoredString = manipulatedstring.restoreString(indices); + }); } @Test public void testRestoreString4() { - manipulatedstring.setString("hello"); - int[] indices = {4, 3, 2, 1, -1}; - String restoredString = manipulatedstring.restoreString(indices); - assertEquals("", restoredString); + assertThrows(IndexOutOfBoundsException.class, () -> { + manipulatedstring.setString("hello"); + int[] indices = {4, 3, 2, 1, -1}; + String restoredString = manipulatedstring.restoreString(indices); + }); } @Test From 7ebbb62f3b1f0eed6958aee03deb92cddef636bf Mon Sep 17 00:00:00 2001 From: Hester Liu Date: Sat, 17 Jun 2023 22:23:53 -0700 Subject: [PATCH 15/18] edit change --- src/main/java/StringManipulation.java | 14 ++++++-- src/test/java/StringManipulationTest.java | 44 ++++++++++++----------- 2 files changed, 34 insertions(+), 24 deletions(-) diff --git a/src/main/java/StringManipulation.java b/src/main/java/StringManipulation.java index d0cbfb5..75e1038 100644 --- a/src/main/java/StringManipulation.java +++ b/src/main/java/StringManipulation.java @@ -14,7 +14,7 @@ public void setString(String string) { @Override public int count() { - + if (this.string == null){ throw new NullPointerException("NullPointerException"); } @@ -35,7 +35,7 @@ public int count() { @Override public String removeNthCharacter(int n, boolean maintainSpacing) { - + if (this.string == null || this.string.isEmpty()){ throw new NullPointerException("NullPointerException"); } @@ -91,7 +91,15 @@ public String[] getSubStrings(int startWord, int endWord) { @Override public String restoreString(int[] indices) { - if (string == null || string.isEmpty() || indices == null || indices.length != string.length()) { + if (this.string.isEmpty()){ + return ""; + } + + if ( indices.length != string.length()) { + throw new IllegalArgumentException("Invalid"); + } + + if (string == null || indices == null) { throw new NullPointerException("NullPointerException"); } diff --git a/src/test/java/StringManipulationTest.java b/src/test/java/StringManipulationTest.java index 70da7b2..c45095d 100644 --- a/src/test/java/StringManipulationTest.java +++ b/src/test/java/StringManipulationTest.java @@ -36,8 +36,8 @@ public void testCount2() { @Test public void testCount3() { - assertThrows(IllegalArgumentException.class, () -> { - int length = manipulatedstring.count(); + assertThrows(NullPointerException.class, () -> { + int length = manipulatedstring.count(); }); } @@ -68,18 +68,18 @@ public void testRemoveNthCharacter2() { @Test public void testRemoveNthCharacter3() { //null - assertThrows(NullPointerException.class,() ->{ - manipulatedstring.removeNthCharacter(3, true); - }); + assertThrows(NullPointerException.class,() ->{ + manipulatedstring.removeNthCharacter(3, true); + }); } @Test public void testRemoveNthCharacter4(){ - assertThrows(IllegalArgumentException.class, () -> { + assertThrows(IllegalArgumentException.class, () -> { manipulatedstring.setString("BUBU"); manipulatedstring.removeNthCharacter(-3, true); - }); + }); } @Test @@ -93,16 +93,18 @@ public void testRemoveNthCharacter5(){ @Test public void testRemoveNthCharacter6(){ assertThrows(IllegalArgumentException.class, () -> { - manipulatedstring.setString(" "); + manipulatedstring.setString(" "); manipulatedstring.removeNthCharacter(0, true); }); } @Test public void testRemoveNthCharacter7(){ - assertThrows(IllegalArgumentException.class, () -> { + assertThrows(NullPointerException.class, () -> { manipulatedstring.setString(""); //empty - }); + manipulatedstring.removeNthCharacter(0,true); + + }); } @@ -120,7 +122,7 @@ public void testGetSubStrings2() { assertThrows(IllegalArgumentException.class, () -> { manipulatedstring.setString("OnlyOneWord"); String[] subStrings = manipulatedstring.getSubStrings(1, -1); - }); + }); } @Test @@ -167,33 +169,33 @@ public void testRestoreString2() { manipulatedstring.setString("testing"); int[] indices = {}; String restoredString = manipulatedstring.restoreString(indices); - }); + }); } @Test public void testRestoreString3() { - assertThrows(NullPointerException.class,() ->{ - manipulatedstring.setString(""); + assertThrows(NullPointerException.class,() ->{ int[] indices = {}; String restoredString = manipulatedstring.restoreString(indices); - }); + }); } - @Test + @Test public void testRestoreString4() { assertThrows(IndexOutOfBoundsException.class, () -> { manipulatedstring.setString("hello"); int[] indices = {4, 3, 2, 1, -1}; String restoredString = manipulatedstring.restoreString(indices); - }); + }); } @Test public void testRestoreString5() { - manipulatedstring.setString("world"); - int[] indices = {0, 2, 1, 3, 5}; - String restoredString = manipulatedstring.restoreString(indices); - assertEquals("", restoredString); + assertThrows(IndexOutOfBoundsException.class, () -> { + manipulatedstring.setString("world"); + int[] indices = {0, 2, 1, 3, 5}; + String restoredString = manipulatedstring.restoreString(indices); + }); } } From 85743aad46c9601023c2046945a3b90b4c720f69 Mon Sep 17 00:00:00 2001 From: Hester Liu Date: Mon, 19 Jun 2023 12:53:24 -0700 Subject: [PATCH 16/18] delete file --- src/main/java/org/example/Main.java | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 src/main/java/org/example/Main.java diff --git a/src/main/java/org/example/Main.java b/src/main/java/org/example/Main.java deleted file mode 100644 index 407f157..0000000 --- a/src/main/java/org/example/Main.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.example; - -public class Main { - public static void main(String[] args) { - System.out.println("Hello world!"); - } -} \ No newline at end of file From c295ac7923c0355da47d916d31b8a1656a576b01 Mon Sep 17 00:00:00 2001 From: Hester Liu Date: Mon, 19 Jun 2023 17:36:04 -0700 Subject: [PATCH 17/18] fix code after peers review --- src/test/java/StringManipulationTest.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/test/java/StringManipulationTest.java b/src/test/java/StringManipulationTest.java index c45095d..ec53b58 100644 --- a/src/test/java/StringManipulationTest.java +++ b/src/test/java/StringManipulationTest.java @@ -121,7 +121,8 @@ public void testGeSubStrings1() { public void testGetSubStrings2() { assertThrows(IllegalArgumentException.class, () -> { manipulatedstring.setString("OnlyOneWord"); - String[] subStrings = manipulatedstring.getSubStrings(1, -1); + // String[] subStrings = + manipulatedstring.getSubStrings(1, -1); }); } @@ -168,7 +169,8 @@ public void testRestoreString2() { assertThrows(IllegalArgumentException.class, () -> { manipulatedstring.setString("testing"); int[] indices = {}; - String restoredString = manipulatedstring.restoreString(indices); + //String restoredString = + manipulatedstring.restoreString(indices); }); } @@ -176,7 +178,8 @@ public void testRestoreString2() { public void testRestoreString3() { assertThrows(NullPointerException.class,() ->{ int[] indices = {}; - String restoredString = manipulatedstring.restoreString(indices); + //String restoredString = + manipulatedstring.restoreString(indices); }); } @@ -185,7 +188,8 @@ public void testRestoreString4() { assertThrows(IndexOutOfBoundsException.class, () -> { manipulatedstring.setString("hello"); int[] indices = {4, 3, 2, 1, -1}; - String restoredString = manipulatedstring.restoreString(indices); + // String restoredString = + manipulatedstring.restoreString(indices); }); } @@ -194,7 +198,8 @@ public void testRestoreString5() { assertThrows(IndexOutOfBoundsException.class, () -> { manipulatedstring.setString("world"); int[] indices = {0, 2, 1, 3, 5}; - String restoredString = manipulatedstring.restoreString(indices); + //String restoredString = + manipulatedstring.restoreString(indices); }); } From ed462c1236c3e0ef5e6d72d9f4efeba92b01a982 Mon Sep 17 00:00:00 2001 From: Hester Liu Date: Mon, 19 Jun 2023 17:41:46 -0700 Subject: [PATCH 18/18] fix code by delete --- src/test/java/StringManipulationTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/test/java/StringManipulationTest.java b/src/test/java/StringManipulationTest.java index ec53b58..2d18e98 100644 --- a/src/test/java/StringManipulationTest.java +++ b/src/test/java/StringManipulationTest.java @@ -37,7 +37,8 @@ public void testCount2() { @Test public void testCount3() { assertThrows(NullPointerException.class, () -> { - int length = manipulatedstring.count(); + //int length = + manipulatedstring.count(); }); }