diff --git a/src/main/java/StringManipulation.java b/src/main/java/StringManipulation.java index 4deb6f1..ac480fe 100644 --- a/src/main/java/StringManipulation.java +++ b/src/main/java/StringManipulation.java @@ -1,33 +1,88 @@ public class StringManipulation implements StringManipulationInterface { + @Override + public String getString() { + if (this.string != null) { + return this.string; + } - @Override - public String getString() { - return null; - } + return null; + } - @Override - public void setString(String string) { - } + @Override + public void setString(String string) { + this.string = string; + } - @Override - public int count() { - return 0; - } + @Override + public int count() { + String words = this.string.trim(); + if (!words.isEmpty()) { + return words.split("\\s+").length; + } + return 0; + } - @Override - public String removeNthCharacter(int n, boolean maintainSpacing) { - return null; - } + @Override + public String removeNthCharacter(int n, boolean maintainSpacing) { + char letter = this.string.charAt(n); + if (maintainSpacing) + { + this.string = this.string.replace(letter, " "); + return this.string; + } + else + { + this.string = this.string.replace(letter, ""); + return this.string; + } + return null; + } - @Override - public String[] getSubStrings(int startWord, int endWord) { - return null; - } + @Override + public String[] getSubStrings(int startWord, int endWord) { + String[] words = this.string.split(" "); - @Override - public String restoreString(int[] indices) { - return null; - } + if (startWord <= 0 || endWord <= 0 || startWord > endWord) + { + throw new IllegalArgumentException("Invalid startWord or endWord."); + } + if (endWord > words.length) + { + throw new IndexOutOfBoundsException("The string has less than endWord words."); + } + + int numSubStrings = endWord - startWord + 1; + String[] subStrings = new String[numSubStrings]; + + for (int i = startWord - 1; i <= endWord - 1; i++) + { + subStrings[i - startWord + 1] = words[i]; + } + + return subStrings; + } + + @Override + public String restoreString(int[] indices) { + if (this.string.length != indices.length) + { + throw new IllegalArgumentException("Indices lengths do not match"); + } + + char[] shuffledWords = new char[indices.length]; + + for (int i = 0; i < indices.length; i++) + { + int index = indices[i]; + if (index < 0 || index >= indices.length) + { + throw new IndexOutOfBoundsException("Invalid index: " + index); + } + shuffledWords[index] = s.charAt(i); + } + + return new String(shuffledWords); + } } diff --git a/src/test/java/StringManipulationTest.java b/src/test/java/StringManipulationTest.java index 6692c2c..8d9e5ce 100644 --- a/src/test/java/StringManipulationTest.java +++ b/src/test/java/StringManipulationTest.java @@ -21,24 +21,30 @@ public void tearDown() { @Test public void testCount1() { - manipulatedstring.setString("This is my string"); + manipulatedstring.setString("Work test string"); int length = manipulatedstring.count(); assertEquals(4, length); } @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("Testing"); + int length = manipulatedstring.count(); + assertEquals(1, length); } @Test public void testCount4() { - fail("Not yet implemented"); + manipulatedstring.setString("Method is tested for longer text now"); + int length = manipulatedstring.count(); + assertEquals(7, length); } @Test @@ -55,27 +61,32 @@ public void testRemoveNthCharacter2() { @Test public void testRemoveNthCharacter3() { - fail("Not yet implemented"); + manipulatedstring.setString("Removing every multiple of four's position"); + assertEquals("Remvin evry ultpleof ours psiton", manipulatedstring.removeNthCharacter(4, false)); } @Test public void testRemoveNthCharacter4() { - fail("Not yet implemented"); + manipulatedstring.setString("Removing every multiple of four's position"); + assertEquals("Rem vin ev ry ult ple of our s p sit on", manipulatedstring.removeNthCharacter(4, true)); } @Test public void testRemoveNthCharacter5() { - fail("Not yet implemented"); + manipulatedstring.setString("a simpler phrase for a simple test"); + assertEquals("a simpler phrase for a simple tes ", manipulatedstring.removeNthCharacter(34, true)); } @Test public void testRemoveNthCharacter6() { - fail("Not yet implemented"); + manipulatedstring.setString("a simpler phrase for a simple test"); + assertEquals("a simpler phrase for a simple tes", manipulatedstring.removeNthCharacter(34, false)); } @Test public void testRemoveNthCharacter7() { - fail("Not yet implemented"); + manipulatedstring.setString("Arkansas is a big state perhaps"); + assertEquals("", manipulatedstring.removeNthCharacter(1, false)); } @Test @@ -89,23 +100,43 @@ public void testGeSubStrings1() { @Test public void testGeSubStrings2() { - fail("Not yet implemented"); + manipulatedstring.setString("A blanket statement has been made"); + String [] sStings = manipulatedstring.getSubStrings(1, 4); + + assertEquals(sStings[0], "A"); + assertEquals(sStings[1], "has"); } @Test public void testGeSubStrings3() { - fail("Not yet implemented"); + manipulatedstring.setString("there are a few words here"); + String [] sStings = manipulatedstring.getSubStrings(1, 2); + + assertEquals(sStings[0], "there"); + assertEquals(sStings[1], "are"); } @Test public void testGeSubStrings4() { - fail("Not yet implemented"); + manipulatedstring.setString("batmanium is no real element"); + String [] sStings = manipulatedstring.getSubStrings(3, 5); + + assertEquals(sStings[0], "no"); + assertEquals(sStings[1], "element"); } @Test public void testGeSubStrings5() { - fail("Not yet implemented"); + manipulatedstring.setString("no one should smoke, as smoking is bad"); + String [] sStings = manipulatedstring.getSubStrings(1, 6); + + assertEquals(sStings[0], "no"); + assertEquals(sStings[1], "smoking"); } @Test public void testGeSubStrings6() { - fail("Not yet implemented"); + manipulatedstring.setString("Extract the main idea from this sentence"); + String [] sStings = manipulatedstring.getSubStrings(1, 7); + + assertEquals(sStings[0], "Extract"); + assertEquals(sStings[1], "sentence"); } @Test @@ -121,29 +152,41 @@ public void testRestoreString1() @Test public void testRestoreString2() { - fail("Not yet implemented"); - + manipulatedstring.setString("Neil Armstrong"); + int [] array; + array=new int[]{13,12,11,10,9,8,7,6,5,4,3,2,1,0}; + String restoreString = manipulatedstring.restoreString(array); + assertEquals(restoreString, "gnortsmrA lieN"); } @Test public void testRestoreString3() { - fail("Not yet implemented"); - + manipulatedstring.setString("desperation"); + int [] array; + array=new int[]{6,5,9,3,1,4,10,0,2,8,7}; + String restoreString = manipulatedstring.restoreString(array); + assertEquals(restoreString, "aropeendsit"); } @Test public void testRestoreString4() { - fail("Not yet implemented"); - + manipulatedstring.setString("contradiction"); + int [] array; + array=new int[]{5,0,8,1,4,6,2,11,9,10,12,7,3}; + String restoreString = manipulatedstring.restoreString(array); + assertEquals(restoreString, "accordnotinit"); } @Test public void testRestoreString5() { - fail("Not yet implemented"); - + manipulatedstring.setString("easy"); + int [] array; + array=new int[]{3,0,1,2}; + String restoreString = manipulatedstring.restoreString(array); + assertEquals(restoreString, "yeas"); } }