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

jbarrett 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 cd84387  GEODE-5356: Add unit test for PdxField.
cd84387 is described below

commit cd84387b9f06c0caeabf31b0a8b99ba4b7eb6256
Author: Sarge <[email protected]>
AuthorDate: Thu Jun 28 12:59:04 2018 -0700

    GEODE-5356: Add unit test for PdxField.
---
 .../apache/geode/pdx/internal/PdxFieldTest.java    | 203 +++++++++++++++++++++
 1 file changed, 203 insertions(+)

diff --git 
a/geode-core/src/test/java/org/apache/geode/pdx/internal/PdxFieldTest.java 
b/geode-core/src/test/java/org/apache/geode/pdx/internal/PdxFieldTest.java
new file mode 100644
index 0000000..3e746be
--- /dev/null
+++ b/geode-core/src/test/java/org/apache/geode/pdx/internal/PdxFieldTest.java
@@ -0,0 +1,203 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license
+ * agreements. See the NOTICE file distributed with this work for additional 
information regarding
+ * copyright ownership. The ASF licenses this file to You under the Apache 
License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the 
License. You may obtain a
+ * copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software 
distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 
KIND, either express
+ * or implied. See the License for the specific language governing permissions 
and limitations under
+ * the License.
+ */
+package org.apache.geode.pdx.internal;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.io.PrintStream;
+
+import javax.annotation.Nullable;
+
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import org.apache.geode.pdx.FieldType;
+import org.apache.geode.test.junit.categories.SerializationTest;
+import org.apache.geode.test.junit.categories.UnitTest;
+
+@Category({UnitTest.class, SerializationTest.class})
+public class PdxFieldTest {
+  static final String FIELD_NAME = "fieldName";
+  static final int FIELD_INDEX = 13;
+  static final int VAR_LEN_FIELD_SEQ_ID = 37;
+  static final FieldType FIELD_TYPE = FieldType.OBJECT;
+  static final boolean IDENTITY_FIELD = true;
+
+  @Nullable
+  static FieldType getAnotherFieldType(FieldType anythingButThis) {
+    for (FieldType fieldType : FieldType.values()) {
+      if (!anythingButThis.equals(fieldType)) {
+        return fieldType;
+      }
+    }
+    return null;
+  }
+
+  @Test
+  public void testNoArgConstructor() {
+    final PdxField emptyField = new PdxField();
+    assertNull(emptyField.getFieldName());
+    assertEquals(0, emptyField.getFieldIndex());
+    assertEquals(0, emptyField.getVarLenFieldSeqId());
+    assertNull(emptyField.getFieldType());
+    assertFalse(emptyField.isIdentityField());
+    try {
+      assertEquals(false, emptyField.isVariableLengthType());
+      fail();
+    } catch (NullPointerException npe) {
+      // Pass.
+    }
+    assertEquals(0, emptyField.getRelativeOffset());
+    assertEquals(0, emptyField.getVlfOffsetIndex());
+    assertEquals(false, emptyField.isDeleted());
+    try {
+      assertNull(emptyField.getTypeIdString());
+      fail();
+    } catch (NullPointerException npe) {
+      // Pass.
+    }
+  }
+
+  @Test
+  public void testSomeArgConstructor() {
+    final PdxField nonEmptyField =
+        new PdxField(FIELD_NAME, FIELD_INDEX, VAR_LEN_FIELD_SEQ_ID, 
FIELD_TYPE, IDENTITY_FIELD);
+    assertEquals(FIELD_NAME, nonEmptyField.getFieldName());
+    assertEquals(FIELD_INDEX, nonEmptyField.getFieldIndex());
+    assertEquals(VAR_LEN_FIELD_SEQ_ID, nonEmptyField.getVarLenFieldSeqId());
+    assertEquals(FIELD_TYPE, nonEmptyField.getFieldType());
+    assertEquals(IDENTITY_FIELD, nonEmptyField.isIdentityField());
+    assertEquals(!FIELD_TYPE.isFixedWidth(), 
nonEmptyField.isVariableLengthType());
+    assertEquals(0, nonEmptyField.getRelativeOffset());
+    assertEquals(0, nonEmptyField.getVlfOffsetIndex());
+    assertEquals(false, nonEmptyField.isDeleted());
+    assertEquals(FIELD_TYPE.toString(), nonEmptyField.getTypeIdString());
+  }
+
+  @Test
+  public void testCompareTo() {
+    final PdxField field =
+        new PdxField(FIELD_NAME, FIELD_INDEX, VAR_LEN_FIELD_SEQ_ID, 
FIELD_TYPE, IDENTITY_FIELD);
+    assertEquals(0, field.compareTo(field));
+
+    final PdxField sameFieldNameOnly = new PdxField(FIELD_NAME, FIELD_INDEX + 
1,
+        VAR_LEN_FIELD_SEQ_ID + 1, getAnotherFieldType(FIELD_TYPE), 
!IDENTITY_FIELD);
+    assertEquals(0, field.compareTo(sameFieldNameOnly));
+
+    final PdxField differentFieldNameOnly = new PdxField("Not " + FIELD_NAME, 
FIELD_INDEX,
+        VAR_LEN_FIELD_SEQ_ID, FIELD_TYPE, IDENTITY_FIELD);
+    assertNotEquals(0, field.compareTo(differentFieldNameOnly));
+  }
+
+  @Test
+  public void testHashCode() {
+    final PdxField field =
+        new PdxField(FIELD_NAME, FIELD_INDEX, VAR_LEN_FIELD_SEQ_ID, 
FIELD_TYPE, IDENTITY_FIELD);
+    final PdxField sameFieldNameAndFieldType = new PdxField(FIELD_NAME, 
FIELD_INDEX + 1,
+        VAR_LEN_FIELD_SEQ_ID + 1, FIELD_TYPE, !IDENTITY_FIELD);
+    assertEquals(field.hashCode(), sameFieldNameAndFieldType.hashCode());
+
+    final PdxField differentFieldName = new PdxField("Not " + FIELD_NAME, 
FIELD_INDEX + 1,
+        VAR_LEN_FIELD_SEQ_ID + 1, FIELD_TYPE, !IDENTITY_FIELD);
+    assertNotEquals(field.hashCode(), differentFieldName.hashCode());
+
+    final PdxField differentFieldType = new PdxField(FIELD_NAME, FIELD_INDEX + 
1,
+        VAR_LEN_FIELD_SEQ_ID + 1, getAnotherFieldType(FIELD_TYPE), 
!IDENTITY_FIELD);
+    assertNotEquals(field.hashCode(), differentFieldType.hashCode());
+  }
+
+  @Test
+  public void testEquals() {
+    final PdxField field =
+        new PdxField(FIELD_NAME, FIELD_INDEX, VAR_LEN_FIELD_SEQ_ID, 
FIELD_TYPE, IDENTITY_FIELD);
+    field.setDeleted(true);
+    assertTrue(field.equals(field));
+    assertFalse(field.equals(null));
+    assertFalse(field.equals(new Object()));
+
+    final PdxField sameFieldNameFieldTypeAndDeleted = new PdxField(FIELD_NAME, 
FIELD_INDEX + 1,
+        VAR_LEN_FIELD_SEQ_ID + 1, FIELD_TYPE, !IDENTITY_FIELD);
+    sameFieldNameFieldTypeAndDeleted.setDeleted(true);
+    assertTrue(field.equals(sameFieldNameFieldTypeAndDeleted));
+
+    final PdxField differentFieldName = new PdxField("Not " + FIELD_NAME, 
FIELD_INDEX + 1,
+        VAR_LEN_FIELD_SEQ_ID + 1, FIELD_TYPE, !IDENTITY_FIELD);
+    differentFieldName.setDeleted(true);
+    assertFalse(field.equals(differentFieldName));
+
+    final PdxField differentFieldType = new PdxField(FIELD_NAME, FIELD_INDEX + 
1,
+        VAR_LEN_FIELD_SEQ_ID + 1, getAnotherFieldType(FIELD_TYPE), 
!IDENTITY_FIELD);
+    differentFieldType.setDeleted(true);
+    assertFalse(field.equals(differentFieldType));
+
+    final PdxField differentDeleted = new PdxField(FIELD_NAME, FIELD_INDEX + 1,
+        VAR_LEN_FIELD_SEQ_ID + 1, FIELD_TYPE, !IDENTITY_FIELD);
+    differentDeleted.setDeleted(false);
+    assertFalse(field.equals(differentDeleted));
+  }
+
+  @Test
+  public void testToString() {
+    final PdxField field =
+        new PdxField(FIELD_NAME, FIELD_INDEX, VAR_LEN_FIELD_SEQ_ID, 
FIELD_TYPE, IDENTITY_FIELD);
+    assertEquals(0, field.toString().indexOf(FIELD_NAME));
+  }
+
+  @Test
+  public void testToStream() {
+    final PdxField field =
+        new PdxField(FIELD_NAME, FIELD_INDEX, VAR_LEN_FIELD_SEQ_ID, 
FIELD_TYPE, IDENTITY_FIELD);
+    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
+    field.toStream(new PrintStream(byteArrayOutputStream));
+    assertNotEquals(-1, byteArrayOutputStream.toString().indexOf(FIELD_NAME));
+  }
+
+  @Test
+  public void testToDataAndFromData() throws IOException, 
ClassNotFoundException {
+    final PdxField before =
+        new PdxField(FIELD_NAME, FIELD_INDEX, VAR_LEN_FIELD_SEQ_ID, 
FIELD_TYPE, IDENTITY_FIELD);
+    ByteArrayOutputStream byteArrayOutputStream = new 
ByteArrayOutputStream(1024);
+    DataOutputStream dataOutputStream = new 
DataOutputStream(byteArrayOutputStream);
+    before.toData(dataOutputStream);
+    dataOutputStream.close();
+
+    final PdxField after = new PdxField();
+    ByteArrayInputStream byteArrayInputStream =
+        new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
+    DataInputStream dataInputStream = new 
DataInputStream(byteArrayInputStream);
+    after.fromData(dataInputStream);
+
+    assertEquals(before.getFieldName(), after.getFieldName());
+    assertEquals(before.getFieldIndex(), after.getFieldIndex());
+    assertEquals(before.getVarLenFieldSeqId(), after.getVarLenFieldSeqId());
+    assertEquals(before.getFieldType(), after.getFieldType());
+    assertEquals(before.isIdentityField(), after.isIdentityField());
+    assertEquals(before.isVariableLengthType(), after.isVariableLengthType());
+    assertEquals(before.getRelativeOffset(), after.getRelativeOffset());
+    assertEquals(before.getVlfOffsetIndex(), after.getVlfOffsetIndex());
+    assertEquals(before.isDeleted(), after.isDeleted());
+    assertEquals(before.getTypeIdString(), after.getTypeIdString());
+  }
+}

Reply via email to