Adding tests for element/mesh getters.
Fixing bugs found by tests.

Change-Id: I6592a3b65f16b21255e7788fe8ee8aaafe268638
diff --git a/rsElement.cpp b/rsElement.cpp
index 1e022cf..24c8738 100644
--- a/rsElement.cpp
+++ b/rsElement.cpp
@@ -27,6 +27,7 @@
     mFields = NULL;
     mFieldCount = 0;
     mHasReference = false;
+    memset(&mHal, 0, sizeof(mHal));
 }
 
 Element::~Element() {
@@ -176,16 +177,23 @@
         return;
     }
 
-    mHal.state.fields = new const Element*[mFieldCount];
-    mHal.state.fieldArraySizes = new uint32_t[mFieldCount];
-    mHal.state.fieldNames = new const char*[mFieldCount];
-    mHal.state.fieldNameLengths = new uint32_t[mFieldCount];
-    mHal.state.fieldOffsetBytes = new uint32_t[mFieldCount];
-    mHal.state.fieldsCount = mFieldCount;
+    uint32_t noPaddingFieldCount = 0;
+    for (uint32_t ct = 0; ct < mFieldCount; ct ++) {
+        if (mFields[ct].name.string()[0] != '#') {
+            noPaddingFieldCount ++;
+        }
+    }
+
+    mHal.state.fields = new const Element*[noPaddingFieldCount];
+    mHal.state.fieldArraySizes = new uint32_t[noPaddingFieldCount];
+    mHal.state.fieldNames = new const char*[noPaddingFieldCount];
+    mHal.state.fieldNameLengths = new uint32_t[noPaddingFieldCount];
+    mHal.state.fieldOffsetBytes = new uint32_t[noPaddingFieldCount];
+    mHal.state.fieldsCount = noPaddingFieldCount;
 
     size_t bits = 0;
     size_t bitsUnpadded = 0;
-    for (size_t ct=0; ct < mFieldCount; ct++) {
+    for (size_t ct = 0, ctNoPadding = 0; ct < mFieldCount; ct++) {
         mFields[ct].offsetBits = bits;
         mFields[ct].offsetBitsUnpadded = bitsUnpadded;
         bits += mFields[ct].e->getSizeBits() * mFields[ct].arraySize;
@@ -195,11 +203,17 @@
             mHasReference = true;
         }
 
-        mHal.state.fields[ct] = mFields[ct].e.get();
-        mHal.state.fieldArraySizes[ct] = mFields[ct].arraySize;
-        mHal.state.fieldNames[ct] = mFields[ct].name.string();
-        mHal.state.fieldNameLengths[ct] = mFields[ct].name.length() + 1; // to include 0
-        mHal.state.fieldOffsetBytes[ct] = mFields[ct].offsetBits >> 3;
+        if (mFields[ct].name.string()[0] == '#') {
+            continue;
+        }
+
+        mHal.state.fields[ctNoPadding] = mFields[ct].e.get();
+        mHal.state.fieldArraySizes[ctNoPadding] = mFields[ct].arraySize;
+        mHal.state.fieldNames[ctNoPadding] = mFields[ct].name.string();
+        mHal.state.fieldNameLengths[ctNoPadding] = mFields[ct].name.length() + 1; // to include 0
+        mHal.state.fieldOffsetBytes[ctNoPadding] = mFields[ct].offsetBits >> 3;
+
+        ctNoPadding ++;
     }
 
     mHal.state.elementSizeBytes = getSizeBytes();