package org.testng;
import org.testng.annotations.Test;
import org.testng.collections.Maps;
import org.testng.collections.Sets;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/**
* This class/interface
*/
public class AssertTest {
@Test
public void nullObjectArrayAssertEquals() {
Object[] expected= null;
Object[] actual= null;
Assert.assertEquals(actual, expected);
}
@Test
public void nullObjectArrayAssertNoOrder() {
Object[] expected= null;
Object[] actual= null;
Assert.assertEqualsNoOrder(actual, expected);
}
@Test
public void nullCollectionAssertEquals() {
Collection expected = null;
Collection actual = null;
Assert.assertEquals(actual, expected);
}
@Test
public void nullSetAssertEquals() {
Set expected = null;
Set actual = null;
Assert.assertEquals(actual, expected);
}
@Test
public void nullMapAssertEquals() {
Map expected = null;
Map actual = null;
Assert.assertEquals(actual, expected);
}
@Test
public void setAssertEquals() {
Set expected = Sets.newHashSet();
Set actual = Sets.newHashSet();
expected.add(1);
expected.add("a");
actual.add("a");
actual.add(1);
Assert.assertEquals(actual, expected);
}
@Test
public void mapAssertEquals() {
Map expected = Maps.newHashMap();
Map actual = Maps.newHashMap();
expected.put(null, "a");
expected.put("a", "a");
expected.put("b", "c");
actual.put("b", "c");
actual.put(null, "a");
actual.put("a", "a");
Assert.assertEquals(actual, expected);
}
@Test
public void oneNullMapAssertEquals() {
Map expected = Maps.newHashMap();
Map actual = null;
try {
Assert.assertEquals(actual, expected);
Assert.fail("AssertEquals didn't fail");
}
catch (AssertionError error) {
//do nothing
}
}
@Test
public void oneNullSetAssertEquals() {
Set expected = null;
Set actual = Sets.newHashSet();
try {
Assert.assertEquals(actual, expected);
Assert.fail("AssertEquals didn't fail");
}
catch (AssertionError error) {
//do nothing
}
}
@Test(expectedExceptions = AssertionError.class)
public void assertEqualsMapShouldFail() {
Map<String, String> mapActual = new HashMap<String, String>() {{
put("a","1");
}};
Map<String, String> mapExpected = new HashMap<String, String>() {{
put("a","1");
put("b","2");
}};
Assert.assertEquals(mapActual, mapExpected);
}
@Test(expectedExceptions = AssertionError.class)
public void assertEqualsSymmetricScalar() {
Assert.assertEquals(new Asymmetric(42, 'd'), new Contrived(42));
}
@Test(expectedExceptions = AssertionError.class)
public void assertEqualsSymmetricArrays() {
Object[] actual = {1, new Asymmetric(42, 'd'), "inDay"};
Object[] expected = {1, new Contrived(42), "inDay"};
Assert.assertEquals(actual, expected);
}
class Contrived {
int integer;
Contrived(int integer){
this.integer = integer;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Contrived)) return false;
Contrived contrived = (Contrived) o;
if (integer != contrived.integer) return false;
return true;
}
@Override
public int hashCode() {
return integer;
}
}
class Asymmetric extends Contrived {
char character;
Asymmetric(int integer, char character) {
super(integer);
this.character = character;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Asymmetric)) return false;
if (!super.equals(o)) return false;
Asymmetric that = (Asymmetric) o;
if (character != that.character) return false;
return true;
}
@Override
public int hashCode() {
int result = super.hashCode();
result = 31 * result + (int) character;
return result;
}
}
}