У меня есть драйвер, который действует как мой тестер.Как получить конструктор копии из драйвера
Вот Driver:
public class CustomerTest {
private static int customerCounter = 0;
public static boolean test1(){
System.out.println("Test1: create a customer");
Customer c = new Customer("Alice", "Smith");
customerCounter++;
return c.getName().equals("Alice Smith") && customerCounter == c.getCustomerID();
}
public static boolean test2() {
System.out.println("Test2: create two customers");
Customer c1 = new Customer("Alice", "Smith");
Customer c2 = new Customer("Bob", "Simpson");
customerCounter += 2;
return c1.getName().equals("Alice Smith") && (customerCounter - 1) == c1.getCustomerID()
&& c2.getName().equals("Bob Simpson") && (customerCounter) == c2.getCustomerID();
}
public static boolean test4() {
System.out.println("Test4: copy a customer");
Customer c1 = new Customer("Alice", "Smith");
Customer c2 = new Customer("Bob", "Simpson");
c1.copy(c2);
customerCounter += 2;
return c1.getName().equals("Bob Simpson") && (customerCounter) == c1.getCustomerID()
&& c2.getName().equals("Bob Simpson") && (customerCounter) == c2.getCustomerID()
&& c1 != c2;
}
public static void main(String[] args) {
String result = "";
//System.out.print("Test 1: ");
result = test1() ? "pass." : "failed.";
System.out.println(result);
//System.out.print("Test 2: ");
result = test2() ? "pass." : "failed.";
System.out.println(result);
//System.out.print("Test 4: ");
result = test4() ? "pass." : "failed.";
System.out.println(result);
Вот код, который я написал до сих пор:
public class Customer {
public static final int MAX_ACCOUNTS = 5;
private String firstName;
private String lastName;
private int customerID;
private BankAccount[] accounts;
private int numAccounts;
private static int nextCustomerID = 1;
//default constructor
public Customer() {
firstName = "";
lastName = "";
customerID = nextCustomerID;
accounts = null;
numAccounts = 0;
nextCustomerID++;
}
//Constructor sets name and initialized values
//@param first is the first name
//@param last is the last name
public Customer (String first, String last)
{
this.firstName = first;
this.lastName = last;
this.customerID = nextCustomerID;
nextCustomerID++;
}
public void copy (Customer copyFrom)
{
Customer aCustomer = new Customer();
aCustomer.firstName = copyFrom.firstName;
aCustomer.lastName = copyFrom.lastName;
aCustomer.customerID = copyFrom.customerID;
aCustomer.accounts = copyFrom.accounts;
aCustomer.numAccounts = copyFrom.numAccounts;
}
}
Мой конструктор копирования не проходит тест драйвера 4. Я не знаю, почему, потому что я копирую все, что вызывается в методе.
test4 чеки if (customerCounter) == c1.getCustomerID() и (customerCounter) == c2.getCustomerID(). Это действительно то, что должно быть? Это означало бы, что у обоих клиентов одинаковый идентификатор, который мне не подходит. – Aziuth