// HouseTest4.java
//
// Tests equals method,
// assuming a valid constructor and toString method.
// Data file must contain three lines.
import java.util.StringTokenizer;
public class HouseTest4
{
public static void main(String[] args)
{
if ( args.length == 0 )
{
System.out.println("Filename of data file needed"
+ " as command-line argument");
System.exit(0);
} // if
TextFileInput in = new TextFileInput(args[0]);
House x = makeHouse(in.readLine());
House y = makeHouse(in.readLine());
House z = makeHouse(in.readLine());
testHouses(x, y, z);
} // method main
private static House makeHouse(String line)
{
if ( line == null )
{
System.out.println("Not enough lines in file.");
System.exit(1);
} // if
StringTokenizer st = new StringTokenizer(line, "|");
String zipCode = st.nextToken();
int price = Integer.parseInt(st.nextToken());
int numberOfRooms = Integer.parseInt(st.nextToken());
House house = new House(zipCode, price, numberOfRooms);
return house;
} // method makeHouse
private static void testHouses(House houseX,
House houseY,
House houseZ)
{
EqualsTesting.testThreeCompletely(houseX, "X",
houseY, "Y",
houseZ, "Z");
ConsoleInput.pause();
testSubclassSymmetry(houseX, "X");
testSubclassSymmetry(houseY, "Y");
testSubclassSymmetry(houseZ, "Z");
} // method testHouses
private static void testSubclassSymmetry(House houseX,
String nameX)
{
HouseWithDifferentEquals subclassCopyX
= new HouseWithDifferentEquals(
houseX.getZipCode(),
houseX.getPrice(),
houseX.getNumberOfRooms());
EqualsTesting.testSymmetric(houseX, nameX,
subclassCopyX,
(nameX + "SubclassCopy"));
} // method testSubclassSymmetry
} // class HouseTest4