public void testIdentityFields() throws IOException, ClassNotFoundException { PdxInstance instance1 = getPdx(getPdxSerializable(new TestPdx() { public void toData(PdxWriter out) { out.writeInt("field2", 53); out.writeBoolean("field1", false); out.markIdentityField("field2"); } })); PdxInstance instance2 = getPdx(getPdxSerializable(new TestPdx() { public void toData(PdxWriter out) { out.writeInt("field2", 53); out.writeBoolean("field1", true); out.markIdentityField("field2"); } })); assertEquals(instance1, instance2); assertEquals(instance1.hashCode(), instance2.hashCode()); assertFalse(instance1.isIdentityField("field1")); assertTrue(instance1.isIdentityField("field2")); }
public void testHashCodeAndEqualsSameType() throws IOException, ClassNotFoundException { PdxInstance instance = getAllFields(0); assertEquals(instance, getAllFields(0)); assertEquals(instance.hashCode(), getAllFields(0).hashCode()); for(int i =1; i < allFieldCount + 1; i++) { PdxInstance other = getAllFields(i); assertFalse("One field " + i + " hashcode have been unequal but were equal" + instance.getField("field" + (i-1)) +", " + other.getField("field" + (i-1)) + ", " + instance + ", " + other, instance.equals(other)); //Technically, this could be true. If this asserts fails I guess we can just change the test. assertFalse("One field " + i + " hashcode have been unequal but were equal" + instance +", " + other, instance.hashCode() == other.hashCode()); } }
public void testHashCodeEqualsOutOfOrderFields() throws IOException, ClassNotFoundException, NoSuchMethodException, InstantiationException, IllegalAccessException, InvocationTargetException { PdxSerializable serializable1 = getSeparateClassLoadedPdx(true); PdxInstance instance1 = getPdx(serializable1); PdxSerializable serializable2 = getSeparateClassLoadedPdx(false); PdxInstance instance2 = getPdx(serializable2); assertEquals(instance1, instance2); assertEquals(instance1.hashCode(), instance2.hashCode()); }
public void testEqualsDifferentTypes() throws IOException, ClassNotFoundException { PdxInstance instance1 = getPdx(new TestPdx() { public void toData(PdxWriter writer) { writer.writeBoolean("field1", true); } }); PdxInstance instance2 = getPdx(new TestPdx() { public void toData(PdxWriter writer) { writer.writeBoolean("field1", true); } }); //These are different classes, so they shouldn't match. assertFalse(instance1.equals(instance2)); assertFalse(instance1.isIdentityField("field1")); }
public void testGetField() throws IOException, ClassNotFoundException { PdxInstance instance = getPdx(new TestPdx() { public void toData(PdxWriter out) { out.writeBoolean("field1", false); out.writeInt("field2", 53); out.writeObject("field3", new TestPdx() { public void toData(PdxWriter writer) { writer.writeString("afield", "hello"); } }); } }); assertEquals(Arrays.asList(new String[]{"field1", "field2", "field3"}), instance.getFieldNames()); assertEquals(instance.getField("field2"), Integer.valueOf(53)); assertEquals(instance.getField("field1"), Boolean.FALSE); PdxInstance fieldInstance = (PdxInstance) instance.getField("field3"); assertEquals(Arrays.asList(new String[]{"afield"}), fieldInstance.getFieldNames()); assertEquals("hello", fieldInstance.getField("afield")); }
public PdxInstance getAllFields(final int change) throws IOException, ClassNotFoundException { PdxInstance instance = getPdx(new TestPdx() { public void toData(PdxWriter out) { int x = 0;
c.writeInt("intField", 37); PdxInstance pi = c.create(); assertEquals(false, pi.equals(null)); assertEquals(false, pi.equals(new Date(37))); c = PdxInstanceFactoryImpl.newCreator("testEquals", false); c.writeInt("intField", 37); pi.hashCode(); pi2.hashCode(); assertEquals(false, pi.equals(pi2)); assertEquals(false, pi2.equals(pi)); pi.hashCode(); pi2.hashCode(); assertEquals(false, pi.equals(pi2)); assertEquals(false, pi2.equals(pi)); pi.hashCode(); pi2.hashCode(); assertEquals(false, pi.equals(pi2)); assertEquals(false, pi2.equals(pi)); pi.hashCode(); pi2.hashCode(); assertEquals(false, pi.equals(pi2)); assertEquals(false, pi2.equals(pi)); c.writeObject("objField", new int[]{1}); pi2 = c.create();