commit
24a91d76d4
7 changed files with 932 additions and 0 deletions
-
1.gitignore
-
67CharStack.java
-
33LNode.java
-
70LinkedNumberStack.java
-
15NumberStack.java
-
33StackApps.java
-
713TestStack.java
@ -0,0 +1 @@ |
|||
*.dat |
|||
@ -0,0 +1,67 @@ |
|||
// The CharStack class that implements a stack of characters |
|||
// Xiwei Wang |
|||
|
|||
public class CharStack |
|||
{ |
|||
// instance variables |
|||
private char[] m_array; |
|||
private int m_index; |
|||
|
|||
// constructor |
|||
public CharStack(int cap) |
|||
{ |
|||
m_array = new char[cap]; |
|||
m_index = 0; |
|||
} |
|||
|
|||
// check whether the stack is empty |
|||
public boolean isEmpty() |
|||
{ |
|||
if (m_index == 0) |
|||
return true; |
|||
else |
|||
return false; |
|||
} |
|||
|
|||
// return the element at the top of the stack |
|||
public char top() |
|||
{ |
|||
if (isEmpty()) |
|||
throw new RuntimeException("top attempted on an empty stack"); |
|||
else |
|||
return m_array[m_index - 1]; |
|||
} |
|||
|
|||
// push a character onto the stack |
|||
public void push(char c) |
|||
{ |
|||
m_array[m_index] = c; |
|||
m_index++; |
|||
} |
|||
|
|||
// remove and return the element at the top of the stack |
|||
public char pop() |
|||
{ |
|||
if (isEmpty()) |
|||
throw new RuntimeException("pop attempted on an empty stack"); |
|||
else |
|||
{ |
|||
char c = m_array[m_index - 1]; |
|||
m_index--; |
|||
|
|||
return c; |
|||
} |
|||
} |
|||
|
|||
// return the size of the stack |
|||
@Override |
|||
public String toString() |
|||
{ |
|||
String stackContent = ""; |
|||
|
|||
for (int i = m_index - 1; i >= 0; i--) |
|||
stackContent += m_array[i]; |
|||
|
|||
return stackContent; |
|||
} |
|||
} |
|||
@ -0,0 +1,33 @@ |
|||
// The LNode class that represents a node in linked lists |
|||
// Do not make any changes to this file! |
|||
// Xiwei Wang |
|||
|
|||
public class LNode |
|||
{ |
|||
// instance variables |
|||
private int m_info; |
|||
private LNode m_link; |
|||
|
|||
// constructor |
|||
public LNode(int info) |
|||
{ |
|||
m_info = info; |
|||
m_link = null; |
|||
} |
|||
|
|||
// member methods |
|||
public void setLink(LNode link) |
|||
{ |
|||
m_link = link; |
|||
} |
|||
|
|||
public LNode getLink() |
|||
{ |
|||
return m_link; |
|||
} |
|||
|
|||
public int getInfo() |
|||
{ |
|||
return m_info; |
|||
} |
|||
} |
|||
@ -0,0 +1,70 @@ |
|||
// The linked list based implementation for the NumberStack ADT |
|||
// Your name here |
|||
|
|||
public class LinkedNumberStack implements NumberStack |
|||
{ |
|||
// instance variable |
|||
private LNode m_top; |
|||
|
|||
// check whether the stack is empty |
|||
public boolean isEmpty() |
|||
{ |
|||
if (m_top == null) |
|||
return true; |
|||
else |
|||
return false; |
|||
} |
|||
|
|||
// check whether the stack is full |
|||
public boolean isFull() |
|||
{ |
|||
return false; |
|||
} |
|||
|
|||
// return the element at the top of the stack |
|||
public int top() |
|||
{ |
|||
if (isEmpty()) |
|||
throw new RuntimeException("top attempted on an empty stack"); |
|||
else |
|||
return m_top.getInfo(); |
|||
} |
|||
|
|||
// push a value onto the stack |
|||
public void push(int v) |
|||
{ |
|||
// TODO: implement this method |
|||
} |
|||
|
|||
// remove and return the value at the top of the stack |
|||
public int pop() |
|||
{ |
|||
// TODO: implement this method |
|||
|
|||
return -1; // replace this statement with your own return |
|||
} |
|||
|
|||
// return the number of elements on the stack |
|||
public int size() |
|||
{ |
|||
// TODO: implement this method |
|||
|
|||
return -1; // replace this statement with your own return |
|||
} |
|||
|
|||
// return a string representation of the stack |
|||
@Override |
|||
public String toString() |
|||
{ |
|||
String stackContent = ""; |
|||
LNode current = m_top; |
|||
|
|||
while (current != null) |
|||
{ |
|||
stackContent += current.getInfo() + " "; |
|||
current = current.getLink(); |
|||
} |
|||
|
|||
return stackContent; |
|||
} |
|||
} |
|||
@ -0,0 +1,15 @@ |
|||
// The NumberStack interface |
|||
// Do not make any changes to this file! |
|||
// Xiwei Wang |
|||
|
|||
public interface NumberStack |
|||
{ |
|||
boolean isEmpty(); // check whether the stack is empty |
|||
boolean isFull(); // check whether the stack is full |
|||
int top(); // return the element at the top of the stack |
|||
int pop(); // remove and return the element at the top of the stack |
|||
void push(int v); // push a value onto the stack |
|||
int size(); // return the number of elements on the stack |
|||
@Override |
|||
String toString(); // return a string representation of the stack |
|||
} |
|||
@ -0,0 +1,33 @@ |
|||
// The StackApps class that implements two Stack applications |
|||
// Your name here |
|||
|
|||
import java.util.Scanner; |
|||
|
|||
public class StackApps |
|||
{ |
|||
// convert a decimal number into a binary number and save it in a stack |
|||
// Do not create any arrays! Do not use any Java libraries to do the convertion. |
|||
// Doing so will result in points deduction. |
|||
public String decToBin(int numDec) |
|||
{ |
|||
CharStack stackBinary = new CharStack(64); // stack used to store the result binary number |
|||
|
|||
// TODO: complete this method |
|||
|
|||
return stackBinary.toString(); // return a string representation of the stack |
|||
} |
|||
|
|||
// compute the sum of the two big intergers and save the result in a stack |
|||
// Do not create any arrays! Do not use any Java libraries to do the calculation. |
|||
// Doing so will result in points deduction. |
|||
public String addBigIntegers(String num1, String num2) |
|||
{ |
|||
CharStack stackNum1 = new CharStack(64); // stack used to store number 1 |
|||
CharStack stackNum2 = new CharStack(64); // stack used to store number 2 |
|||
CharStack stackResult = new CharStack(64); // stack used to store the result of the addition |
|||
|
|||
// TODO: complete this method |
|||
|
|||
return stackResult.toString(); // return a string representation of the stack |
|||
} |
|||
} |
|||
@ -0,0 +1,713 @@ |
|||
// Test driver for the LinkedNumberStack and StackApps classes |
|||
// Do not make any changes to this file! |
|||
// Xiwei Wang |
|||
|
|||
import java.util.*; |
|||
import java.io.*; |
|||
|
|||
public class TestStack |
|||
{ |
|||
public static void main(String[] args) |
|||
{ |
|||
System.out.println("================ Problem 1 ================"); |
|||
TestP1(); |
|||
System.out.println("================ End of Problem 1 ================\n\n"); |
|||
|
|||
System.out.print("Press any key to test Problem 2..."); |
|||
try |
|||
{ |
|||
System.in.read(); |
|||
} |
|||
catch (Exception e) |
|||
{ |
|||
e.printStackTrace(); |
|||
} |
|||
|
|||
System.out.println("================ Problem 2 ================"); |
|||
TestP2(); |
|||
System.out.println("================ End of Problem 2 ================"); |
|||
} |
|||
|
|||
public static void TestP1() |
|||
{ |
|||
NumberStack myStack = new LinkedNumberStack(); |
|||
int numPassedTests = 0; |
|||
int numTotalTests = 0; |
|||
String testResult; |
|||
|
|||
// Test 1 |
|||
numTotalTests++; |
|||
int iReturn = -1; |
|||
testResult = "[Failed]"; |
|||
String eMsg = "N/A"; |
|||
try |
|||
{ |
|||
iReturn = myStack.size(); |
|||
|
|||
if (iReturn == 0) |
|||
{ |
|||
numPassedTests++; |
|||
testResult = "[Passed]"; |
|||
} |
|||
} |
|||
catch (RuntimeException e) |
|||
{ |
|||
eMsg = "RuntimeException - \"" + e.getMessage() + "\""; |
|||
} |
|||
|
|||
System.out.println("Test " + numTotalTests + ": size() ==> " + testResult + "\n Expected: 0" ); |
|||
if (eMsg.equals("N/A")) |
|||
System.out.println(" Yours: " + iReturn + "\n"); |
|||
else |
|||
System.out.println(" Yours: " + eMsg + "\n"); |
|||
|
|||
// Test 2 |
|||
numTotalTests++; |
|||
testResult = "[Failed]"; |
|||
eMsg = "N/A"; |
|||
try |
|||
{ |
|||
iReturn = myStack.pop(); |
|||
} |
|||
catch (RuntimeException e) |
|||
{ |
|||
if (!(e instanceof NullPointerException)) |
|||
{ |
|||
numPassedTests++; |
|||
testResult = "[Passed]"; |
|||
} |
|||
|
|||
eMsg = "RuntimeException - \"" + e.getMessage() + "\""; |
|||
} |
|||
|
|||
System.out.println("Test " + numTotalTests + ": pop() ==> " + testResult + "\n Expected: a RuntimeException"); |
|||
System.out.println(" Yours: " + eMsg + "\n"); |
|||
|
|||
// Test 3 |
|||
numTotalTests++; |
|||
boolean bReturn = false; |
|||
testResult = "[Failed]"; |
|||
eMsg = "N/A"; |
|||
try |
|||
{ |
|||
myStack.push(10); |
|||
bReturn = myStack.isEmpty(); |
|||
|
|||
if (bReturn == false) |
|||
{ |
|||
numPassedTests++; |
|||
testResult = "[Passed]"; |
|||
} |
|||
} |
|||
catch (RuntimeException e) |
|||
{ |
|||
eMsg = "RuntimeException - \"" + e.getMessage() + "\""; |
|||
} |
|||
|
|||
System.out.println("Test " + numTotalTests + ": push(10) and then isEmpty() ==> " + testResult + "\n Expected: false"); |
|||
if (eMsg.equals("N/A")) |
|||
System.out.println(" Yours: " + bReturn + "\n"); |
|||
else |
|||
System.out.println(" Yours: " + eMsg + "\n"); |
|||
|
|||
// Test 4 |
|||
numTotalTests++; |
|||
String sReturn = myStack.toString(); |
|||
|
|||
if (sReturn.equals("10 ")) |
|||
{ |
|||
numPassedTests++; |
|||
testResult = "[Passed]"; |
|||
} |
|||
else |
|||
testResult = "[Failed]"; |
|||
|
|||
System.out.println("Test " + numTotalTests + ": toString() ==> " + testResult + "\n Expected (from top to bottom): 10 "); |
|||
System.out.println(" Yours (from top to bottom): " + sReturn + "\n"); |
|||
|
|||
// Test 5 |
|||
numTotalTests++; |
|||
iReturn = -1; |
|||
testResult = "[Failed]"; |
|||
eMsg = "N/A"; |
|||
try |
|||
{ |
|||
iReturn = myStack.top(); |
|||
|
|||
if (iReturn == 10) |
|||
{ |
|||
numPassedTests++; |
|||
testResult = "[Passed]"; |
|||
} |
|||
} |
|||
catch (RuntimeException e) |
|||
{ |
|||
eMsg = "RuntimeException - \"" + e.getMessage() + "\""; |
|||
} |
|||
|
|||
System.out.println("Test " + numTotalTests + ": top() ==> " + testResult + "\n Expected: 10"); |
|||
if (eMsg.equals("N/A")) |
|||
System.out.println(" Yours: " + iReturn + "\n"); |
|||
else |
|||
System.out.println(" Yours: " + eMsg + "\n"); |
|||
|
|||
// Test 6 |
|||
numTotalTests++; |
|||
sReturn = ""; |
|||
testResult = "[Failed]"; |
|||
eMsg = "N/A"; |
|||
try |
|||
{ |
|||
myStack.push(20); |
|||
sReturn = myStack.toString(); |
|||
|
|||
if (sReturn.equals("20 10 ")) |
|||
{ |
|||
numPassedTests++; |
|||
testResult = "[Passed]"; |
|||
} |
|||
} |
|||
catch (RuntimeException e) |
|||
{ |
|||
eMsg = "RuntimeException - \"" + e.getMessage() + "\""; |
|||
} |
|||
|
|||
System.out.println("Test " + numTotalTests + ": push(20) and then toString() ==> " + testResult + "\n Expected (from top to bottom): 20 10 "); |
|||
if (eMsg.equals("N/A")) |
|||
System.out.println(" Yours (from top to bottom): " + sReturn + "\n"); |
|||
else |
|||
System.out.println(" Yours: " + eMsg + "\n"); |
|||
|
|||
// Test 7 |
|||
numTotalTests++; |
|||
iReturn = -1; |
|||
testResult = "[Failed]"; |
|||
eMsg = "N/A"; |
|||
try |
|||
{ |
|||
iReturn = myStack.top(); |
|||
|
|||
if (iReturn == 20) |
|||
{ |
|||
numPassedTests++; |
|||
testResult = "[Passed]"; |
|||
} |
|||
} |
|||
catch (RuntimeException e) |
|||
{ |
|||
eMsg = "RuntimeException - \"" + e.getMessage() + "\""; |
|||
} |
|||
|
|||
System.out.println("Test " + numTotalTests + ": top() ==> " + testResult + "\n Expected: 20"); |
|||
if (eMsg.equals("N/A")) |
|||
System.out.println(" Yours: " + iReturn + "\n"); |
|||
else |
|||
System.out.println(" Yours: " + eMsg + "\n"); |
|||
|
|||
// Test 8 |
|||
numTotalTests++; |
|||
iReturn = -1; |
|||
testResult = "[Failed]"; |
|||
eMsg = "N/A"; |
|||
try |
|||
{ |
|||
iReturn = myStack.pop(); |
|||
|
|||
if (iReturn == 20) |
|||
{ |
|||
numPassedTests++; |
|||
testResult = "[Passed]"; |
|||
} |
|||
} |
|||
catch (RuntimeException e) |
|||
{ |
|||
eMsg = "RuntimeException - \"" + e.getMessage() + "\""; |
|||
} |
|||
|
|||
System.out.println("Test " + numTotalTests + ": pop() ==> " + testResult + "\n Expected: 20"); |
|||
if (eMsg.equals("N/A")) |
|||
System.out.println(" Yours: " + iReturn + "\n"); |
|||
else |
|||
System.out.println(" Yours: " + eMsg + "\n"); |
|||
|
|||
// Test 9 |
|||
numTotalTests++; |
|||
sReturn = myStack.toString(); |
|||
|
|||
if (sReturn.equals("10 ")) |
|||
{ |
|||
numPassedTests++; |
|||
testResult = "[Passed]"; |
|||
} |
|||
else |
|||
testResult = "[Failed]"; |
|||
|
|||
System.out.println("Test " + numTotalTests + ": toString() ==> " + testResult + "\n Expected (from top to bottom): 10 "); |
|||
System.out.println(" Yours (from top to bottom): " + sReturn + "\n"); |
|||
|
|||
// Test 10 |
|||
numTotalTests++; |
|||
sReturn = ""; |
|||
testResult = "[Failed]"; |
|||
eMsg = "N/A"; |
|||
try |
|||
{ |
|||
myStack.push(30); |
|||
myStack.push(40); |
|||
myStack.push(50); |
|||
sReturn = myStack.toString(); |
|||
|
|||
if (sReturn.equals("50 40 30 10 ")) |
|||
{ |
|||
numPassedTests++; |
|||
testResult = "[Passed]"; |
|||
} |
|||
} |
|||
catch (RuntimeException e) |
|||
{ |
|||
eMsg = "RuntimeException - \"" + e.getMessage() + "\""; |
|||
} |
|||
|
|||
System.out.println("Test " + numTotalTests + ": push(30), push(40), push(50), and then toString() ==> " + testResult + "\n Expected (from top to bottom): 50 40 30 10 "); |
|||
if (eMsg.equals("N/A")) |
|||
System.out.println(" Yours (from top to bottom): " + sReturn + "\n"); |
|||
else |
|||
System.out.println(" Yours: " + eMsg + "\n"); |
|||
|
|||
// Test 11 |
|||
numTotalTests++; |
|||
iReturn = -1; |
|||
testResult = "[Failed]"; |
|||
eMsg = "N/A"; |
|||
try |
|||
{ |
|||
iReturn = myStack.size(); |
|||
|
|||
if (iReturn == 4) |
|||
{ |
|||
numPassedTests++; |
|||
testResult = "[Passed]"; |
|||
} |
|||
} |
|||
catch (RuntimeException e) |
|||
{ |
|||
eMsg = "RuntimeException - \"" + e.getMessage() + "\""; |
|||
} |
|||
|
|||
System.out.println("Test " + numTotalTests + ": size() ==> " + testResult + "\n Expected: 4" ); |
|||
if (eMsg.equals("N/A")) |
|||
System.out.println(" Yours: " + iReturn + "\n"); |
|||
else |
|||
System.out.println(" Yours: " + eMsg + "\n"); |
|||
|
|||
// Test 12 |
|||
numTotalTests++; |
|||
iReturn = -1; |
|||
testResult = "[Failed]"; |
|||
eMsg = "N/A"; |
|||
try |
|||
{ |
|||
iReturn = myStack.pop(); |
|||
iReturn = myStack.top(); |
|||
|
|||
if (iReturn == 40) |
|||
{ |
|||
numPassedTests++; |
|||
testResult = "[Passed]"; |
|||
} |
|||
} |
|||
catch (RuntimeException e) |
|||
{ |
|||
eMsg = "RuntimeException - \"" + e.getMessage() + "\""; |
|||
} |
|||
|
|||
System.out.println("Test " + numTotalTests + ": pop() and then top() ==> " + testResult + "\n Expected: 40"); |
|||
if (eMsg.equals("N/A")) |
|||
System.out.println(" Yours: " + iReturn + "\n"); |
|||
else |
|||
System.out.println(" Yours: " + eMsg + "\n"); |
|||
|
|||
// Test 13 |
|||
numTotalTests++; |
|||
iReturn = -1; |
|||
testResult = "[Failed]"; |
|||
eMsg = "N/A"; |
|||
try |
|||
{ |
|||
iReturn = myStack.pop(); |
|||
iReturn = myStack.size(); |
|||
|
|||
if (iReturn == 2) |
|||
{ |
|||
numPassedTests++; |
|||
testResult = "[Passed]"; |
|||
} |
|||
} |
|||
catch (RuntimeException e) |
|||
{ |
|||
eMsg = "RuntimeException - \"" + e.getMessage() + "\""; |
|||
} |
|||
|
|||
System.out.println("Test " + numTotalTests + ": pop() and then size() ==> " + testResult + "\n Expected: 2"); |
|||
if (eMsg.equals("N/A")) |
|||
System.out.println(" Yours: " + iReturn + "\n"); |
|||
else |
|||
System.out.println(" Yours: " + eMsg + "\n"); |
|||
|
|||
// Test 14 |
|||
numTotalTests++; |
|||
sReturn = ""; |
|||
testResult = "[Failed]"; |
|||
eMsg = "N/A"; |
|||
try |
|||
{ |
|||
myStack.push(20); |
|||
sReturn = myStack.toString(); |
|||
|
|||
if (sReturn.equals("20 30 10 ")) |
|||
{ |
|||
numPassedTests++; |
|||
testResult = "[Passed]"; |
|||
} |
|||
} |
|||
catch (RuntimeException e) |
|||
{ |
|||
eMsg = "RuntimeException - \"" + e.getMessage() + "\""; |
|||
} |
|||
|
|||
System.out.println("Test " + numTotalTests + ": push(20) and then toString() ==> " + testResult + "\n Expected (from top to bottom): 20 30 10 "); |
|||
if (eMsg.equals("N/A")) |
|||
System.out.println(" Yours (from top to bottom): " + sReturn + "\n"); |
|||
else |
|||
System.out.println(" Yours: " + eMsg + "\n"); |
|||
|
|||
// Test 15 |
|||
numTotalTests++; |
|||
iReturn = -1; |
|||
testResult = "[Failed]"; |
|||
eMsg = "N/A"; |
|||
try |
|||
{ |
|||
iReturn = myStack.size(); |
|||
|
|||
if (iReturn == 3) |
|||
{ |
|||
numPassedTests++; |
|||
testResult = "[Passed]"; |
|||
} |
|||
} |
|||
catch (RuntimeException e) |
|||
{ |
|||
eMsg = "RuntimeException - \"" + e.getMessage() + "\""; |
|||
} |
|||
|
|||
System.out.println("Test " + numTotalTests + ": size() ==> " + testResult + "\n Expected: 3" ); |
|||
if (eMsg.equals("N/A")) |
|||
System.out.println(" Yours: " + iReturn + "\n"); |
|||
else |
|||
System.out.println(" Yours: " + eMsg + "\n"); |
|||
|
|||
// Test 16 |
|||
numTotalTests++; |
|||
iReturn = -1; |
|||
testResult = "[Failed]"; |
|||
eMsg = "N/A"; |
|||
try |
|||
{ |
|||
iReturn = myStack.pop(); |
|||
iReturn = myStack.pop(); |
|||
iReturn = myStack.top(); |
|||
|
|||
if (iReturn == 10) |
|||
{ |
|||
numPassedTests++; |
|||
testResult = "[Passed]"; |
|||
} |
|||
} |
|||
catch (RuntimeException e) |
|||
{ |
|||
eMsg = "RuntimeException - \"" + e.getMessage() + "\""; |
|||
} |
|||
|
|||
System.out.println("Test " + numTotalTests + ": pop() twice and then top() ==> " + testResult + "\n Expected: 10"); |
|||
if (eMsg.equals("N/A")) |
|||
System.out.println(" Yours: " + iReturn + "\n"); |
|||
else |
|||
System.out.println(" Yours: " + eMsg + "\n"); |
|||
|
|||
// Test 17 |
|||
numTotalTests++; |
|||
sReturn = ""; |
|||
testResult = "[Failed]"; |
|||
eMsg = "N/A"; |
|||
try |
|||
{ |
|||
sReturn = myStack.toString(); |
|||
|
|||
if (sReturn.equals("10 ")) |
|||
{ |
|||
numPassedTests++; |
|||
testResult = "[Passed]"; |
|||
} |
|||
} |
|||
catch (RuntimeException e) |
|||
{ |
|||
eMsg = "RuntimeException - \"" + e.getMessage() + "\""; |
|||
} |
|||
|
|||
System.out.println("Test " + numTotalTests + ": toString() ==> " + testResult + "\n Expected (from top to bottom): 10 "); |
|||
if (eMsg.equals("N/A")) |
|||
System.out.println(" Yours (from top to bottom): " + sReturn + "\n"); |
|||
else |
|||
System.out.println(" Yours: " + eMsg + "\n"); |
|||
|
|||
// Test 18 |
|||
numTotalTests++; |
|||
bReturn = false; |
|||
testResult = "[Failed]"; |
|||
eMsg = "N/A"; |
|||
try |
|||
{ |
|||
iReturn = myStack.pop(); |
|||
bReturn = myStack.isEmpty(); |
|||
|
|||
if (bReturn == true && iReturn == 10) |
|||
{ |
|||
numPassedTests++; |
|||
testResult = "[Passed]"; |
|||
} |
|||
} |
|||
catch (RuntimeException e) |
|||
{ |
|||
eMsg = "RuntimeException - \"" + e.getMessage() + "\""; |
|||
} |
|||
|
|||
System.out.println("Test " + numTotalTests + ": pop() and then isEmpty() ==> " + testResult + "\n Expected: 10, true"); |
|||
if (eMsg.equals("N/A")) |
|||
System.out.println(" Yours: " + iReturn + ", " + bReturn + "\n"); |
|||
else |
|||
System.out.println(" Yours: " + eMsg + "\n"); |
|||
|
|||
// Test 19 |
|||
numTotalTests++; |
|||
iReturn = -1; |
|||
testResult = "[Failed]"; |
|||
eMsg = "N/A"; |
|||
try |
|||
{ |
|||
iReturn = myStack.size(); |
|||
|
|||
if (iReturn == 0) |
|||
{ |
|||
numPassedTests++; |
|||
testResult = "[Passed]"; |
|||
} |
|||
} |
|||
catch (RuntimeException e) |
|||
{ |
|||
eMsg = "RuntimeException - \"" + e.getMessage() + "\""; |
|||
} |
|||
|
|||
System.out.println("Test " + numTotalTests + ": size() ==> " + testResult + "\n Expected: 0" ); |
|||
if (eMsg.equals("N/A")) |
|||
System.out.println(" Yours: " + iReturn + "\n"); |
|||
else |
|||
System.out.println(" Yours: " + eMsg + "\n"); |
|||
|
|||
// Test 20 |
|||
numTotalTests++; |
|||
testResult = "[Failed]"; |
|||
eMsg = "N/A"; |
|||
try |
|||
{ |
|||
iReturn = myStack.pop(); |
|||
} |
|||
catch (RuntimeException e) |
|||
{ |
|||
if (!(e instanceof NullPointerException)) |
|||
{ |
|||
numPassedTests++; |
|||
testResult = "[Passed]"; |
|||
} |
|||
|
|||
eMsg = "RuntimeException - \"" + e.getMessage() + "\""; |
|||
} |
|||
|
|||
System.out.println("Test " + numTotalTests + ": pop() ==> " + testResult + "\n Expected: a RuntimeException"); |
|||
System.out.println(" Yours: " + eMsg + "\n"); |
|||
|
|||
// Test 21 |
|||
numTotalTests++; |
|||
sReturn = ""; |
|||
testResult = "[Failed]"; |
|||
eMsg = "N/A"; |
|||
try |
|||
{ |
|||
myStack.push(70); |
|||
sReturn = myStack.toString(); |
|||
|
|||
if (sReturn.equals("70 ")) |
|||
{ |
|||
numPassedTests++; |
|||
testResult = "[Passed]"; |
|||
} |
|||
} |
|||
catch (RuntimeException e) |
|||
{ |
|||
eMsg = "RuntimeException - \"" + e.getMessage() + "\""; |
|||
} |
|||
|
|||
System.out.println("Test " + numTotalTests + ": push(70) and then toString() ==> " + testResult + "\n Expected (from top to bottom): 70 "); |
|||
if (eMsg.equals("N/A")) |
|||
System.out.println(" Yours (from top to bottom): " + sReturn + "\n"); |
|||
else |
|||
System.out.println(" Yours: " + eMsg + "\n"); |
|||
|
|||
// Test 22 |
|||
numTotalTests++; |
|||
iReturn = -1; |
|||
testResult = "[Failed]"; |
|||
eMsg = "N/A"; |
|||
try |
|||
{ |
|||
iReturn = myStack.top(); |
|||
|
|||
if (iReturn == 70) |
|||
{ |
|||
numPassedTests++; |
|||
testResult = "[Passed]"; |
|||
} |
|||
} |
|||
catch (RuntimeException e) |
|||
{ |
|||
eMsg = "RuntimeException - \"" + e.getMessage() + "\""; |
|||
} |
|||
|
|||
System.out.println("Test " + numTotalTests + ": top() ==> " + testResult + "\n Expected: 70"); |
|||
if (eMsg.equals("N/A")) |
|||
System.out.println(" Yours: " + iReturn + "\n"); |
|||
else |
|||
System.out.println(" Yours: " + eMsg + "\n"); |
|||
|
|||
// Test 23 |
|||
numTotalTests++; |
|||
iReturn = -1; |
|||
testResult = "[Failed]"; |
|||
eMsg = "N/A"; |
|||
try |
|||
{ |
|||
iReturn = myStack.pop(); |
|||
iReturn = myStack.size(); |
|||
|
|||
if (iReturn == 0) |
|||
{ |
|||
numPassedTests++; |
|||
testResult = "[Passed]"; |
|||
} |
|||
} |
|||
catch (RuntimeException e) |
|||
{ |
|||
eMsg = "RuntimeException - \"" + e.getMessage() + "\""; |
|||
} |
|||
|
|||
System.out.println("Test " + numTotalTests + ": pop() and then size() ==> " + testResult + "\n Expected: 0"); |
|||
if (eMsg.equals("N/A")) |
|||
System.out.println(" Yours: " + iReturn + "\n"); |
|||
else |
|||
System.out.println(" Yours: " + eMsg + "\n"); |
|||
|
|||
System.out.println("Total test cases: " + numTotalTests + "\nCorrect: " + numPassedTests + "\nWrong: " + (numTotalTests - numPassedTests)); |
|||
} |
|||
|
|||
public static void TestP2() |
|||
{ |
|||
try |
|||
{ |
|||
ObjectInputStream in = new ObjectInputStream(new FileInputStream("testNumbers.dat")); |
|||
StackApps myApps = new StackApps(); |
|||
ArrayList<Integer> results = new ArrayList<Integer>(); |
|||
ArrayList<String> numbers = new ArrayList<String>(); |
|||
results = (ArrayList<Integer>)in.readObject(); |
|||
numbers = (ArrayList<String>)in.readObject(); |
|||
|
|||
String r; |
|||
String eMsg; |
|||
String currentLine; |
|||
int numPassedTests = 0; |
|||
int numTotalTests = 0; |
|||
|
|||
for (int i = 0; i < 5; i++) |
|||
{ |
|||
numTotalTests++; |
|||
currentLine = numbers.get(i); |
|||
|
|||
r = ""; |
|||
eMsg = "N/A"; |
|||
try |
|||
{ |
|||
r = myApps.decToBin(Integer.valueOf(currentLine)); |
|||
} |
|||
catch (RuntimeException e) |
|||
{ |
|||
eMsg = "RuntimeException - \"" + e.getMessage() + "\""; |
|||
} |
|||
|
|||
System.out.print("Test " + numTotalTests + ": decToBin(" + currentLine + ") ==> "); |
|||
|
|||
if (r.equals(results.get(i))) |
|||
{ |
|||
System.out.println("[Passed]"); |
|||
numPassedTests++; |
|||
} |
|||
else |
|||
System.out.println("[Failed]"); |
|||
|
|||
System.out.println(" Expected: " + results.get(i)); |
|||
if (eMsg.equals("N/A")) |
|||
System.out.println(" Yours: " + r + "\n"); |
|||
else |
|||
System.out.println(" Yours: " + eMsg + "\n"); |
|||
} |
|||
|
|||
for (int i = 5; i < numbers.size(); i++) |
|||
{ |
|||
numTotalTests++; |
|||
currentLine = numbers.get(i); |
|||
String[] operands = currentLine.split(" "); |
|||
|
|||
r = ""; |
|||
eMsg = "N/A"; |
|||
try |
|||
{ |
|||
r = myApps.addBigIntegers(operands[0], operands[1]); |
|||
} |
|||
catch (RuntimeException e) |
|||
{ |
|||
eMsg = "RuntimeException - \"" + e.getMessage() + "\""; |
|||
} |
|||
|
|||
System.out.print("Test " + numTotalTests + ": (" + operands[0] + " + " + operands[1] + ") ==> "); |
|||
|
|||
if (r.equals(results.get(i))) |
|||
{ |
|||
System.out.println("[Passed]"); |
|||
numPassedTests++; |
|||
} |
|||
else |
|||
System.out.println("[Failed]"); |
|||
|
|||
System.out.println(" Expected: " + results.get(i)); |
|||
if (eMsg.equals("N/A")) |
|||
System.out.println(" Yours: " + r + "\n"); |
|||
else |
|||
System.out.println(" Yours: " + eMsg + "\n"); |
|||
} |
|||
|
|||
System.out.println("Total test cases: " + numTotalTests + "\nCorrect: " + numPassedTests + "\nWrong: " + (numTotalTests - numPassedTests)); |
|||
} |
|||
catch (Exception e) |
|||
{ |
|||
System.out.println("Error occurred: " + e.getMessage()); |
|||
} |
|||
} |
|||
} |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue