import java.io.PrintStream;
import java.util.Date;
import java.util.Scanner;
public class A1Test
{
public static void main(String[] args)
{
PrintStream out = System.out;
Scanner in = new Scanner(System.in);
out.println("Commands: test1, test2, test3, test4, exit");
boolean exit = false;
String cmd;
while (!exit)
{
out.print("\n> ");
cmd = in.next();
if (cmd.equals("exit"))
{
exit = true;
}
else if (cmd.equals("test1"))
{
test1();
}
else if (cmd.equals("test2"))
{
test2();
}
else if (cmd.equals("test3"))
{
test3();
}
else if (cmd.equals("test4"))
{
test4();
}
}
}
private static void test1()
{
System.out.println("Tests Transaction constructors and accessors.");
Date d = new Date();
final double AMT = 200.5;
Transaction t1 = new Transaction(d, "A deposit", AMT);
Transaction t2 = new Transaction(t1);
boolean result = t1 != t2;
result &= t2.getDate().equals(d);
result &= t2.getDetails().equals("A deposit");
result &= Double.compare(t2.getAmount(), AMT) == 0;
System.out.println(result ? "passed" : "failed");
System.out.println(t1);
System.out.println(t2);
}
private static void test2()
{
System.out.println("Tests Transaction equals() method.");
Date d = new Date();
final double AMT = 200.5;
Transaction t1 = new Transaction(d, "A deposit", AMT);
Transaction t2 = new Transaction(t1);
boolean result = !t1.equals(null);
result &= !t1.equals(d);
result &= t1.equals(t1);
result &= t1.equals(t2);
System.out.println(result ? "passed" : "failed");
}
private static void test3()
{
System.out.println("Tests SavingsAccount constructor and methods.");
SavingsAccount sa = new SavingsAccount();
boolean result = (Double.compare(sa.getBalance(), 0.0) == 0) &&
sa.list().isEmpty();
try
{
sa.post(null);
result = false;
}
catch (NullPointerException npe) {}
sa.post(new Transaction(new Date(), "A deposit", 500.0));
sa.post(new Transaction(new Date(), "A withdrawl", -320.5));
result &= Double.compare(sa.getBalance(), 179.5) == 0;
result &= sa.list().size() == 2;
System.out.println(result ? "passed" : "failed");
}
private static void test4()
{
System.out.println("Tests sortation of SavingsAccount transactions.");
SavingsAccount sa = new SavingsAccount();
Date d1 = new Date();
d1.setTime(1369255370574L);
Date d2 = new Date();
d2.setTime(1369258370575L);
Date d3 = new Date();
d3.setTime(1369355330579L);
sa.post(new Transaction(d2, "A deposit", 380.0));
sa.post(new Transaction(d1, "A withdrawl", -100.0));
sa.post(new Transaction(d2, "A deposit", 380.0));
sa.post(new Transaction(d3, "A deposit", 100.0));
sa.post(new Transaction(d1, "A withdrawl", -200.0));
sa.post(new Transaction(d1, "A deposit", 100.0));
boolean result = Double.compare(sa.getBalance(), 280.0) == 0;
result &= sa.list().size() == 5;
System.out.println(result ? "passed so far..." : "failed");
System.out.println("But I can't test for sorted order without " +
"giving you the code. :-) So I will print the set for " +
"you to review youself.");
for (Transaction t : sa.list())
{
System.out.println(t);
}
}
}