You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

452 lines
14 KiB

// Test driver for the RecursiveMethods class
// Do not make any changes to this file!
// Xiwei Wang
import java.util.Arrays;
public class TestRecursiveMethods
{
public static void main(String[] args)
{
RecursiveMethods myMethods = new RecursiveMethods();
int numPassedTests = 0;
int numTotalTests = 0;
String testResult;
// Test 1
numTotalTests++;
int iReturn = -1;
testResult = "[Failed]";
String eMsg = "N/A";
try
{
int[] myArray = {10};
iReturn = myMethods.sumSquares(myArray);
if (iReturn == 100)
{
numPassedTests++;
testResult = "[Passed]";
}
}
catch (RuntimeException e)
{
eMsg = "RuntimeException - \"" + e.getMessage() + "\"";
}
System.out.println("Test " + numTotalTests + ": sumSquares(10) ==> " + testResult + "\n Expected: 100" );
if (eMsg.equals("N/A"))
System.out.println(" Yours: " + iReturn + "\n");
else
System.out.println(" Yours: " + eMsg + "\n");
// Test 2
numTotalTests++;
iReturn = -1;
testResult = "[Failed]";
eMsg = "N/A";
try
{
int[] myArray = {10, 20, 30, 40, 50, 60};
iReturn = myMethods.sumSquares(myArray);
if (iReturn == 9100)
{
numPassedTests++;
testResult = "[Passed]";
}
}
catch (RuntimeException e)
{
eMsg = "RuntimeException - \"" + e.getMessage() + "\"";
}
System.out.println("Test " + numTotalTests + ": sumSquares(10, 20, 30, 40, 50, 60) ==> " + testResult + "\n Expected: 9100" );
if (eMsg.equals("N/A"))
System.out.println(" Yours: " + iReturn + "\n");
else
System.out.println(" Yours: " + eMsg + "\n");
// Test 3
numTotalTests++;
CharStack s = new CharStack(5);
String sReturn = "";
testResult = "[Failed]";
eMsg = "N/A";
try
{
s.push('a');
myMethods.upperStackRec(s);
sReturn = s.toString();
if (sReturn.equals("A"))
{
numPassedTests++;
testResult = "[Passed]";
}
}
catch (RuntimeException e)
{
eMsg = "RuntimeException - \"" + e.getMessage() + "\"";
}
System.out.println("Test " + numTotalTests + ": upperStackRec(\"a\" (from top to bottom)) ==> " + testResult + "\n Expected: \"A\" (from top to bottom)" );
if (eMsg.equals("N/A"))
System.out.println(" Yours: \"" + sReturn + "\" (from top to bottom)\n");
else
System.out.println(" Yours: " + eMsg + "\n");
// Test 4
numTotalTests++;
s = new CharStack(5);
sReturn = "";
testResult = "[Failed]";
eMsg = "N/A";
try
{
s.push('7');
s.push('?');
s.push('p');
myMethods.upperStackRec(s);
sReturn = s.toString();
if (sReturn.equals("P?7"))
{
numPassedTests++;
testResult = "[Passed]";
}
}
catch (RuntimeException e)
{
eMsg = "RuntimeException - \"" + e.getMessage() + "\"";
}
System.out.println("Test " + numTotalTests + ": upperStackRec(\"p?7\" (from top to bottom)) ==> " + testResult + "\n Expected: \"P?7\" (from top to bottom)" );
if (eMsg.equals("N/A"))
System.out.println(" Yours: \"" + sReturn + "\" (from top to bottom)\n");
else
System.out.println(" Yours: " + eMsg + "\n");
// Test 5
numTotalTests++;
s = new CharStack(5);
sReturn = "";
testResult = "[Failed]";
eMsg = "N/A";
try
{
s.push('4');
s.push('K');
s.push('3');
s.push('s');
s.push('c');
myMethods.upperStackRec(s);
sReturn = s.toString();
if (sReturn.equals("CS3K4"))
{
numPassedTests++;
testResult = "[Passed]";
}
}
catch (RuntimeException e)
{
eMsg = "RuntimeException - \"" + e.getMessage() + "\"";
}
System.out.println("Test " + numTotalTests + ": upperStackRec(\"cs3K4\" (from top to bottom)) ==> " + testResult + "\n Expected: \"CS3K4\" (from top to bottom)" );
if (eMsg.equals("N/A"))
System.out.println(" Yours: \"" + sReturn + "\" (from top to bottom)\n");
else
System.out.println(" Yours: " + eMsg + "\n");
// Test 6
numTotalTests++;
s = new CharStack(9);
sReturn = "";
testResult = "[Failed]";
eMsg = "N/A";
try
{
s.push('Z');
s.push('y');
s.push('X');
s.push('|');
s.push('E');
s.push('d');
s.push('C');
s.push('b');
s.push('A');
myMethods.upperStackRec(s);
sReturn = s.toString();
if (sReturn.equals("ABCDE|XYZ"))
{
numPassedTests++;
testResult = "[Passed]";
}
}
catch (RuntimeException e)
{
eMsg = "RuntimeException - \"" + e.getMessage() + "\"";
}
System.out.println("Test " + numTotalTests + ": upperStackRec(\"AbCdE|XyZ\" (from top to bottom)) ==> " + testResult + "\n Expected: \"ABCDE|XYZ\" (from top to bottom)" );
if (eMsg.equals("N/A"))
System.out.println(" Yours: \"" + sReturn + "\" (from top to bottom)\n");
else
System.out.println(" Yours: " + eMsg + "\n");
// Test 7
numTotalTests++;
sReturn = "";
testResult = "[Failed]";
eMsg = "N/A";
try
{
String myString = "";
sReturn = myMethods.reverseStringRec(myString);
if (sReturn.equals(""))
{
numPassedTests++;
testResult = "[Passed]";
}
}
catch (RuntimeException e)
{
eMsg = "RuntimeException - \"" + e.getMessage() + "\"";
}
System.out.println("Test " + numTotalTests + ": reverseStringRec(\"\") ==> " + testResult + "\n Expected: \"\"" );
if (eMsg.equals("N/A"))
System.out.println(" Yours: \"" + sReturn + "\"\n");
else
System.out.println(" Yours: " + eMsg + "\n");
// Test 8
numTotalTests++;
sReturn = "";
testResult = "[Failed]";
eMsg = "N/A";
try
{
String myString = "a";
sReturn = myMethods.reverseStringRec(myString);
if (sReturn.equals("a"))
{
numPassedTests++;
testResult = "[Passed]";
}
}
catch (RuntimeException e)
{
eMsg = "RuntimeException - \"" + e.getMessage() + "\"";
}
System.out.println("Test " + numTotalTests + ": reverseStringRec(\"a\") ==> " + testResult + "\n Expected: \"a\"" );
if (eMsg.equals("N/A"))
System.out.println(" Yours: \"" + sReturn + "\"\n");
else
System.out.println(" Yours: " + eMsg + "\n");
// Test 9
numTotalTests++;
sReturn = "";
testResult = "[Failed]";
eMsg = "N/A";
try
{
String myString = "abc";
sReturn = myMethods.reverseStringRec(myString);
if (sReturn.equals("cba"))
{
numPassedTests++;
testResult = "[Passed]";
}
}
catch (RuntimeException e)
{
eMsg = "RuntimeException - \"" + e.getMessage() + "\"";
}
System.out.println("Test " + numTotalTests + ": reverseStringRec(\"abc\") ==> " + testResult + "\n Expected: \"cba\"" );
if (eMsg.equals("N/A"))
System.out.println(" Yours: \"" + sReturn + "\"\n");
else
System.out.println(" Yours: " + eMsg + "\n");
// Test 10
numTotalTests++;
sReturn = "";
testResult = "[Failed]";
eMsg = "N/A";
try
{
String myString = "Hello, Data Structures!";
sReturn = myMethods.reverseStringRec(myString);
if (sReturn.equals("!serutcurtS ataD ,olleH"))
{
numPassedTests++;
testResult = "[Passed]";
}
}
catch (RuntimeException e)
{
eMsg = "RuntimeException - \"" + e.getMessage() + "\"";
}
System.out.println("Test " + numTotalTests + ": reverseStringRec(\"Hello, Data Structures!\") ==> " + testResult + "\n Expected: \"!serutcurtS ataD ,olleH\"" );
if (eMsg.equals("N/A"))
System.out.println(" Yours: \"" + sReturn + "\"\n");
else
System.out.println(" Yours: " + eMsg + "\n");
// Test 11
numTotalTests++;
sReturn = "";
testResult = "[Failed]";
eMsg = "N/A";
try
{
LNode myNode = null;
sReturn = traverseList(myMethods.reverseListRec(myNode));
if (sReturn.equals("head->null"))
{
numPassedTests++;
testResult = "[Passed]";
}
}
catch (RuntimeException e)
{
eMsg = "RuntimeException - \"" + e.getMessage() + "\"";
}
System.out.println("Test " + numTotalTests + ": reverseListRec(null) ==> " + testResult + "\n Expected: head->null" );
if (eMsg.equals("N/A"))
System.out.println(" Yours: " + sReturn + "\n");
else
System.out.println(" Yours: " + eMsg + "\n");
// Test 12
numTotalTests++;
sReturn = "";
testResult = "[Failed]";
eMsg = "N/A";
try
{
LNode myNode = new LNode(20);
sReturn = traverseList(myMethods.reverseListRec(myNode));
if (sReturn.equals("head->20->null"))
{
numPassedTests++;
testResult = "[Passed]";
}
}
catch (RuntimeException e)
{
eMsg = "RuntimeException - \"" + e.getMessage() + "\"";
}
System.out.println("Test " + numTotalTests + ": reverseListRec(20) ==> " + testResult + "\n Expected: head->20->null" );
if (eMsg.equals("N/A"))
System.out.println(" Yours: " + sReturn + "\n");
else
System.out.println(" Yours: " + eMsg + "\n");
// Test 13
numTotalTests++;
sReturn = "";
testResult = "[Failed]";
eMsg = "N/A";
try
{
LNode myNode = new LNode(20);
LNode myNode1 = new LNode(30);
LNode myNode2 = new LNode(40);
myNode.setLink(myNode1);
myNode1.setLink(myNode2);
sReturn = traverseList(myMethods.reverseListRec(myNode));
if (sReturn.equals("head->40->30->20->null"))
{
numPassedTests++;
testResult = "[Passed]";
}
}
catch (RuntimeException e)
{
eMsg = "RuntimeException - \"" + e.getMessage() + "\"";
}
System.out.println("Test " + numTotalTests + ": reverseListRec(20->30->40) ==> " + testResult + "\n Expected: head->40->30->20->null" );
if (eMsg.equals("N/A"))
System.out.println(" Yours: " + sReturn + "\n");
else
System.out.println(" Yours: " + eMsg + "\n");
// Test 14
numTotalTests++;
sReturn = "";
testResult = "[Failed]";
eMsg = "N/A";
try
{
LNode myNode = new LNode(90);
LNode myNode1 = new LNode(80);
LNode myNode2 = new LNode(70);
LNode myNode3 = new LNode(60);
LNode myNode4 = new LNode(50);
LNode myNode5 = new LNode(40);
myNode.setLink(myNode1);
myNode1.setLink(myNode2);
myNode2.setLink(myNode3);
myNode3.setLink(myNode4);
myNode4.setLink(myNode5);
sReturn = traverseList(myMethods.reverseListRec(myNode));
if (sReturn.equals("head->40->50->60->70->80->90->null"))
{
numPassedTests++;
testResult = "[Passed]";
}
}
catch (RuntimeException e)
{
eMsg = "RuntimeException - \"" + e.getMessage() + "\"";
}
System.out.println("Test " + numTotalTests + ": reverseListRec(90->80->70->60->50->40) ==> " + testResult + "\n Expected: head->40->50->60->70->80->90->null" );
if (eMsg.equals("N/A"))
System.out.println(" Yours: " + sReturn + "\n");
else
System.out.println(" Yours: " + eMsg + "\n");
System.out.println("Total test cases: " + numTotalTests + "\nCorrect: " + numPassedTests + "\nWrong: " + (numTotalTests - numPassedTests));
}
public static String traverseList(LNode head)
{
String listContent = "head->";
LNode current = head;
while (current != null)
{
listContent += current.getInfo() + "->";
current = current.getLink();
}
listContent += "null";
return listContent;
}
}