/*
* Copyright (c) 2016 Red Hat, Inc. and others. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
package org.opendaylight.yangtools.util;
import static org.junit.Assert.assertTrue;
import com.google.common.base.MoreObjects;
import com.google.common.testing.EqualsTester;
import java.util.Objects;
import org.junit.Test;
public class EvenMoreObjectsTest {
@Test
public void thingPassesEqualsTester() {
new EqualsTester()
.addEqualityGroup(new Thing("hello", 123), new Thing("hello", 123))
.addEqualityGroup(new Thing("hoi", 123), new Thing("hoi", 123))
.addEqualityGroup(new Thing("hoi", null))
.addEqualityGroup(new Thing(null, null))
.testEquals();
}
@Test
public void nullEqualsNull() {
assertTrue(EvenMoreObjects.equalsHelper(null, null, (one, another) -> true));
}
private static class Thing {
String name;
Integer age;
@Override
public boolean equals(Object obj) {
return EvenMoreObjects.equalsHelper(this, obj,
(one, another) -> Objects.equals(one.name, another.name) && Objects.equals(one.age, another.age));
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
@Override
public String toString() {
return MoreObjects.toStringHelper(this).add("name", name).add("age", age).toString();
}
Thing(String name, Integer age) {
super();
this.name = name;
this.age = age;
}
}
}