Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

PLEASE HURRY Software Testing Don't make any changes to the provided code. Please write a test case for the below prompt using the provided java

PLEASE HURRY

Software Testing

Don't make any changes to the provided code. Please write a test case for the below prompt using the provided java programs

Use the setString() function in MyCustomStringInterface to set the value to Peter Piper picked a peck of pickled peppers.. Then test to see if reverseNCharacters() function returns the reversed string when the characters are reversed in groups of 4 and padding is disabled (in this case, etePiP r repkcipa decep fo kcip delkpep srep.).

Next, test to see if reverseNCharacters() provides the correct output for the same input and grouping when padding is enabled (in this case, etePiP r repkcipa decep fo kcip delkpep srepXXX.).

MyCustomString.java

public class MyCustomString implements MyCustomStringInterface { private String string;

@Override public String getString() { return string; }

@Override public void setString(String string) { this.string = string; }

@Override public int countNumbers() { StringBuffer tmpString = new StringBuffer(); int count=0; boolean inNumber=false; //avoid null pointer exception! if(string==null || string.isEmpty()) return 0; for (int i = 0; i < string.length(); i++) { char ch = string.charAt(i); if (Character.isDigit(ch)) { if (!inNumber) { count++; inNumber = true; } } else { if (inNumber) { inNumber = false; } } } return count; }

@Override public String reverseNCharacters(int n, boolean padded) { if (string == null) { throw new NullPointerException(); } if (n <= 0) { throw new IllegalArgumentException(); } StringBuffer tmpString = new StringBuffer(); StringBuffer resultString = new StringBuffer(); StringBuffer currString = new StringBuffer(string);

int i; for (i = 0; i + n < currString.length(); i+=n) { tmpString = tmpString.append(new StringBuffer(currString.substring(i,i+n)).reverse()); } if (padded) { for (int x = n - (currString.length() - i); x > 0; x--) currString.append('X'); } tmpString = tmpString.append(new StringBuffer(currString.substring(i)).reverse());

return tmpString.toString(); }

@Override public void convertDigitsToNamesInSubstring(int startPosition, int endPosition) { if (string == null) { throw new NullPointerException(); } if ((startPosition > endPosition)) { throw new IllegalArgumentException(); }

if (endPosition > string.length() || (startPosition < 1)){ throw new MyIndexOutOfBoundsException(); } StringBuffer tmpString = new StringBuffer(); String tmpDigit = new String(); boolean look_back = false; for (int i = 0; i < string.length(); i++) { char ch = string.charAt(i); if ((i < startPosition - 1) || (i > endPosition - 1)) { if(look_back) { look_back = false; } tmpString.append(ch); continue; } else { if (Character.isDigit(ch)) { switch (ch) { case '0': tmpDigit = "Zero"; break; case '1': tmpDigit = "One"; break; case '2': tmpDigit = "Two"; break; case '3': tmpDigit = "Three"; break; case '4': tmpDigit = "Four"; break; case '5': tmpDigit = "Five"; break; case '6': tmpDigit = "Six"; break; case '7': tmpDigit = "Seven"; break; case '8': tmpDigit = "Eight"; break; case '9': tmpDigit = "Nine"; break; } if(look_back) tmpString.append(tmpDigit.toLowerCase()); else tmpString.append(tmpDigit); look_back = true; } else { if(look_back){ look_back = false;} tmpString.append(ch);

} } } string = tmpString.toString(); } }

MyCustomStringInterface.java

/** * This is an interface for a simple class that represents a string, defined * as a sequence of characters. * * This interface should NOT be altered in any way. */ public interface MyCustomStringInterface {

/** * Returns the current string. If the string is null, it should return null. * * @return Current string */ String getString();

/** * Sets the value of the current string. * * @param string The value to be set */ void setString(String string);

/** * Returns the number of numbers in the current string, where a number is defined as an * unbroken sequence of digits. * * If the current string is null, empty, or uninitialized, the method should return 0. * * Examples: * - countNumbers would return 2 for string "My numbers are 11 and 9". * * @return Number of numbers in the current string */ int countNumbers();

/** * Returns a string that consists of all characters in the original string with each segment of n characters * reversed. * If padded is true, the final segment of characters will have the character 'X' added to it enough time to make * a full segment. *

*

* Examples: * - For n=2 and padded=true, the method would return the string with every pair of characters swapped in place, and * if there were an odd number of characters, an X would be added to the last segment before it is reversed. * - For n=3 and padded=false, the method would return the string with every segment of 3 characters reversed in place, * and the final segment would be reversed even if less than 3 characters without any additional characters added. *

* Values n and padded are passed as parameters. The starting character is considered to be in Position 1. * * @param n Determines size of the string segments to be reversed * @param padded Determines whether an incomplete final segment will be padded with 'X'. * @return String with the segments in their original order and the contents of the segments reversed. * @throws NullPointerException If the current string is null or uninitialized. * @throws IllegalArgumentException If "n" less than or equal to zero, and the current string is not null. */ String reverseNCharacters(int n, boolean padded);

/** * Replace the individual digits in the current string, between startPosition and endPosition * (included), with the corresponding English names of those digits, with the first letter of a number (unbroken * string of digits) capitalized. The first character in the string is considered to be in Position 1. * * Examples: * - String 460 would be converted to Foursixzero * - String 416 would be converted to Fouronesix * * @param startPosition Position of the first character to consider * @param endPosition Position of the last character to consider

* @throws NullPointerException If the current string is null or uninitialized. * @throws IllegalArgumentException If "startPosition" > "endPosition" * @throws MyIndexOutOfBoundsException If "startPosition" < 1 or "endPosition" is out of bounds (greater than the * length of the string) and "startPosition" <= "endPosition" */ void convertDigitsToNamesInSubstring(int startPosition, int endPosition); }

MyIndexOutOfBoundsException.java

public class MyIndexOutOfBoundsException extends RuntimeException { private static final long serialVersionUID = 8226094121089030034L;

public MyIndexOutOfBoundsException(String message) { super(message); }

public MyIndexOutOfBoundsException() { super(); } }

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Beyond Big Data Using Social MDM To Drive Deep Customer Insight

Authors: Martin Oberhofer, Eberhard Hechler

1st Edition

0133509796, 9780133509793

More Books

Students also viewed these Databases questions

Question

3. How does nonverbal communication express cultural values?

Answered: 1 week ago

Question

7. Where Do We Begin?

Answered: 1 week ago