Zwracam uwagę na zmiany w samej klasie Customer - metody hashCode() oraz equals(Object) oraz sam test z assertNotSame() i assertSame().
Ufam, że teraz wszyscy są usatysfakcjonowani, nieprawdaż?
package pl.japila.java7;
import static org.junit.Assert.assertNotSame;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import java.util.Objects;
import org.junit.Test;
public class ObjectsTest {
class Customer {
public final String code;
public final String name;
public Customer(final String name, final String code) {
this.name = name;
this.code = code;
}
@Override
public int hashCode() {
return Objects.hash(name, code);
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Customer other = (Customer) obj;
if (!getOuterType().equals(other.getOuterType()))
return false;
return Objects.equals(name, other.name) && Objects.equals(code, other.code);
}
private ObjectsTest getOuterType() {
return ObjectsTest.this;
}
}
@Test
public void testObjectsMethods() {
Customer jacek = new Customer("Jacek", "X23");
Customer klonJacka = new Customer("Jacek", "X23");
assertTrue("Klon Jacka jest Jackiem", Objects.equals(jacek, klonJacka));
assertNotSame("Jacek nierówny swojemu klonowi", jacek, klonJacka);
Customer wskazanieNaJacka = jacek;
assertTrue(Objects.equals(jacek, wskazanieNaJacka));
assertSame(jacek, wskazanieNaJacka);
}
}
Brak komentarzy:
Prześlij komentarz