fix bug in using string allocator for all strings; tests for string allocator for all strings; documentation for..
diff --git a/cmd_line_main.c b/cmd_line_main.c
index cacc095..f46799d 100644
--- a/cmd_line_main.c
+++ b/cmd_line_main.c
@@ -28,8 +28,8 @@
 //  Created by Laurence Lundblade on 9/13/18.
 
 #include <stdio.h>
-
 #include "run_tests.h"
+#include "qcbor.h" // to print sizes of the structures.
 
 
 int fputs_wrapper(const char *szString, void *ctx)
@@ -42,7 +42,12 @@
 {
     (void)argc; // Suppress unused warning
     (void)argv; // Suppress unused warning
-   
+    
+    printf("sizeof(QCBOREncodeContext) %d\n", (uint32_t)sizeof(QCBOREncodeContext));
+    printf("sizeof(QCBORDecodeContext) %d\n", (uint32_t)sizeof(QCBORDecodeContext));
+    printf("sizeof(QCBORItem) %d\n", (uint32_t)sizeof(QCBORItem));
+    printf("sizeof(QCBORStringAllocator) %d\n\n", (uint32_t)sizeof(QCBORStringAllocator));
+
     int nNumTestsFailed = run_tests(&fputs_wrapper, stdout, NULL);
 
     return nNumTestsFailed;
diff --git a/inc/qcbor.h b/inc/qcbor.h
index 73f6219..81f9e9c 100644
--- a/inc/qcbor.h
+++ b/inc/qcbor.h
@@ -335,11 +335,20 @@
  off the end of the buffer an error is returned.  During decoding
  the caller supplies the encoded CBOR in a contiguous buffer
  and the decoder returns pointers and lengths into that buffer
- for strings. 
+ for strings.
  
- This implementation does not use malloc at all. All data structures
+ This implementation does not use malloc. All data structures
  passed in/out of the APIs can fit on the stack.
  
+ Decoding of indefinite length strings is a special case that requires
+ a "string allocator" to allocate memory into which the segments of
+ the string are coalesced. Without this, decoding will error out if
+ an indefinite length string is encountered (indefinite length maps
+ and arrays do not require the string allocator). A simple string
+ allocator called MemPool is built-in and will work if supplied with
+ a block of memory to allocate. The string allocator can optionally
+ use malloc() or some other custom scheme.
+ 
  Here are some terms and definitions:
  
  - "Item", "Data Item": An integer or string or such. The basic "thing" that
@@ -405,7 +414,7 @@
  parse such labels, but it is not explicitly supported.
  
  
- The intended encoding usage mode is to invoke the encoding twice. First
+ A common encoding usage mode is to invoke the encoding twice. First
  with no output buffer to compute the length of the needed output
  buffer. Then the correct sized output buffer is allocated. Last the
  encoder is invoked again, this time with the output buffer.
@@ -481,7 +490,7 @@
    QCBOR_MAX_ARRAY_NESTING (this is typically 10).
  - Max items in an array or map when encoding / decoding is
    QCBOR_MAX_ITEMS_IN_ARRAY (typicall 65,536).
- - Does not support encoding indefinite lengths.
+ - Does not support encoding indefinite lengths (decoding is supported).
  - Does not directly support some tagged types: decimal fractions, big floats
  - Does not directly support labels in maps other than text strings and ints.
  - Epoch dates limited to INT64_MAX (+/- 292 billion years)
@@ -594,7 +603,7 @@
 /** One of the segments in an indefinite length string is of the wrong type */
 #define QCBOR_ERR_INDEFINITE_STRING_SEG   19
 
-/** Error allocating space for indefinite length string segment */
+/** Error allocating space for a string, usually for an indefinite length string */
 #define QCBOR_ERR_STRING_ALLOC            20
 
 /** The a break occurred outside an indefinite length item */
@@ -703,16 +712,32 @@
 } QCBORItem;
 
 
-/*
- Optional to set up an allocator for bstr and tstr types.
- Required to process indefinite length bstr and tstr types.
- (indefinite length maps can be processed without this).
+/**
+  This is a set of functions and pointer context (in object-oriented parlance,
+ an "object") used to allocate memory for coalescing the segments of an indefinite
+ length string into one.
+ 
+ The fAllocate function works as an initial allocator and a reallocator to
+ expand the string for each new segment. When it is an initial allocator
+ pOldMem is NULL.
+ 
+ The fFree function is called to clean up an individual allocation when an error occurs.
+ 
+ The fDesctructor function is called when QCBORDecode_Finish is called.
+ 
+ Any memory allocated with this will be marked by setting uXXXAlloc in the
+ QCBORItem structure so the caller knows they have to free it.
+ 
+ fAllocate is only ever called to increase the single most recent
+ allocation made, making implementation of a memory pool very simple.
+ 
+ fFree is also only called on the single most recent allocation.
  */
 typedef struct {
-   void    *pAllocaterContext;
+   void       *pAllocaterContext;
    UsefulBuf (*fAllocate)(void *pAllocaterContext, void *pOldMem, size_t uNewSize);
-   void   (*fFree)(void *pAllocaterContext, void *pMem);
-   void   (*fDestructor)(void *pAllocaterContext);
+   void      (*fFree)(void *pAllocaterContext, void *pMem);
+   void      (*fDestructor)(void *pAllocaterContext);
 } QCBORStringAllocator;
 
 
@@ -1643,50 +1668,63 @@
 
 
 /**
- Set up a memory pool for indefinite length strings
+ Set up the MemPool string allocator for indefinite length strings.
  
  @param[in] pCtx The decode context to initialize.
- @param[in] MemPool The pointer and length of the memory pool
- @param[in] bAllStrings true means to put even definite length strings in the pool
+ @param[in] MemPool The pointer and length of the memory pool.
+ @param[in] bAllStrings true means to put even definite length strings in the pool.
  
- @return 0 if the MemPool was at least minimum size, 1 if not.
+ @return 0 if the MemPool was at least minimum size, 1 if too small.
  
  Indefinite length strings (text and byte) cannot be decoded unless there is
- either a memory pool set up or a string allocator configured.
+ a string allocator configured. MemPool is a simple built-in string allocator
+ that allocates bytes from a block of memory handed to it by calling
+ this function.
  
- The MemPool must be sized large enough. For a 64-bit CPU it must be sized
- at 72 bytes plus space to hold all the indefinite length strings. For a 32-bit CPU
- the size is 36 bytes plus space for the strings. (This is space for 9 pointers;
- it may vary from one CPU or OS to another). There is no overhead per
- string. This includes indefinite length strings that are serve as labels
- for map items.
+ The buffer must be large enough to hold some fixed overhead plus the
+ space for all the strings allocated. The fixed overhead does vary
+ per implementation, but can roughly be computed as the space for
+ nine pointers, 72 bytes of a 64-bit CPU.  There is no overhead
+ per string allocated
  
- If bAllStrings is set then the size will be 64 or 32 bytes plus the space to
- hold **all** strings, definite and indefinite length, value or label.
- The advantage of this
- is that after the parse is complete, the original memory holding the
- encoded CBOR does not need to remain valid.
+ This memory pool is used for all indefinite length strings that are text
+ strings or byte strings, including strings used as labels.
  
- The memory from MemPool will be where all the pointers in returned
- QCBORItems will point.
+ The pointers to strings in QCBORItem will point into the buffer passed set
+ here. They do not need to be individually freed. Just discard the buffer
+ when they are no longer needed.
  
- 
+ If bAllStrings is set then the size will be the overhead plus the space to
+ hold **all** strings, definite and indefinite length, value or label. The
+ advantage of this is that after the decode is complete, the original memory
+ holding the encoded CBOR does not need to remain valid.
  
  */
 int QCBORDecode_SetMemPool(QCBORDecodeContext *pCtx, UsefulBuf MemPool, bool bAllStrings);
 
 
 /**
+ @brief Sets up a custom string allocator for indefinite length strings
  
+ @param[in] pCtx The decoder context to set up an allocator for
+ @param[in] pAllocator The string allocator "object"
+ 
+ See QCBORStringAllocator for the requirements of the string allocator.
+ 
+ Typically this is used if the simple MemPool allocator isn't desired.
+ 
+ A malloc based string allocator can be obtained by calling
+ QCBORDecode_MakeMallocStringAllocator(). Pass its result to
+ this function.
  */
-void QCBORDecode_SetUpAllocator(QCBORDecodeContext *pCtx, const QCBORStringAllocator *pAllocator);
 
+void QCBORDecode_SetUpAllocator(QCBORDecodeContext *pCtx, const QCBORStringAllocator *pAllocator);
 
 
 /**
  Gets the next item (integer, byte string, array...) in pre order traversal of CBOR tree
  
- @param[in]  pCtx          The context to initialize
+ @param[in]  pCtx          The decoder context.
  @param[out] pDecodedItem  Holds the CBOR item just decoded.
  
  @return
diff --git a/src/qcbor_decode.c b/src/qcbor_decode.c
index f789d0a..ab8ce57 100644
--- a/src/qcbor_decode.c
+++ b/src/qcbor_decode.c
@@ -171,7 +171,7 @@
       // Nothing to do for empty definite lenth arrays. They are just are
       // effectively the same as an item that is not a map or array
       goto Done;
-      // Empty indefinite length maps and arrays are handled elsewhere; TODO: where?
+      // Empty indefinite length maps and arrays are handled elsewhere
    }
    
    // Error out if arrays is too long to handle
@@ -281,9 +281,6 @@
          nReturn = QCBOR_ERR_UNSUPPORTED;
          goto Done;
 
-      case LEN_IS_INDEFINITE:
-         // Fall through to see what happens: TODO: check this.
-         
       default:
          // This is when the "number" is in the additional info
          uTmpValue = uAdditionalInfo;
@@ -443,19 +440,19 @@
 /*
  Decode text and byte strings
  */
-inline static int DecodeBytes(QCBORStringAllocator *pAlloc, int nMajorType, uint64_t uNumber, UsefulInputBuf *pUInBuf, QCBORItem *pDecodedItem)
+inline static int DecodeBytes(QCBORStringAllocator *pAlloc, int nMajorType, uint64_t uStrLen, UsefulInputBuf *pUInBuf, QCBORItem *pDecodedItem)
 {
-    UsefulBufC Bytes = UsefulInputBuf_GetUsefulBuf(pUInBuf, uNumber);
+    UsefulBufC Bytes = UsefulInputBuf_GetUsefulBuf(pUInBuf, uStrLen);
    
    int nReturn = QCBOR_ERR_HIT_END;
    
    if(!UsefulBuf_IsNULLC(Bytes)) {
       if(pAlloc) {
-         UsefulBuf NewMem = pAlloc->fAllocate(pAlloc->pAllocaterContext, NULL, uNumber);
-         if(UsefulBuf_IsNULL(NewMem)) {
+         UsefulBuf NewMem = pAlloc->fAllocate(pAlloc->pAllocaterContext, NULL, uStrLen);
+         if(!UsefulBuf_IsNULL(NewMem)) {
             pDecodedItem->val.string = UsefulBuf_Copy(NewMem, Bytes);
          } else {
-            // TODO: failure
+            return QCBOR_ERR_STRING_ALLOC;
          }
       } else {
          pDecodedItem->val.string = Bytes;
@@ -605,7 +602,7 @@
       case CBOR_MAJOR_TYPE_TEXT_STRING: // Major type 3
          if(uAdditionalInfo == LEN_IS_INDEFINITE) {
             pDecodedItem->uDataType  = (uMajorType == CBOR_MAJOR_TYPE_BYTE_STRING) ? QCBOR_TYPE_BYTE_STRING : QCBOR_TYPE_TEXT_STRING;
-            pDecodedItem->val.string = (UsefulBufC){NULL, SIZE_MAX}; // TODO: SIZE_MAX this is OK, right?
+            pDecodedItem->val.string = (UsefulBufC){NULL, SIZE_MAX};
          } else {
             nReturn = DecodeBytes(pAlloc, uMajorType, uNumber, pUInBuf, pDecodedItem);
          }
@@ -619,7 +616,7 @@
             goto Done;
          }
          if(uAdditionalInfo == LEN_IS_INDEFINITE) {
-            pDecodedItem->val.uCount = UINT16_MAX; // Indicate indefinite length; TODO: a better way?
+            pDecodedItem->val.uCount = UINT16_MAX; // Indicate indefinite length
          } else {
             pDecodedItem->val.uCount = (uint16_t)uNumber; // type conversion OK because of check above
          }
@@ -744,7 +741,7 @@
 {
    int nReturn;
    
-   // TODO: optimize loop below so there is only one call to GetNext_FullItem
+   // TODO: optimize loop below so there is only one call to GetNext_FullItem?
    nReturn = GetNext_FullItem(me, pDecodedItem);
    if(nReturn) {
       goto Done;
diff --git a/test/qcbor_decode_tests.c b/test/qcbor_decode_tests.c
index 10c7bdb..fce478d 100644
--- a/test/qcbor_decode_tests.c
+++ b/test/qcbor_decode_tests.c
@@ -603,8 +603,8 @@
       i2 != 6000 ||
       i3 != 8 ||
       i4 != 11 ||
-      bcmp("galactic", s3, 8) !=0 ||
-      bcmp("haven token", s4, 11) !=0) {
+      memcmp("galactic", s3, 8) !=0 ||
+      memcmp("haven token", s4, 11) !=0) {
       printf("SimpleArraryTest Failed\n");
       return(-1);
    }
@@ -1489,7 +1489,7 @@
 
 
 
-static int CheckItemWithIntLabel(QCBORDecodeContext *pCtx, uint8_t uDataType, uint8_t uNestingLevel, int64_t nLabel, QCBORItem *pItem)
+static int CheckItemWithIntLabel(QCBORDecodeContext *pCtx, uint8_t uDataType, uint8_t uNestingLevel, uint8_t uNextNest, int64_t nLabel, QCBORItem *pItem)
 {
    QCBORItem Item;
    int nCBORError;
@@ -1505,6 +1505,7 @@
       }
    }
    if(Item.uNestingLevel != uNestingLevel) return -1;
+   if(Item.uNextNestLevel != uNextNest) return -1;
    
    if(pItem) {
       *pItem = Item;
@@ -1516,26 +1517,26 @@
 // Same code checks definite and indefinite length versions of the map
 static int CheckCSRMaps(QCBORDecodeContext *pDC)
 {
-   if(CheckItemWithIntLabel(pDC, QCBOR_TYPE_MAP, 0, 0, NULL)) return -1;
+   if(CheckItemWithIntLabel(pDC, QCBOR_TYPE_MAP, 0, 1, 0, NULL)) return -1;
    
-   if(CheckItemWithIntLabel(pDC, QCBOR_TYPE_MAP, 1, -23, NULL)) return -1;
+   if(CheckItemWithIntLabel(pDC, QCBOR_TYPE_MAP, 1, 2, -23, NULL)) return -1;
    
-   if(CheckItemWithIntLabel(pDC, QCBOR_TYPE_MAP, 2, -20, NULL)) return -1;
+   if(CheckItemWithIntLabel(pDC, QCBOR_TYPE_MAP, 2, 3, -20, NULL)) return -1;
    
-   if(CheckItemWithIntLabel(pDC, QCBOR_TYPE_TEXT_STRING, 3, -18, NULL)) return -1;
-   if(CheckItemWithIntLabel(pDC, QCBOR_TYPE_TEXT_STRING, 3, -17, NULL)) return -1;
-   if(CheckItemWithIntLabel(pDC, QCBOR_TYPE_TEXT_STRING, 3, -15, NULL)) return -1;
-   if(CheckItemWithIntLabel(pDC, QCBOR_TYPE_TEXT_STRING, 3, -16, NULL)) return -1;
-   if(CheckItemWithIntLabel(pDC, QCBOR_TYPE_TEXT_STRING, 3, -14, NULL)) return -1;
+   if(CheckItemWithIntLabel(pDC, QCBOR_TYPE_TEXT_STRING, 3, 3, -18, NULL)) return -1;
+   if(CheckItemWithIntLabel(pDC, QCBOR_TYPE_TEXT_STRING, 3, 3, -17, NULL)) return -1;
+   if(CheckItemWithIntLabel(pDC, QCBOR_TYPE_TEXT_STRING, 3, 3, -15, NULL)) return -1;
+   if(CheckItemWithIntLabel(pDC, QCBOR_TYPE_TEXT_STRING, 3, 3, -16, NULL)) return -1;
+   if(CheckItemWithIntLabel(pDC, QCBOR_TYPE_TEXT_STRING, 3, 2, -14, NULL)) return -1;
    
-   if(CheckItemWithIntLabel(pDC, QCBOR_TYPE_MAP, 2, -19, NULL)) return -1;
-   if(CheckItemWithIntLabel(pDC, QCBOR_TYPE_MAP, 3, -11, NULL)) return -1;
+   if(CheckItemWithIntLabel(pDC, QCBOR_TYPE_MAP, 2, 3, -19, NULL)) return -1;
+   if(CheckItemWithIntLabel(pDC, QCBOR_TYPE_MAP, 3, 4, -11, NULL)) return -1;
    
-   if(CheckItemWithIntLabel(pDC, QCBOR_TYPE_INT64, 4, -9, NULL)) return -1;
-   if(CheckItemWithIntLabel(pDC, QCBOR_TYPE_BYTE_STRING, 3, -10, NULL)) return -1;
+   if(CheckItemWithIntLabel(pDC, QCBOR_TYPE_INT64, 4, 3, -9, NULL)) return -1;
+   if(CheckItemWithIntLabel(pDC, QCBOR_TYPE_BYTE_STRING, 3, 1, -10, NULL)) return -1;
    
-   if(CheckItemWithIntLabel(pDC, QCBOR_TYPE_MAP, 1, -22, NULL)) return -1;
-   if(CheckItemWithIntLabel(pDC, QCBOR_TYPE_INT64, 2, -5, NULL)) return -1;
+   if(CheckItemWithIntLabel(pDC, QCBOR_TYPE_MAP, 1, 2, -22, NULL)) return -1;
+   if(CheckItemWithIntLabel(pDC, QCBOR_TYPE_INT64, 2, 0, -5, NULL)) return -1;
    
    if(QCBORDecode_Finish(pDC)) return -2;
    
@@ -1662,7 +1663,7 @@
 }
 
 
-int indeflen_nest_test()
+int IndefiniteLengthNestTest()
 {
    UsefulBuf_MakeStackUB(Storage, 50);
    int i;
@@ -1685,7 +1686,7 @@
 static const uint8_t pIndefiniteArrayBad4[] = {0x81, 0x9f}; // Unclosed indeflen inside def len
 static const uint8_t pIndefiniteArrayBad5[] = {0x9f, 0xc7, 0xff}; // confused tag
 
-int indefinite_length_decode_test()
+int IndefiniteLengthArrayMapTest()
 {
    int nResult;
    // --- first test -----
@@ -1923,7 +1924,7 @@
 }
 
 
-int indefinite_length_decode_string_test()
+int IndefiniteLengthStringTest()
 {
    QCBORDecodeContext DC;
    QCBORItem Item;
@@ -2104,8 +2105,96 @@
 }
 
 
+int AllocAllStringsTest()
+{
+   QCBORDecodeContext DC;
+   
+   // First test, use the "CSRMap" as easy input and checking
+   QCBORDecode_Init(&DC, UsefulBuf_FromByteArrayLiteral(s_CSRInput), QCBOR_DECODE_MODE_NORMAL);
+   
+   UsefulBuf_MakeStackUB(Pool, 300);
+   
+   QCBORDecode_SetMemPool(&DC, Pool, 1); // Turn on copying.
+   
+   if(CheckCSRMaps(&DC)) {
+      return -1;
+   }
+   
+   // Next parse, save pointers to a few strings, destroy original and see all is OK.
+   MakeUsefulBufOnStack(CopyOfStorage, 160);
+   UsefulBufC CopyOf = UsefulBuf_Copy(CopyOfStorage, UsefulBuf_FromByteArrayLiteral(pValidMapEncoded));
 
-int mempool_test(void)
+   QCBORDecode_Init(&DC, CopyOf, QCBOR_DECODE_MODE_NORMAL);
+   QCBORDecode_SetMemPool(&DC, Pool, 1); // Turn on copying.
+   
+   int nCBORError;
+   QCBORItem Item1, Item2, Item3, Item4;
+   if((nCBORError = QCBORDecode_GetNext(&DC, &Item1)))
+      return nCBORError;
+   if(Item1.uDataType != QCBOR_TYPE_MAP ||
+      Item1.val.uCount != 3)
+      return -1;
+   if((nCBORError = QCBORDecode_GetNext(&DC, &Item1)))
+      return nCBORError;
+   if((nCBORError = QCBORDecode_GetNext(&DC, &Item2)))
+      return nCBORError;
+   if((nCBORError = QCBORDecode_GetNext(&DC, &Item3)))
+      return nCBORError;
+   if((nCBORError = QCBORDecode_GetNext(&DC, &Item4)))
+      return nCBORError;
+   
+   UsefulBuf_Set(&CopyOfStorage, '_');
+   
+   if(Item1.uLabelType != QCBOR_TYPE_TEXT_STRING ||
+      Item1.label.string.len != 13 ||
+      Item1.uDataType != QCBOR_TYPE_INT64 ||
+      Item1.val.int64 != 42 ||
+      memcmp(Item1.label.string.ptr, "first integer", 13))
+      return -1;
+   
+
+   if(Item2.uLabelType != QCBOR_TYPE_TEXT_STRING ||
+      Item2.label.string.len != 23 ||
+      memcmp(Item2.label.string.ptr, "an array of two strings", 23) ||
+      Item2.uDataType != QCBOR_TYPE_ARRAY ||
+      Item2.val.uCount != 2)
+      return -1;
+   
+   if(Item3.uDataType != QCBOR_TYPE_TEXT_STRING ||
+      Item3.val.string.len != 7 ||
+      memcmp(Item3.val.string.ptr, "string1", 7))
+      return -1;
+   
+   if(Item4.uDataType != QCBOR_TYPE_TEXT_STRING ||
+      Item4.val.string.len != 7 ||
+      memcmp(Item4.val.string.ptr, "string2", 7))
+      return -1;
+   
+   // Next parse with a pool that is too small
+   UsefulBuf_MakeStackUB(SmallPool, 80);
+   QCBORDecode_Init(&DC, UsefulBuf_FromByteArrayLiteral(pValidMapEncoded), QCBOR_DECODE_MODE_NORMAL);
+   QCBORDecode_SetMemPool(&DC, SmallPool, 1); // Turn on copying.
+   if((nCBORError = QCBORDecode_GetNext(&DC, &Item1)))
+      return nCBORError;
+   if(Item1.uDataType != QCBOR_TYPE_MAP ||
+      Item1.val.uCount != 3)
+      return -1;
+   if(!(nCBORError = QCBORDecode_GetNext(&DC, &Item1))){
+      if(!(nCBORError = QCBORDecode_GetNext(&DC, &Item2))) {
+         if(!(nCBORError = QCBORDecode_GetNext(&DC, &Item3))) {
+            nCBORError = QCBORDecode_GetNext(&DC, &Item4);
+         }
+      }
+   }
+   if(nCBORError != QCBOR_ERR_STRING_ALLOC) {
+      return -5;
+   }
+
+   return 0;
+}
+
+
+int MemPoolTest(void)
 {
     QCBORDecodeContext DC;
     
diff --git a/test/qcbor_decode_tests.h b/test/qcbor_decode_tests.h
index 5168466..c2bcad5 100644
--- a/test/qcbor_decode_tests.h
+++ b/test/qcbor_decode_tests.h
@@ -160,12 +160,15 @@
 int NestedMapTestIndefLen(void);
 
 
-int indefinite_length_decode_test(void);
-int indefinite_length_decode_string_test(void);
+int IndefiniteLengthArrayMapTest(void);
 
-int indeflen_nest_test(void);
+int IndefiniteLengthStringTest(void);
 
-int mempool_test(void);
+int IndefiniteLengthNestTest(void);
+
+int AllocAllStringsTest(void);
+
+int MemPoolTest(void);
 
 
 
diff --git a/test/run_tests.c b/test/run_tests.c
index ad3f7b7..8a63d78 100644
--- a/test/run_tests.c
+++ b/test/run_tests.c
@@ -112,7 +112,10 @@
 
 
 test_entry s_tests[] = {
-    TEST_ENTRY(indeflen_nest_test),
+    TEST_ENTRY(AllocAllStringsTest),
+    TEST_ENTRY(IndefiniteLengthNestTest),
+    TEST_ENTRY(NestedMapTestIndefLen),
+    TEST_ENTRY(ParseSimpleTest),
     TEST_ENTRY(EncodeRawTest),
     TEST_ENTRY(FloatValuesTest1),
     TEST_ENTRY(RTICResultsTest),
@@ -127,21 +130,19 @@
     TEST_ENTRY(ParseTooDeepArrayTest),
     TEST_ENTRY(ComprehensiveInputTest),
     TEST_ENTRY(ParseMapTest),
-    TEST_ENTRY(NestedMapTestIndefLen),
-    TEST_ENTRY(indefinite_length_decode_test),
+    TEST_ENTRY(IndefiniteLengthArrayMapTest),
     TEST_ENTRY(basic_encode_test),
     TEST_ENTRY(NestedMapTest),
     TEST_ENTRY(BignumParseTest),
     TEST_ENTRY(OptTagParseTest),
     TEST_ENTRY(DateParseTest),
-    TEST_ENTRY(ParseSimpleTest),
     TEST_ENTRY(ShortBufferParseTest2),
     TEST_ENTRY(ShortBufferParseTest),
     TEST_ENTRY(ParseDeepArrayTest),
     TEST_ENTRY(SimpleArrayTest),
     TEST_ENTRY(IntegerValuesParseTest),
-    TEST_ENTRY(mempool_test),
-    TEST_ENTRY(indefinite_length_decode_string_test),
+    TEST_ENTRY(MemPoolTest),
+    TEST_ENTRY(IndefiniteLengthStringTest),
     TEST_ENTRY(half_precision_encode_basic),
     TEST_ENTRY(half_precision_decode_basic),
     TEST_ENTRY(half_precision_to_float_transitive_test),