[esnacc-dev] [RFC PATCH 1/4] cxx-examples: hook up the vdatest

Aaron Conole aconole at bytheb.org
Tue Aug 7 17:36:54 UTC 2018


Also, fix up the asn-int test.

Signed-off-by: Aaron Conole <aconole at redhat.com>
---
 cxx-examples/automake.mk     |  28 +++--
 cxx-examples/src/inttest.cpp | 147 +++++++++++---------------
 cxx-examples/src/main.cpp    | 116 ++++++++------------
 cxx-examples/src/vdatest.cpp | 246 +++++++++++++++++++++----------------------
 4 files changed, 248 insertions(+), 289 deletions(-)

diff --git a/cxx-examples/automake.mk b/cxx-examples/automake.mk
index 0997e95..051718f 100644
--- a/cxx-examples/automake.mk
+++ b/cxx-examples/automake.mk
@@ -15,11 +15,11 @@ cxx_examples_main_SOURCES = \
 	cxx-examples/src/rfc1155-smi.cpp \
 	cxx-examples/src/rfc1157-snmp.cpp \
 	cxx-examples/src/snmp.cpp \
-	cxx-examples/src/testbuf.cpp
+	cxx-examples/src/testbuf.cpp \
+	cxx-examples/src/vdatest_asn.cpp \
+	cxx-examples/src/vdatest_asn2.cpp \
+	cxx-examples/src/vdatest.cpp
 #	cxx-examples/src/testsetsorting.cpp 
-#	cxx-examples/src/vdatest_asn.asn1 \
-#	cxx-examples/src/vdatest_asn2.asn1 \
-#	cxx-examples/src/vdatest.cpp \
 #	cxx-examples/src/vda_threads.cpp \
 #	cxx-examples/src/vda_threads.h
 
@@ -32,6 +32,16 @@ cxx_examples_main_LDADD = \
 
 cxx_examples_main_LDFLAGS =
 
+$(top_builddir)/cxx-examples/src/vdatest_asn.cpp: \
+ $(top_srcdir)/cxx-examples/src/vdatest_asn.asn1 \
+ $(top_builddir)/compiler/esnacc
+	$(top_builddir)/compiler/esnacc -C -mo `dirname $@` $<
+
+$(top_builddir)/cxx-examples/src/vdatest_asn2.cpp: \
+ $(top_srcdir)/cxx-examples/src/vdatest_asn2.asn1 \
+ $(top_builddir)/compiler/esnacc
+	$(top_builddir)/compiler/esnacc -C -mo `dirname $@` $<
+
 $(top_builddir)/cxx-examples/src/rfc1155-smi.cpp: \
  $(top_srcdir)/cxx-examples/src/rfc1155-smi.asn1 \
  $(top_builddir)/compiler/esnacc
@@ -52,7 +62,9 @@ $(top_builddir)/cxx-examples/src/autotags.cpp: \
 EXTRA_DIST+= \
 	cxx-examples/src/autotags.asn1 \
 	cxx-examples/src/rfc1155-smi.asn1 \
-	cxx-examples/src/rfc1157-snmp.asn1
+	cxx-examples/src/rfc1157-snmp.asn1 \
+	cxx-examples/src/vdatest_asn.asn1 \
+	cxx-examples/src/vdatest_asn2.asn1
 
 CLEANFILES+= \
 	test.txt \
@@ -61,4 +73,8 @@ CLEANFILES+= \
 	cxx-examples/src/rfc1157-snmp.cpp \
 	cxx-examples/src/rfc1157-snmp.h \
 	cxx-examples/src/rfc1155-smi.cpp \
-	cxx-examples/src/rfc1155-smi.h
+	cxx-examples/src/rfc1155-smi.h \
+	cxx-examples/src/vdatest_asn.cpp \
+	cxx-examples/src/vdatest_asn.h \
+	cxx-examples/src/vdatest_asn2.cpp \
+	cxx-examples/src/vdatest_asn2.h
diff --git a/cxx-examples/src/inttest.cpp b/cxx-examples/src/inttest.cpp
index 4645c0e..2730a59 100644
--- a/cxx-examples/src/inttest.cpp
+++ b/cxx-examples/src/inttest.cpp
@@ -13,47 +13,47 @@ AsnIntTestTable gIntTestTable[]=
     // input                  // result
 { 
    { 
-     "1234", 
+     "1234",
      {0x02, 0x02, 0x04, 0xD2},
      true
    },
    { 
-     "-3628", 
+     "-3628",
      {0x02, 0x02, 0xf1, 0xD4},
-     true
+     false
    },
    { 
-     "2047483647", 
+     "2047483647",
      {0x02, 0x04, 0x7a,0x0a,0x1e,0xff},
      true
    },
    { 
-     "-2047483648", 
-     {0x02, 0x04, 0x85,0xf5,0xe1,0x00},
+     "-2047483648",
+     {0x02, 0x05, 0x0, 0x85,0xf5,0xe1,0x00},
      true
    },
 	{ 
-     "0xffffffff", 
+     "0xffffffff",
      {0x02, 0x01, 0xff},
      false
    },
    {
-     "0xffffffff", 
+     "0xffffffff",
      {0x02, 0x05, 0x00,0xff,0xff,0xff,0xff},
      true
    },
    { 
-     "0x0000ffff", 
+     "0x0000ffff",
      {0x02, 0x03,0x00,0xff,0xff},
      true
    },
    { 
-     "0x0000ffff", 
+     "0x0000ffff",
      {0x02, 0x03,0x00,0xff,0xff},
      true
    },
    { 
-     "0x000fffff", 
+     "0x000fffff",
      {0x02,0x03,0x0f,0xff,0xff},
      false
    },
@@ -63,28 +63,28 @@ AsnIntTestTable gIntTestTable[]=
      false
    },
    { 
-     "0x0080",      
+     "0x0080",
      {0x02, 0x02, 0x00, 0x80},
      true
    },
    { 
-     "0x0080",      
+     "0x0080",
      {0x02, 0x02, 0x00, 0x80},
      false
    },
    { 
-     "0xff81",      
+     "0xffffff81",
      {0x02, 0x01, 0x81},
      false
    },
    { 
-     "0xff81",      
+     "0xff81",
      {0x02,0x03,0x00,0xff,0x81},
      true
    },
    { 
-     "5247483647", //bad
-     {0x02, 0x04, 0x7f,0xff,0xff,0xff},
+     "5247483647",
+     {0x02, 0x04, 0x38, 0xc6, 0x3e, 0xff},
      true
    },
    { 
@@ -99,78 +99,49 @@ int convTests[gCT] = { 0, -1, -5, -256, 256, 16, -10000, 10000, 655335, -655335,
 
 void inttests(void)
 {
-   FUNC("intTests()");
-   try
-   {
-      std::cout << "** Conversion tests **\n";
-      for (int i=0; i < gCT; i++)
-      {
-         AsnInt n(convTests[i]);
-         int    x = n;
-         if (x == convTests[i])
-         {
-            std::cout.width(10);
-            std::cout << convTests[i] << " test SUCCESS!\n";
-         }
-         else
-         {
-            std::cout.width(10);
-            std::cout << convTests[i] << " FAILED!\n";
-            std::cout << "Input: " << convTests[i] << "\n";
-            std::cout << "Result: " << x << "\n";
-         }
-      }
-      std::cout << "** End Conversion tests **\n\n";
 
-      for (int testIndex = 0; gIntTestTable[testIndex].input != NULL; testIndex++)
-      {
-         if (gIntTestTable[testIndex].unsignedFlag)
-            std::cout << "AsnInt (unsigned) Test " << testIndex << ":";
-         else
-            std::cout << "AsnInt ( signed ) Test " << testIndex << ":";
-
-         AsnInt asnInt (gIntTestTable[testIndex].input,
-            gIntTestTable[testIndex].unsignedFlag);
-         AsnBuf expectedResult((const char *)gIntTestTable[testIndex].result,
-            DecTagLen(gIntTestTable[testIndex].result + 1) + 2);
-         AsnBuf result;
-      
-         try
-         {
-            asnInt.BEnc(result);
-         
-            std::cout << "INTEGER encoding matches expected result? ";
-            if (result == expectedResult)
-            {
-               std::cout << "YES!" << std::endl;
-            }
-            else
-            {
-               std::cout << "NO!" << std::endl;
-               std::cout << "Input: " << gIntTestTable[testIndex].input << std::endl;
-               std::cout << "Expected Result: ";
-               std::cout << std::ios_base::hex << expectedResult;
-               std::cout << std::endl;
-               std::cout << "Actual Result: ";
-               std::cout << std::ios_base::hex << result;
-               std::cout << std::endl;
-            }
-         }
-         catch (SnaccException &se)
-         {
-            std::cout << "AsnInt encode/decode test failed:" << std::endl;
-            std::cout << "Error: " << se.what() << std::endl;
-            std::cout << "Stack: \n";
-            se.getCallStack(std::cout);
-         }
-      }
+   std::cout << "** Conversion tests **\n";
+   for (int i=0; i < gCT; i++) {
+       AsnInt n(convTests[i]);
+       int    x = n;
+       if (x == convTests[i]) {
+           std::cout.width(10);
+           std::cout << convTests[i] << " test SUCCESS!\n";
+       } else {
+           std::cout.width(10);
+           std::cout << convTests[i] << " FAILED!\n";
+           std::cout << "Input: " << convTests[i] << "\n";
+           std::cout << "Result: " << x << "\n";
+       }
    }
-   catch(SnaccException &e)
-   {
-     std::cout << "Int test failed:\n";
-     std::cout << "ERROR STRING: ";
-     std::cout << e.what() << "\n";
-     std::cout.flush();
-     std::cout << "*** Int Test ***\n";
+   std::cout << "** End Conversion tests **\n\n";
+
+   for (int testIndex = 0; gIntTestTable[testIndex].input != NULL;
+        testIndex++) {
+       if (gIntTestTable[testIndex].unsignedFlag)
+           std::cout << "AsnInt (unsigned) Test " << testIndex << ":"
+                     << gIntTestTable[testIndex].input;
+       else
+           std::cout << "AsnInt ( signed ) Test " << testIndex << ":"
+                     << gIntTestTable[testIndex].input;
+
+       AsnInt asnInt (gIntTestTable[testIndex].input,
+                      gIntTestTable[testIndex].unsignedFlag);
+       AsnBuf expectedResult((const char *)gIntTestTable[testIndex].result,
+                             DecTagLen(gIntTestTable[testIndex].result + 1) + 2);
+       AsnBuf result;
+
+       asnInt.BEnc(result);
+
+       std::cout << "INTEGER encoding matches expected result? ";
+       if (result == expectedResult) {
+           std::cout << "YES!" << std::endl;
+       } else {
+           result.hexDump(std::cout);
+           char msg[512] = {0};
+           snprintf(msg, 512, "Failed INTEGER encode/decode test id: %d",
+                    testIndex);
+           throw SnaccException(__FILE__, __LINE__, __func__, strdup(msg));
+       }
    }
 }
diff --git a/cxx-examples/src/main.cpp b/cxx-examples/src/main.cpp
index 0fcc67e..c231f2d 100644
--- a/cxx-examples/src/main.cpp
+++ b/cxx-examples/src/main.cpp
@@ -7,7 +7,7 @@
 
 void newBufTest();
 int automaticTests();
-
+void vdatest_main();
 using namespace SNACC;
 
 void doubleDecodeTest(void)
@@ -16,43 +16,34 @@ void doubleDecodeTest(void)
     AsnBuf asnBuf(buf, 6);
     AsnLen len;
     AsnOcts octs;
-    try {
-        std::cout << "*** doubleDecodeTest ***\n";
-        if (octs.BDecPdu(asnBuf, len)) {
-            if (octs.c_ustr()[0] == '1') {
-                std::cout << "First OCTET STRING value: "
-                          << octs.c_ustr()[0] << std::endl;
-
-                if (octs.BDecPdu(asnBuf, len)) {
-                    if (octs.c_ustr()[0] == '2') {
-                        std::cout << "Second OCTET STRING value: " 
-                                  << octs.c_ustr()[0] << std::endl;
-                    } else {
-                        std::cout
-                            << "Unexpected result for second OCTET STRING: "
-                            << octs.c_ustr()[0] << std::endl;
-                    }
+
+    std::cout << "*** doubleDecodeTest ***\n";
+    if (octs.BDecPdu(asnBuf, len)) {
+        if (octs.c_ustr()[0] == '1') {
+            std::cout << "First OCTET STRING value: "
+                      << octs.c_ustr()[0] << std::endl;
+
+            if (octs.BDecPdu(asnBuf, len)) {
+                if (octs.c_ustr()[0] == '2') {
+                    std::cout << "Second OCTET STRING value: " 
+                              << octs.c_ustr()[0] << std::endl;
                 } else {
-                    std::cout << "Decode of second OCTET STRING failed!\n";
+                    throw SnaccException(__FILE__, __LINE__, __func__,
+                                         "Bad Value in decode");
                 }
             } else {
-                std::cout
-                    << "ERROR: Unexpected result for first OCTET STRING: "
-                    << octs.c_ustr()[0] << std::endl;
+                throw SnaccException(__FILE__, __LINE__, __func__,
+                                     "Bad decode operation");
             }
         } else {
-            std::cout << "Decode of double OCTET STRING encoded FAILED!\n";
+            throw SnaccException(__FILE__, __LINE__, __func__,
+                                 "Bad value for first OCTET.");
         }
-
-        std::cout << "*** doubleDecodeTest ***\n";
-
-  } catch(SnaccException &e) {
-        std::cout << "Double decode test failed:\n";
-        std::cout << "ERROR STRING: ";
-        std::cout << e.what() << "\n";
-        std::cout.flush();
-        std::cout << "*** doubleDecodeTest ***\n";
+    } else {
+        throw SnaccException(__FILE__, __LINE__, __func__,
+                             "Unable to decode DOUBLE properly.");
     }
+    std::cout << "*** doubleDecodeTest ***\n";
 }
 
 void octsTest(void)
@@ -65,32 +56,23 @@ void octsTest(void)
     AsnLen len = 22;
 
     AsnOcts octs;
-    try {
-        std::cout << "*** start of AsnOcts tests ***\n";
-        if (octs.BDecPdu(asnBuf, len)) {
-            if (memcmp(octs.c_ustr(), &buf[2], octs.Len()) == 0) {
-                for (i = 0; i < 20; i++) {
-                    std::cout << "OCTET STRING value: " << octs.c_ustr()[i] << std::endl;
-                }
-            } else {
-                for (i = 0; i < 20; i++) {
-                    std::cout
-                        << "ERROR: Unexpected result for OCTET STRING: "
-                        << octs.c_ustr()[i] << std::endl;
-                }
+    std::cout << "*** start of AsnOcts tests ***\n";
+    if (octs.BDecPdu(asnBuf, len)) {
+        if (memcmp(octs.c_ustr(), &buf[2], octs.Len()) == 0) {
+            for (i = 0; i < 20; i++) {
+                std::cout << "OCTET STRING value: " << octs.c_ustr()[i]
+                          << std::endl;
             }
         } else {
-            std::cout << "Decode of OCTET STRING encoded FAILED!\n";
+            for (i = 0; i < 20; i++) {
+                std::cout << "ERROR: Unexpected result for OCTET STRING: "
+                          << octs.c_ustr()[i] << std::endl;
+            }
+            throw SnaccException(__FILE__, __LINE__, __func__,
+                                 "Failed octsTest first");
         }
-
-        std::cout << "*** End of AsnOcts tests ***\n";
-    } catch(SnaccException &e) {
-        std::cout << "Octs test failed:\n";
-        std::cout << "ERROR STRING: ";
-        std::cout << e.what() << "\n";
-        std::cout.flush();
-        std::cout << "*** End of AsnOcts tests ***\n";
     }
+    std::cout << "*** End of AsnOcts tests ***\n";
 }
 
 void fillTest(void)
@@ -125,25 +107,14 @@ void fillTest(void)
     AsnLen len = sizeof(buf);
 
     AsnOcts octs;
-    try {
-        std::cout << "*** start of Recursive Fill tests ***\n";
-        octs.BDec(asnBuf, len);
-
-        std::cout << std::endl;
-
-        octs.PrintXML(std::cout);
 
-        std::cout << std::endl; 
-        std::cout << len;
-        std::cout << "*** End of Recursive Fill tests ***\n";
-
-    } catch(SnaccException &e) {
-        std::cout << "Octs test failed:\n";
-        std::cout << "ERROR STRING: ";
-        std::cout << e.what() << "\n";
-        std::cout.flush();
-        std::cout << "*** End of Recursive Fill tests ***\n";
-    }
+    std::cout << "*** start of Recursive Fill tests ***\n";
+    octs.BDec(asnBuf, len);
+    std::cout << std::endl;
+    octs.PrintXML(std::cout);
+    std::cout << std::endl; 
+    std::cout << len;
+    std::cout << "*** End of Recursive Fill tests ***\n";
 }
 
 int main(int argc, char *argv[])
@@ -175,7 +146,7 @@ int main(int argc, char *argv[])
        doubleDecodeTest();
        inttests();
        bittests();
-
+       vdatest_main();
        if (snmpPath != NULL) {
            run_snmp_tests(snmpPath);
        }
@@ -190,6 +161,7 @@ int main(int argc, char *argv[])
        std::cout << "What: " << e.what() << std::endl;
        std::cout << "Call Stack:\n";
        e.getCallStack(std::cout);
+       return 1;
    }
    return 0;
 }
diff --git a/cxx-examples/src/vdatest.cpp b/cxx-examples/src/vdatest.cpp
index 9ca74e9..396728f 100644
--- a/cxx-examples/src/vdatest.cpp
+++ b/cxx-examples/src/vdatest.cpp
@@ -32,50 +32,24 @@ using namespace VDATestModule2Namespace;
 
 //
 //
-int vdatest_main(int argc, char *argv[])
+void vdatest_main()
 {
-  
-   /*if (argc > 1) 
-   {
-       traverseDir(argv[1]);
-
-       exit(0);
-   }*/
    test_IndefiniteLengthEncoding();
 
-#ifdef BOUNDS_CHECKER_TEST_WITHOUT_THREADS
-   vdaTestPrintThreadLocks();
-   return(0);
-   vdaTestThreadLocks();
-   vdaTestThreads(55);  // AVOIDS problems with above; must be performed last.
-#endif //ifdef BOUNDS_CHECKER_TEST_WITHOUT_THREADS
-
-   try
-   {
-      ANY_DEFINED_BY_test();
-      test_AsnOid();
-      AsnIntTest();
-      ANY_DEFINED_BY_test_2();
-      XML_test();
-      test_timing();
-      test_big_buffer();
-      // THE FOLLOWING TEST also tests SET OF ordering.
-      // ALSO, it must be last since an error condition is trapped.
-      append_test();
-   }
-   catch ( SnaccException &e )
-   {
-      std::cout << "ERROR: " << e.what() << "\n";
-      std::cout << "Call stack:\n";
-      e.getCallStack(std::cout);
-      std::cout << "\n";
-   }
+   ANY_DEFINED_BY_test();
+   test_AsnOid();
+   AsnIntTest();
+   ANY_DEFINED_BY_test_2();
+   XML_test();
+   test_timing();
+   test_big_buffer();
 
+   // THE FOLLOWING TEST also tests SET OF ordering.
+   // ALSO, it must be last since an error condition is trapped.
+   append_test();
 
    std::cout << "####### END OF vdatest TESTS #########\n";
    std::cout.flush();
-  
-   return 1;
 }
 
 
@@ -102,10 +76,10 @@ void ANY_DEFINED_BY_test()
    A.i2 = 2;
    A.i3 = 3;
    A.i4 = 4;
-   
+
    // Encode TestDefinedByUsage into a buffer
    //
-   if (! A.BEnc(buf))
+   if (!A.BEnc(buf))
       throw SNACC_EXCEPT("Encode of TestDefinedByUsage failed!");
 
    // Decode buffer into a different TestDefinedByUsage to demonstrate the
@@ -116,8 +90,7 @@ void ANY_DEFINED_BY_test()
 
    // Check the OID to determine if this is the ANY you are looking for.
    //
-   if (A2.id == testOID2)
-   {                     
+   if (A2.id == testOID2) {                     
       // You must cast the ANY to the type you expect.  It's up to the
       // application to do the proper casting.
       //
@@ -125,9 +98,7 @@ void ANY_DEFINED_BY_test()
 
       std::cout << "ANY_DEFINED_BY_test: Good id, == testOID2." 
          << pPrtblStr->c_str() << "\n";
-   }
-   else
-   {
+   } else {
       std::cout << "ANY_DEFINED_BY_test: ***** Bad id, EXPECTED testOID2.\n";
    }
 
@@ -135,7 +106,7 @@ void ANY_DEFINED_BY_test()
 
    A.id = testOid3_UNKNOWN;
    //A.anyDefBy.value = new AsnAnyBuffer((char *)data, len);
-   
+
    buf.ResetMode();
    if (! A.BEnc(buf))
       throw SNACC_EXCEPT("Encode of TestDefinedByUsage failed!");
@@ -438,18 +409,13 @@ int append_test()
       testNullBitStringBlob.hexDump(std::cout);
       std::cout << "\n";
       std::cout.flush();
+      throw SNACC_EXCEPT("Null bit string 1");
    }
 
    if (! snaccNullBitString3.BEnc(buf) )
       throw SNACC_EXCEPT("Encoding of NULL BIT STRING failed!");
 
-   if (buf == testNullBitStringBlob)
-   {
-      std::cout << "NULL BIT STRING 2 TEST PASSED!\n";
-      std::cout.flush();
-   }
-   else
-   {
+   if (buf == testNullBitStringBlob) {
       std::cout << "NULL BIT STRING TEST 2 FAILED!\n";
       std::cout << "ENCODED VALUE IS:\n";
       buf.hexDump(std::cout);
@@ -457,6 +423,10 @@ int append_test()
       testNullBitStringBlob.hexDump(std::cout);
       std::cout << "\n";
       std::cout.flush();
+      throw SNACC_EXCEPT("Null bit string 2");
+   } else {
+      std::cout << "NULL BIT STRING 2 TEST PASSED!\n";
+      std::cout.flush();
    }
 
    // Now let's test a bits string that has more than one octet that is null.
@@ -654,7 +624,11 @@ int append_test()
    std::cout << "#########     STACK                                        ####\n";
    VDATestSequence aa;
    AsnBuf cBuf("aaa", 3);
-   aa.BDec(cBuf, bytesDecoded); // expected to fail
+   try {
+       aa.BDec(cBuf, bytesDecoded); // expected to fail
+   } catch (SnaccException &e) {
+       std::cout << "Correct" << std::endl;
+   }
 
    return 1;
 } /* append_test */
@@ -1146,6 +1120,7 @@ double test_timingDoTest(long BYTE_COUNT, long iCount, int new_flag, long lTestT
 // This function demonstrates/tests the new AsnInt BigInteger logic.
 void AsnIntTest()
 {
+    FUNC("AsnIntTest");
     AsnInt A,B,H;
     int /*AsnIntType*/ CInt;
     AsnBuf b;
@@ -1156,19 +1131,23 @@ void AsnIntTest()
 
     //######### convert string into Hex ##########################
     H = AsnInt("0x20FF");
-    if (H == 767)
-        std::cout << "\nAsnIntTest:  SUCCESSFUL string to hex conversion, " << H 
+    if (H == 8447)
+        std::cout << "\nAsnIntTest:  SUCCESSFUL string to hex conversion, " << std::hex << H << std::dec
              << ".\n";
-    else
-        std::cout << "AsnIntTest:  UNSUCCESSFUL string to hex conversion, " << H 
+    else {
+        std::cout << "AsnIntTest[0x20ff]:  UNSUCCESSFUL string to hex conversion, " << std::hex << H << std::dec
              << ".\n";
+        throw SNACC_EXCEPT("IntConvTst");
+    }
     H = AsnInt("0xF0");
-    if (H == 15)
-        std::cout << "AsnIntTest:  SUCCESSFUL string to hex conversion, " << H 
+    if (H == 240)
+        std::cout << "AsnIntTest:  SUCCESSFUL string to hex conversion, " << std::hex << H << std::dec
              << ".\n";
-    else
-        std::cout << "AsnIntTest:  UNSUCCESSFUL string to hex conversion, " << H 
+    else {
+        std::cout << "AsnIntTest[0xf0]:  UNSUCCESSFUL string to hex conversion, " << std::hex << H << std::dec
              << ".\n";
+        throw SNACC_EXCEPT("IntConvTst");
+    }
 
     //######### check small integer.##############################
     A = 20;
@@ -1180,9 +1159,11 @@ void AsnIntTest()
         if (B == 20)
             std::cout << "AsnIntTest:  SUCCESSFUL integer encode/decode, " << B 
                 << ".\n";
-        else
-            std::cout << "AsnIntTest:  UNSUCCESSFUL integer encode/decode, " << B 
+        else {
+            std::cout << "AsnIntTest[bytes 20]:  UNSUCCESSFUL integer encode/decode, " << B 
                 << ".\n";
+            throw SNACC_EXCEPT("IntConvTst");
+        }
     }
 
 
@@ -1209,43 +1190,55 @@ void AsnIntTest()
                 pBuf[2], pBuf[3], pBuf[4], pBuf[5], pBuf[6]);
             std::cout << buf;
         }
-        else
+        else {
             std::cout << "AsnIntTest:  UNSUCCESSFUL 7 byte integer encode/decode, "
                 << ".\n";
+            throw SNACC_EXCEPT("IntConvTst");
+        }
     }
-    else
+    else {
        std::cout << "AsnIntTest:  UNSUCCESSFUL length 7 byte integer encode/decode, bytesDecoded="
                 << bytesDecoded << ".\n";
+       throw SNACC_EXCEPT("IntConvTst");
+    }
 
     //######### check assignment of multi-byte integer to a small int variable.
     //
+    bool throwIt = false;
       try
       {
        CInt = B;        // Attempt to assign 7 byte integer to 4 byte variable.
        std::cout << "AsnIntTest:  UNSUCCESSFUL ERROR on large integer assign to too small long."
                 << ".\n";
+       throwIt = true;
       }
       catch (...)
       {
            std::cout << "AsnIntTest:  SUCCESSFUL ERROR (catch) on large integer assign to too small long."
                 << ".\n";
       }
+      if (throwIt)
+          throw SNACC_EXCEPT("7 byte test");
 
     //######### check negative small integer.##############################
     //
     bytesDecoded = 0;
-    A = -20;
+    A = AsnInt(-20);
+    b = AsnBuf();
     A.BEnc(b);
 
     B.BDec(b, bytesDecoded);
-    if (bytesDecoded)
-    {
-        if (B == -20)
-            std::cout << "AsnIntTest:  SUCCESSFUL negative integer encode/decode, " << B 
-                << ".\n";
-        else
-            std::cout << "AsnIntTest:  UNSUCCESSFUL negative integer encode/decode, " << B 
-                << ".\n";
+    if (bytesDecoded) {
+        if (B == -20) {
+            std::cout
+                << "AsnIntTest:  SUCCESSFUL negative integer encode/decode, "
+                << B  << ".\n";
+        } else {
+            std::cout
+                << "AsnIntTest:  UNSUCCESSFUL negative integer encode/decode, "
+                << B << ".\n";
+            throw SNACC_EXCEPT("IntConvTst");
+        }
     }
 
     //######### check sign-extended negative large integer, with known size.##
@@ -1258,49 +1251,51 @@ void AsnIntTest()
     TmpData2[2] = (char)0xff;
     TmpData2[3] = (char)0xff;
     bytesDecoded = 0;
-    A.Set((unsigned char *)TmpData2, 128);
+    A.Set((unsigned char *)TmpData2, 128, false);
+    b = AsnBuf();
     A.BEnc(b);      // EXPECT 4 less bytes encoded due to sign extension.
 
     bytesDecoded = 0;
     B.BDec(b, bytesDecoded);
-    if (B.length() == 124/*for Data*/)
-    {
+    b.hexDump(std::cout);
+    if (B.length() == 124) {
         bFlag = true;          // Start out assuming all data is good.
         const unsigned char *pBuf=B.c_str();
-        for (i=0; i < 124; i++)
-            if (pBuf[i] != (unsigned char)TmpData2[i])
-                bFlag = false;
-        if (bFlag)
-        {
-            std::cout << "AsnIntTest:  SUCCESSFUL 124 byte negative integer encode/decode, "
-                << ".\n";
-            char buf[200];
-            sprintf(buf, "%2.2xx%2.2xx%2.2xx%2.2xx%2.2xx%2.2xx%2.2xx.\n", pBuf[0], pBuf[2], 
-                pBuf[2], pBuf[3], pBuf[4], pBuf[5], pBuf[6]);
-            std::cout << buf;
-            unsigned char *pBuf3 = NULL;        // RESET for next operation.
-            size_t length;
-            B.getPadded(pBuf3, length, size_t(128));
-            bFlag = true;          // Start out assuming all data is good.
-            for (int i=0; i < 4; i++)
-                if (pBuf3[i] != (char)0xff)
-                    bFlag = false;
-            if (!bFlag || length != 128)
-                std::cout << "AsnIntTest:  UNSUCCESSFUL 128 byte negative integer GetSignedBitExtendedData(...).\n";
-            else
-                std::cout << "AsnIntTest:  SUCCESSFUL 128 byte negative integer GetSignedBitExtendedData(...).\n";
-            if (pBuf3)
-               free(pBuf3);
+        for (i=0; i < 124; i++) {
+            if (pBuf[i] != (unsigned char)TmpData2[i+4]) {
+                std::cout
+                    << "AsnIntTest:  UNSUCCESSFUL 124 byte negative integer "
+                    " encode/decode, i = " << i << "== ["
+                    << std::hex << (unsigned int)pBuf[i] << ":"
+                    << (unsigned int)TmpData2[i] << std::dec
+                    << "]"<< ".\n";
+                throw SNACC_EXCEPT("IntConvTst");
+            }
         }
-        else
-            std::cout << "AsnIntTest:  UNSUCCESSFUL 124 byte negative integer encode/decode, "
-                << ".\n";
-    }
-    else
+
+        unsigned char *pBuf3 = NULL;        // RESET for next operation.
+        size_t length;
+        B.getPadded(pBuf3, length, size_t(128));
+        for (int i = 0; i < 4; i++) {
+            if (pBuf3[i] != (char)0x0 || length != 128) {
+                std::cout << "AsnIntTest:  UNSUCCESSFUL 128 byte negative integer.\n"
+                          << "GetSignedBitExtendedData(len="
+                          << length << ", pbuff[" << i << "]="
+                          << std::hex << (int)pBuf3[i] << std::dec
+                          << ").\n";
+                throw SNACC_EXCEPT("IntConvTst");
+            }
+        }
+
+        std::cout << "AsnIntTest:  SUCCESSFUL 128 byte negative integer GetSignedBitExtendedData(...).\n";
+        if (pBuf3)
+            free(pBuf3);
+    } else {
        std::cout << "AsnIntTest:  UNSUCCESSFUL length 124 byte integer encode/decode, bytesDecoded="
-                << bytesDecoded << ".\n";
+                 << bytesDecoded << "vs. len == " << B.length() << ".\n";
+       throw SNACC_EXCEPT("IntConvTst");
+    }
 
-   
     //######### check sign-extended positive large integer, with known size.##
     //
     for (i=0; i < 128; i++)
@@ -1311,27 +1306,26 @@ void AsnIntTest()
     TmpData2[3] = (char)0x00;
     bytesDecoded = 0;
     A.Set((const unsigned char *)TmpData2, 128);
+    b = AsnBuf();
     A.BEnc(b);      // EXPECT 4 less bytes encoded due to sign extension.
 
     bytesDecoded = 0;
     B.BDec(b, bytesDecoded);
-    if (B.length() == 124/*for Data*/)
-    {
-        bFlag = true;          // Start out assuming all data is good.
-        {
+    if (B.length() == 124/*for Data*/) {
         const unsigned char *pBuf= B.c_str();
+        bFlag = true;          // Start out assuming all data is good.
         for (i=0; i < 124; i++)
-            if (pBuf[i] != (unsigned char)TmpData2[i])
+            if (pBuf[i] != (unsigned char)TmpData2[i+4])
                 bFlag = false;
-        }
-        if (bFlag)
-        {
+
+        if (bFlag) {
             unsigned char *pBuf;
             std::cout << "AsnIntTest:  SUCCESSFUL 124 byte integer encode/decode, "
                 << ".\n";
             char buf[200];
-            sprintf(buf, "%2.2xx%2.2xx%2.2xx%2.2xx%2.2xx%2.2xx%2.2xx.\n", pBuf[0], pBuf[2], 
-                pBuf[2], pBuf[3], pBuf[4], pBuf[5], pBuf[6]);
+            sprintf(buf, "%2.2xx%2.2xx%2.2xx%2.2xx%2.2xx%2.2xx%2.2xx.\n",
+                    pBuf[0], pBuf[2], pBuf[2], pBuf[3], pBuf[4], pBuf[5],
+                    pBuf[6]);
             std::cout << buf;
             pBuf = NULL;        // RESET for next operation.
             size_t length;
@@ -1340,16 +1334,22 @@ void AsnIntTest()
             for (int i=0; i < 4; i++)
                 if (pBuf[i] != (char)0x00)
                     bFlag = false;
-            if (!bFlag || length != 128)
+            if (!bFlag || length != 128) {
                 std::cout << "AsnIntTest:  UNSUCCESSFUL 128 byte positive integer GetSignedBitExtendedData(...).\n";
+                throw SNACC_EXCEPT("IntConvTst");
+            }
         }
-        else
+        else {
             std::cout << "AsnIntTest:  UNSUCCESSFUL 124 byte positive integer encode/decode, "
                 << ".\n";
+            throw SNACC_EXCEPT("IntConvTst");
+        }
     }
-    else
+    else {
        std::cout << "AsnIntTest:  UNSUCCESSFUL length 124 byte positive integer encode/decode, bytesDecoded="
                 << bytesDecoded << ".\n";
+       throw SNACC_EXCEPT("IntConvTst");
+    }
 
    std::cout.flush();
 }
@@ -1468,8 +1468,8 @@ long vdaTestPrintThreadLocks()
    testSequence.testAllPrimatives.boolTestName = true;
    testSequence.testAllPrimatives.oidName = new AsnOid;
    *testSequence.testAllPrimatives.oidName = testOID;
-   char *pData="TES";//(char)0xa5, (char)0xa5, (char)0xa5;
-   testSequence.testAllPrimatives.bitStringName.Set((const unsigned char*)pData, 24);
+   const char *pData="TES";//(char)0xa5, (char)0xa5, (char)0xa5;
+   testSequence.testAllPrimatives.bitStringName.Set((const unsigned char *)pData, 24);
 
    testSequence.testAllPrimatives.integerName = 55;
    testSequence.testAllPrimatives.enumTestName = TestAllAsnPrimativeTypesEnum::aA;
-- 
2.14.3



More information about the dev mailing list