You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by pi...@apache.org on 2018/06/28 15:22:38 UTC

[geode] branch develop updated: GEODE-5285: Improve unit test coverage for PdxInstanceImpl. (#2085)

This is an automated email from the ASF dual-hosted git repository.

pivotalsarge pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git


The following commit(s) were added to refs/heads/develop by this push:
     new 3246b4e  GEODE-5285: Improve unit test coverage for PdxInstanceImpl. (#2085)
3246b4e is described below

commit 3246b4ed36a8f7aa61039e9bea335898665fbb65
Author: Michael "Sarge" Dodge <md...@pivotal.io>
AuthorDate: Thu Jun 28 08:22:32 2018 -0700

    GEODE-5285: Improve unit test coverage for PdxInstanceImpl. (#2085)
    
    - Add unit test for PdxInstance.getField().
    - Add unit test for PdxInstance.hasField().
    - Add unit test for PdxInstance.isEnum().
    - Add unit test for PdxInstance.getClassName().
    - Add unit test for PdxInstance.getFieldNames().
    - Add unit test for PdxInstance.isIdentityField().
---
 .../geode/pdx/internal/PdxInstanceImplTest.java    | 463 ++++++++++-----------
 1 file changed, 212 insertions(+), 251 deletions(-)

diff --git a/geode-core/src/test/java/org/apache/geode/pdx/internal/PdxInstanceImplTest.java b/geode-core/src/test/java/org/apache/geode/pdx/internal/PdxInstanceImplTest.java
index ca08682..8afc991 100644
--- a/geode-core/src/test/java/org/apache/geode/pdx/internal/PdxInstanceImplTest.java
+++ b/geode-core/src/test/java/org/apache/geode/pdx/internal/PdxInstanceImplTest.java
@@ -17,6 +17,8 @@ package org.apache.geode.pdx.internal;
 import static org.apache.commons.lang.StringUtils.substringAfter;
 import static org.apache.geode.distributed.internal.locks.GrantorRequestProcessor.GrantorRequestContext;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
 import static org.mockito.Mockito.any;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
@@ -24,6 +26,7 @@ import static org.powermock.api.mockito.PowerMockito.doNothing;
 
 import java.io.IOException;
 import java.io.Serializable;
+import java.util.Arrays;
 
 import org.apache.commons.lang.StringUtils;
 import org.junit.After;
@@ -45,7 +48,28 @@ import org.apache.geode.test.junit.categories.UnitTest;
 
 @Category({UnitTest.class, SerializationTest.class})
 public class PdxInstanceImplTest {
-  protected TypeRegistry pdxRegistry;
+  PdxType emptyPdxType;
+  PdxField nonExistentField;
+  PdxType pdxType;
+  PdxField nonIdentityField;
+  PdxField booleanField;
+  PdxField doubleField;
+  PdxField intField;
+  PdxField longField;
+  PdxField objectField;
+  PdxField stringField;
+  PdxField byteArrayField;
+  PdxField objectArrayField;
+  PdxField integerArrayField;
+  PdxField shortArrayField;
+  PdxField intArrayField;
+  PdxField longArrayField;
+  PdxField charArrayField;
+  PdxField floatArrayField;
+  PdxField doubleArrayField;
+  PdxField booleanArrayField;
+  TypeRegistry pdxRegistry;
+  PdxInstance instance;
 
   @Before
   public void setUp() throws IOException, ClassNotFoundException {
@@ -80,302 +104,239 @@ public class PdxInstanceImplTest {
 
     DistributedLockService distributedLockService = mock(DistributedLockService.class);
 
+    emptyPdxType = new PdxType("PdxInstanceImplTest.EmptyPdxType", false);
+    nonExistentField = new PdxField("nonExistentField", 0, 0, FieldType.OBJECT, false);
+
+    pdxType = new PdxType("PdxInstanceImplTest.PdxType", false);
+    int index = 0;
+    int varId = 0;
+    nonIdentityField = new PdxField("nonIdentityField", index++, 0, FieldType.INT, false);
+    pdxType.addField(nonIdentityField);
+    booleanField = new PdxField("booleanField", index++, 0, FieldType.BOOLEAN, true);
+    pdxType.addField(booleanField);
+    doubleField = new PdxField("doubleField", index++, 0, FieldType.DOUBLE, true);
+    pdxType.addField(doubleField);
+    intField = new PdxField("intField", index++, 0, FieldType.INT, true);
+    pdxType.addField(intField);
+    longField = new PdxField("longField", index++, 0, FieldType.LONG, true);
+    pdxType.addField(longField);
+    objectField = new PdxField("objectField", index++, varId++, FieldType.OBJECT, true);
+    pdxType.addField(objectField);
+    stringField = new PdxField("stringField", index++, varId++, FieldType.STRING, true);
+    pdxType.addField(stringField);
+    byteArrayField =
+        new PdxField("byteArrayField", index++, varId++, FieldType.BYTE_ARRAY, true);
+    pdxType.addField(byteArrayField);
+    objectArrayField =
+        new PdxField("objectArrayField", index++, varId++, FieldType.OBJECT_ARRAY, true);
+    pdxType.addField(objectArrayField);
+    integerArrayField =
+        new PdxField("integerArrayField", index++, varId++, FieldType.OBJECT_ARRAY, true);
+    pdxType.addField(integerArrayField);
+    shortArrayField =
+        new PdxField("shortArrayField", index++, varId++, FieldType.SHORT_ARRAY, true);
+    pdxType.addField(shortArrayField);
+    intArrayField = new PdxField("intArrayField", index++, varId++, FieldType.INT_ARRAY, true);
+    pdxType.addField(intArrayField);
+    longArrayField =
+        new PdxField("longArrayField", index++, varId++, FieldType.LONG_ARRAY, true);
+    pdxType.addField(longArrayField);
+    charArrayField =
+        new PdxField("charArrayField", index++, varId++, FieldType.CHAR_ARRAY, true);
+    pdxType.addField(charArrayField);
+    floatArrayField =
+        new PdxField("floatArrayField", index++, varId++, FieldType.FLOAT_ARRAY, true);
+    pdxType.addField(floatArrayField);
+    doubleArrayField =
+        new PdxField("doubleArrayField", index++, varId++, FieldType.DOUBLE_ARRAY, true);
+    pdxType.addField(doubleArrayField);
+    booleanArrayField =
+        new PdxField("booleanArrayField", index++, varId++, FieldType.BOOLEAN_ARRAY, true);
+    pdxType.addField(booleanArrayField);
+
     PeerTypeRegistration testTypeRegistration = mock(PeerTypeRegistration.class);
     when(testTypeRegistration.getLockService()).thenReturn(distributedLockService);
+    when(testTypeRegistration.defineType(emptyPdxType)).thenReturn(1);
+    when(testTypeRegistration.defineType(pdxType)).thenReturn(2);
+    when(testTypeRegistration.getType(1)).thenReturn(emptyPdxType);
+    when(testTypeRegistration.getType(2)).thenReturn(pdxType);
 
     TypeRegistration typeRegistration =
         new TestLonerTypeRegistration(internalCache, testTypeRegistration);
 
     pdxRegistry = new TypeRegistry(internalCache, typeRegistration);
     pdxRegistry.initialize();
-  }
-
-  @After
-  public void tearDown() {
-    // Do nothing.
-  }
-
-  @Test
-  public void testToStringForEmpty() throws Exception {
-    final String name = "testToStringForEmpty";
-    final PdxType pdxType = new PdxType(name, false);
-
-    final PdxWriterImpl writer = new PdxWriterImpl(pdxType, pdxRegistry, new PdxOutputStream());
-    writer.completeByteStreamGeneration();
-
-    final PdxInstance instance = writer.makePdxInstance();
-    assertEquals(name + "]{}", substringAfter(instance.toString(), ","));
-  }
-
-  @Test
-  public void testToStringForInteger() {
-    final String name = "testToStringForInteger";
-    final PdxType pdxType = new PdxType(name, false);
-
-    int index = 0;
-    PdxField intField = new PdxField("intField", index++, 0, FieldType.INT, false);
-    pdxType.addField(intField);
-
-    final PdxWriterImpl writer = new PdxWriterImpl(pdxType, pdxRegistry, new PdxOutputStream(1024));
-    writer.writeInt(37);
-    writer.completeByteStreamGeneration();
-
-    final PdxInstance instance = writer.makePdxInstance();
-    assertEquals(name + "]{intField=37}", substringAfter(instance.toString(), ","));
-  }
-
-  @Test
-  public void testToStringForString() {
-    final String name = "testToStringForString";
-    final PdxType pdxType = new PdxType(name, false);
-
-    int index = 0;
-    PdxField stringField = new PdxField("stringField", index++, 0, FieldType.STRING, false);
-    pdxType.addField(stringField);
-
-    final PdxWriterImpl writer = new PdxWriterImpl(pdxType, pdxRegistry, new PdxOutputStream(1024));
-    writer.writeString("MOOF!");
-    writer.completeByteStreamGeneration();
-
-    final PdxInstance instance = writer.makePdxInstance();
-    assertEquals("testToStringForString]{stringField=MOOF!}",
-        substringAfter(instance.toString(), ","));
-  }
-
-  @Test
-  public void testToStringForBooleanLongDoubleAndString() {
-    final String name = "testToStringForBooleanLongDoubleAndString";
-    final PdxType pdxType = new PdxType(name, false);
-
-    int index = 0;
-    PdxField booleanField = new PdxField("booleanField", index++, 0, FieldType.BOOLEAN, false);
-    pdxType.addField(booleanField);
-    PdxField doubleField = new PdxField("doubleField", index++, 0, FieldType.DOUBLE, false);
-    pdxType.addField(doubleField);
-    PdxField longField = new PdxField("longField", index++, 0, FieldType.LONG, false);
-    pdxType.addField(longField);
-    PdxField stringField = new PdxField("stringField", index++, 0, FieldType.STRING, false);
-    pdxType.addField(stringField);
+    pdxRegistry.defineType(emptyPdxType);
+    pdxRegistry.defineType(pdxType);
 
     final PdxWriterImpl writer = new PdxWriterImpl(pdxType, pdxRegistry, new PdxOutputStream(1024));
+    writer.writeInt(13);
     writer.writeBoolean(true);
     writer.writeDouble(3.1415);
-    writer.writeLong(37);
-    writer.writeString("MOOF!");
-    writer.completeByteStreamGeneration();
-
-    final PdxInstance instance = writer.makePdxInstance();
-    assertEquals(
-        "testToStringForBooleanLongDoubleAndString]{booleanField=true, doubleField=3.1415, longField=37, stringField=MOOF!}",
-        substringAfter(instance.toString(), ","));
-  }
-
-  @Test
-  public void testToStringForObject() {
-    final String name = "testToStringForObject";
-    final PdxType pdxType = new PdxType(name, false);
-
-    int index = 0;
-    PdxField objectField = new PdxField("objectField", index++, 0, FieldType.OBJECT, false);
-    pdxType.addField(objectField);
-
-    final PdxWriterImpl writer = new PdxWriterImpl(pdxType, pdxRegistry, new PdxOutputStream(1024));
+    writer.writeInt(37);
+    writer.writeLong(42);
     writer.writeObject(new SerializableObject("Dave"));
-    writer.completeByteStreamGeneration();
-
-    final PdxInstance instance = writer.makePdxInstance();
-    assertEquals("testToStringForObject]{objectField=Dave}",
-        substringAfter(instance.toString(), ","));
-  }
-
-  @Test
-  public void testToStringForByteArray() {
-    final String name = "testToStringForByteArray";
-    final PdxType pdxType = new PdxType(name, false);
-
-    int index = 0;
-    PdxField byteArrayField =
-        new PdxField("byteArrayField", index++, 0, FieldType.BYTE_ARRAY, false);
-    pdxType.addField(byteArrayField);
-
-    final PdxWriterImpl writer = new PdxWriterImpl(pdxType, pdxRegistry, new PdxOutputStream(1024));
+    writer.writeString("MOOF!");
     writer.writeByteArray(new byte[] {(byte) 0xDE, (byte) 0xAD, (byte) 0xBE, (byte) 0xEF});
-    writer.completeByteStreamGeneration();
-
-    final PdxInstance instance = writer.makePdxInstance();
-    assertEquals("testToStringForByteArray]{byteArrayField=DEADBEEF}",
-        substringAfter(instance.toString(), ","));
-  }
-
-  @Test
-  public void testToStringForObjectArray() {
-    final String name = "testToStringForObjectArray";
-    final PdxType pdxType = new PdxType(name, false);
-
-    int index = 0;
-    PdxField objectArrayField =
-        new PdxField("objectArrayField", index++, 0, FieldType.OBJECT_ARRAY, false);
-    pdxType.addField(objectArrayField);
-
-    final PdxWriterImpl writer = new PdxWriterImpl(pdxType, pdxRegistry, new PdxOutputStream(1024));
     writer.writeObjectArray(
         new Object[] {new SerializableObject("Dave"), new SerializableObject("Stewart")});
+    writer.writeObjectArray(new Integer[] {new Integer(37), new Integer(42)});
+    writer.writeShortArray(new short[] {(short) 37, (short) 42});
+    writer.writeIntArray(new int[] {37, 42});
+    writer.writeLongArray(new long[] {37L, 42L});
+    writer.writeCharArray(new char[] {'o', 'k'});
+    writer.writeFloatArray(new float[] {3.14159F, 2.71828F});
+    writer.writeDoubleArray(new double[] {3.14159, 2.71828});
+    writer.writeBooleanArray(new boolean[] {false, true});
     writer.completeByteStreamGeneration();
 
-    final PdxInstance instance = writer.makePdxInstance();
-    assertEquals("testToStringForObjectArray]{objectArrayField=[Dave, Stewart]}",
-        substringAfter(instance.toString(), ","));
+    instance = writer.makePdxInstance();
   }
 
-  @Test
-  public void testToStringForIntegerArray() {
-    final String name = "testToStringForIntegerArray";
-    final PdxType pdxType = new PdxType(name, false);
-
-    int index = 0;
-    PdxField integerArrayField =
-        new PdxField("integerArrayField", index++, 0, FieldType.OBJECT_ARRAY, false);
-    pdxType.addField(integerArrayField);
-
-    final PdxWriterImpl writer = new PdxWriterImpl(pdxType, pdxRegistry, new PdxOutputStream(1024));
-    writer.writeObjectArray(new Integer[] {new Integer(37), new Integer(42)});
-    writer.completeByteStreamGeneration();
-
-    final PdxInstance instance = writer.makePdxInstance();
-    assertEquals("testToStringForIntegerArray]{integerArrayField=[37, 42]}",
-        substringAfter(instance.toString(), ","));
+  @After
+  public void tearDown() {
+    // Do nothing.
   }
 
   @Test
-  public void testToStringForShortArray() {
-    final String name = "testToStringForShortArray";
-    final PdxType pdxType = new PdxType(name, false);
-
-    short index = 0;
-    PdxField shortArrayField =
-        new PdxField("shortArrayField", index++, 0, FieldType.SHORT_ARRAY, false);
-    pdxType.addField(shortArrayField);
-
-    final PdxWriterImpl writer = new PdxWriterImpl(pdxType, pdxRegistry, new PdxOutputStream(1024));
-    writer.writeShortArray(new short[] {(short) 37, (short) 42});
+  public void testToStringForEmpty() {
+    final PdxWriterImpl writer =
+        new PdxWriterImpl(emptyPdxType, pdxRegistry, new PdxOutputStream());
     writer.completeByteStreamGeneration();
 
     final PdxInstance instance = writer.makePdxInstance();
-    assertEquals("testToStringForShortArray]{shortArrayField=[37, 42]}",
-        substringAfter(instance.toString(), ","));
+    assertEquals(emptyPdxType.getClassName() + "]{}", substringAfter(instance.toString(), ","));
   }
 
   @Test
-  public void testToStringForIntArray() {
-    final String name = "testToStringForIntArray";
-    final PdxType pdxType = new PdxType(name, false);
-
-    short index = 0;
-    PdxField intArrayField = new PdxField("intArrayField", index++, 0, FieldType.INT_ARRAY, false);
-    pdxType.addField(intArrayField);
-
-    final PdxWriterImpl writer = new PdxWriterImpl(pdxType, pdxRegistry, new PdxOutputStream(1024));
-    writer.writeIntArray(new int[] {37, 42});
-    writer.completeByteStreamGeneration();
-
-    final PdxInstance instance = writer.makePdxInstance();
-    assertEquals("testToStringForIntArray]{intArrayField=[37, 42]}",
+  public void testToString() {
+    assertEquals(
+        pdxType.getClassName() + "]{" +
+            booleanArrayField.getFieldName() + "=[false, true]" +
+            ", " +
+            booleanField.getFieldName() + "=true" +
+            ", " +
+            byteArrayField.getFieldName() + "=DEADBEEF" +
+            ", " +
+            charArrayField.getFieldName() + "=[o, k]" +
+            ", " +
+            doubleArrayField.getFieldName() + "=[3.14159, 2.71828]" +
+            ", " +
+            doubleField.getFieldName() + "=3.1415" +
+            ", " +
+            floatArrayField.getFieldName() + "=[3.14159, 2.71828]" +
+            ", " +
+            intArrayField.getFieldName() + "=[37, 42]" +
+            ", " +
+            intField.getFieldName() + "=37" +
+            ", " +
+            integerArrayField.getFieldName() + "=[37, 42]" +
+            ", " +
+            longArrayField.getFieldName() + "=[37, 42]" +
+            ", " +
+            longField.getFieldName() + "=42" +
+            ", " +
+            objectArrayField.getFieldName() + "=[Dave, Stewart]" +
+            ", " +
+            objectField.getFieldName() + "=Dave" +
+            ", " +
+            shortArrayField.getFieldName() + "=[37, 42]" +
+            ", " +
+            stringField.getFieldName() + "=MOOF!" +
+            "}",
         substringAfter(instance.toString(), ","));
   }
 
   @Test
-  public void testToStringForLongArray() {
-    final String name = "testToStringForLongArray";
-    final PdxType pdxType = new PdxType(name, false);
-
-    short index = 0;
-    PdxField longArrayField =
-        new PdxField("longArrayField", index++, 0, FieldType.LONG_ARRAY, false);
-    pdxType.addField(longArrayField);
-
-    final PdxWriterImpl writer = new PdxWriterImpl(pdxType, pdxRegistry, new PdxOutputStream(1024));
-    writer.writeLongArray(new long[] {37L, 42L});
-    writer.completeByteStreamGeneration();
-
-    final PdxInstance instance = writer.makePdxInstance();
-    assertEquals("testToStringForLongArray]{longArrayField=[37, 42]}",
-        substringAfter(instance.toString(), ","));
+  public void testGetField() {
+    assertNull(instance.getField(nonExistentField.getFieldName()));
+    assertEquals(Integer.class, instance.getField(nonIdentityField.getFieldName()).getClass());
+    assertEquals(Boolean.class, instance.getField(booleanField.getFieldName()).getClass());
+    assertEquals(Double.class, instance.getField(doubleField.getFieldName()).getClass());
+    assertEquals(Integer.class, instance.getField(intField.getFieldName()).getClass());
+    assertEquals(Long.class, instance.getField(longField.getFieldName()).getClass());
+    assertEquals(SerializableObject.class,
+        instance.getField(objectField.getFieldName()).getClass());
+    assertEquals(String.class, instance.getField(stringField.getFieldName()).getClass());
+    assertEquals(byte[].class, instance.getField(byteArrayField.getFieldName()).getClass());
+    assertEquals(Object[].class, instance.getField(objectArrayField.getFieldName()).getClass());
+    assertEquals(Integer[].class, instance.getField(integerArrayField.getFieldName()).getClass());
+    assertEquals(short[].class, instance.getField(shortArrayField.getFieldName()).getClass());
+    assertEquals(int[].class, instance.getField(intArrayField.getFieldName()).getClass());
+    assertEquals(long[].class, instance.getField(longArrayField.getFieldName()).getClass());
+    assertEquals(char[].class, instance.getField(charArrayField.getFieldName()).getClass());
+    assertEquals(float[].class, instance.getField(floatArrayField.getFieldName()).getClass());
+    assertEquals(double[].class, instance.getField(doubleArrayField.getFieldName()).getClass());
+    assertEquals(boolean[].class, instance.getField(booleanArrayField.getFieldName()).getClass());
   }
 
   @Test
-  public void testToStringForCharArray() {
-    final String name = "testToStringForCharArray";
-    final PdxType pdxType = new PdxType(name, false);
-
-    short index = 0;
-    PdxField charArrayField =
-        new PdxField("charArrayField", index++, 0, FieldType.CHAR_ARRAY, false);
-    pdxType.addField(charArrayField);
-
-    final PdxWriterImpl writer = new PdxWriterImpl(pdxType, pdxRegistry, new PdxOutputStream(1024));
-    writer.writeCharArray(new char[] {'o', 'k'});
-    writer.completeByteStreamGeneration();
-
-    final PdxInstance instance = writer.makePdxInstance();
-    assertEquals("testToStringForCharArray]{charArrayField=[o, k]}",
-        substringAfter(instance.toString(), ","));
+  public void testHasField() {
+    assertEquals(false, instance.hasField(nonExistentField.getFieldName()));
+    assertEquals(true, instance.hasField(nonIdentityField.getFieldName()));
+    assertEquals(true, instance.hasField(booleanField.getFieldName()));
+    assertEquals(true, instance.hasField(doubleField.getFieldName()));
+    assertEquals(true, instance.hasField(intField.getFieldName()));
+    assertEquals(true, instance.hasField(longField.getFieldName()));
+    assertEquals(true,
+        instance.hasField(objectField.getFieldName()));
+    assertEquals(true, instance.hasField(stringField.getFieldName()));
+    assertEquals(true, instance.hasField(byteArrayField.getFieldName()));
+    assertEquals(true, instance.hasField(objectArrayField.getFieldName()));
+    assertEquals(true, instance.hasField(integerArrayField.getFieldName()));
+    assertEquals(true, instance.hasField(shortArrayField.getFieldName()));
+    assertEquals(true, instance.hasField(intArrayField.getFieldName()));
+    assertEquals(true, instance.hasField(longArrayField.getFieldName()));
+    assertEquals(true, instance.hasField(charArrayField.getFieldName()));
+    assertEquals(true, instance.hasField(floatArrayField.getFieldName()));
+    assertEquals(true, instance.hasField(doubleArrayField.getFieldName()));
+    assertEquals(true, instance.hasField(booleanArrayField.getFieldName()));
   }
 
   @Test
-  public void testToStringForFloatArray() {
-    final String name = "testToStringForFloatArray";
-    final PdxType pdxType = new PdxType(name, false);
-
-    short index = 0;
-    PdxField floatArrayField =
-        new PdxField("floatArrayField", index++, 0, FieldType.FLOAT_ARRAY, false);
-    pdxType.addField(floatArrayField);
-
-    final PdxWriterImpl writer = new PdxWriterImpl(pdxType, pdxRegistry, new PdxOutputStream(1024));
-    writer.writeFloatArray(new float[] {3.14159F, 2.71828F});
-    writer.completeByteStreamGeneration();
-
-    final PdxInstance instance = writer.makePdxInstance();
-    assertEquals("testToStringForFloatArray]{floatArrayField=[3.14159, 2.71828]}",
-        substringAfter(instance.toString(), ","));
+  public void testIsEnum() {
+    assertFalse(instance.isEnum());
   }
 
   @Test
-  public void testToStringForDoubleArray() {
-    final String name = "testToStringForDoubleArray";
-    final PdxType pdxType = new PdxType(name, false);
-
-    short index = 0;
-    PdxField doubleArrayField =
-        new PdxField("doubleArrayField", index++, 0, FieldType.DOUBLE_ARRAY, false);
-    pdxType.addField(doubleArrayField);
-
-    final PdxWriterImpl writer = new PdxWriterImpl(pdxType, pdxRegistry, new PdxOutputStream(1024));
-    writer.writeDoubleArray(new double[] {3.14159, 2.71828});
-    writer.completeByteStreamGeneration();
-
-    final PdxInstance instance = writer.makePdxInstance();
-    assertEquals("testToStringForDoubleArray]{doubleArrayField=[3.14159, 2.71828]}",
-        substringAfter(instance.toString(), ","));
+  public void testGetClassName() {
+    assertEquals(pdxType.getClassName(), instance.getClassName());
   }
 
   @Test
-  public void testToStringForBooleanArray() {
-    final String name = "testToStringForBooleanArray";
-    final PdxType pdxType = new PdxType(name, false);
-
-    short index = 0;
-    PdxField booleanArrayField =
-        new PdxField("booleanArrayField", index++, 0, FieldType.BOOLEAN_ARRAY, false);
-    pdxType.addField(booleanArrayField);
-
-    final PdxWriterImpl writer = new PdxWriterImpl(pdxType, pdxRegistry, new PdxOutputStream(1024));
-    writer.writeBooleanArray(new boolean[] {false, true});
-    writer.completeByteStreamGeneration();
+  public void testGetFieldNames() {
+    assertEquals(Arrays.asList(
+        nonIdentityField.getFieldName(), booleanField.getFieldName(), doubleField.getFieldName(),
+        intField.getFieldName(),
+        longField.getFieldName(), objectField.getFieldName(), stringField.getFieldName(),
+        byteArrayField.getFieldName(), objectArrayField.getFieldName(),
+        integerArrayField.getFieldName(), shortArrayField.getFieldName(),
+        intArrayField.getFieldName(), longArrayField.getFieldName(), charArrayField.getFieldName(),
+        floatArrayField.getFieldName(), doubleArrayField.getFieldName(),
+        booleanArrayField.getFieldName()), instance.getFieldNames());
+  }
 
-    final PdxInstance instance = writer.makePdxInstance();
-    assertEquals("testToStringForBooleanArray]{booleanArrayField=[false, true]}",
-        substringAfter(instance.toString(), ","));
+  @Test
+  public void testIsIdentityField() {
+    assertEquals(false, instance.isIdentityField(nonExistentField.getFieldName()));
+    assertEquals(false, instance.isIdentityField(nonIdentityField.getFieldName()));
+    assertEquals(true, instance.isIdentityField(booleanField.getFieldName()));
+    assertEquals(true, instance.isIdentityField(doubleField.getFieldName()));
+    assertEquals(true, instance.isIdentityField(intField.getFieldName()));
+    assertEquals(true, instance.isIdentityField(longField.getFieldName()));
+    assertEquals(true,
+        instance.isIdentityField(objectField.getFieldName()));
+    assertEquals(true, instance.isIdentityField(stringField.getFieldName()));
+    assertEquals(true, instance.isIdentityField(byteArrayField.getFieldName()));
+    assertEquals(true, instance.isIdentityField(objectArrayField.getFieldName()));
+    assertEquals(true, instance.isIdentityField(integerArrayField.getFieldName()));
+    assertEquals(true, instance.isIdentityField(shortArrayField.getFieldName()));
+    assertEquals(true, instance.isIdentityField(intArrayField.getFieldName()));
+    assertEquals(true, instance.isIdentityField(longArrayField.getFieldName()));
+    assertEquals(true, instance.isIdentityField(charArrayField.getFieldName()));
+    assertEquals(true, instance.isIdentityField(floatArrayField.getFieldName()));
+    assertEquals(true, instance.isIdentityField(doubleArrayField.getFieldName()));
+    assertEquals(true, instance.isIdentityField(booleanArrayField.getFieldName()));
   }
 
   static class SerializableObject implements Serializable {