added general float test; some bug fixes
diff --git a/test/float_tests.c b/test/float_tests.c
index dd6b755..d43039d 100644
--- a/test/float_tests.c
+++ b/test/float_tests.c
@@ -450,6 +450,90 @@
}
+/*
+[0.0, 3.14, 0.0, NaN, Infinity, 0.0, 3.140000104904175, 0.0, NaN, Infinity,
+ {100: 0.0, 101: 3.1415926, "euler": 2.718281828459045, 105: 0.0,
+ 102: 0.0, 103: 3.141592502593994, "euler2": 2.7182817459106445, 106: 0.0}]
+ */
+static const uint8_t spExpectedFloats[] = {
+ 0x8B,
+ 0xF9, 0x00, 0x00,
+ 0xFB, 0x40, 0x09, 0x1E, 0xB8, 0x51, 0xEB, 0x85, 0x1F,
+ 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFB, 0x7F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFB, 0x7F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xF9, 0x00, 0x00,
+ 0xFA, 0x40, 0x48, 0xF5, 0xC3,
+ 0xFA, 0x00, 0x00, 0x00, 0x00,
+ 0xFA, 0x7F, 0xC0, 0x00, 0x00,
+ 0xFA, 0x7F, 0x80, 0x00, 0x00,
+ 0xA8,
+ 0x18, 0x64,
+ 0xF9, 0x00, 0x00,
+ 0x18, 0x65,
+ 0xFB, 0x40, 0x09, 0x21, 0xFB, 0x4D, 0x12, 0xD8, 0x4A,
+ 0x65, 0x65, 0x75, 0x6C, 0x65, 0x72,
+ 0xFB, 0x40, 0x05, 0xBF, 0x0A, 0x8B, 0x14, 0x57, 0x69,
+ 0x18, 0x69,
+ 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x18, 0x66,
+ 0xF9, 0x00, 0x00,
+ 0x18, 0x67,
+ 0xFA, 0x40, 0x49, 0x0F, 0xDA,
+ 0x66, 0x65, 0x75, 0x6C, 0x65, 0x72, 0x32,
+ 0xFA, 0x40, 0x2D, 0xF8, 0x54,
+ 0x18, 0x6A,
+ 0xFA, 0x00, 0x00, 0x00, 0x00};
+
+int32_t GeneralFloatEncodeTests()
+{
+ UsefulBuf_MAKE_STACK_UB(OutBuffer, sizeof(spExpectedFloats));
+
+ QCBOREncodeContext EC;
+ QCBOREncode_Init(&EC, OutBuffer);
+ QCBOREncode_OpenArray(&EC);
+
+ QCBOREncode_AddDouble(&EC, 0.0);
+ QCBOREncode_AddDouble(&EC, 3.14);
+ QCBOREncode_AddDoubleNoPreferred(&EC, 0.0);
+ QCBOREncode_AddDoubleNoPreferred(&EC, NAN);
+ QCBOREncode_AddDoubleNoPreferred(&EC, INFINITY);
+
+ QCBOREncode_AddFloat(&EC, 0.0);
+ QCBOREncode_AddFloat(&EC, 3.14f);
+ QCBOREncode_AddFloatNoPreferred(&EC, 0.0f);
+ QCBOREncode_AddFloatNoPreferred(&EC, NAN);
+ QCBOREncode_AddFloatNoPreferred(&EC, INFINITY);
+
+ QCBOREncode_OpenMap(&EC);
+
+ QCBOREncode_AddDoubleToMapN(&EC, 100, 0.0);
+ QCBOREncode_AddDoubleToMapN(&EC, 101, 3.1415926);
+ QCBOREncode_AddDoubleToMap(&EC, "euler", 2.71828182845904523536);
+ QCBOREncode_AddDoubleNoPreferredToMapN(&EC, 105, 0.0);
+
+ QCBOREncode_AddFloatToMapN(&EC, 102, 0.0f);
+ QCBOREncode_AddFloatToMapN(&EC, 103, 3.1415926f);
+ QCBOREncode_AddFloatToMap(&EC, "euler2", 2.71828182845904523536f);
+ QCBOREncode_AddFloatNoPreferredToMapN(&EC, 106, 0.0f);
+
+ QCBOREncode_CloseMap(&EC);
+ QCBOREncode_CloseArray(&EC);
+
+ UsefulBufC Encoded;
+ QCBORError uErr = QCBOREncode_Finish(&EC, &Encoded);
+ if(uErr) {
+ return -1;
+ }
+
+ if(UsefulBuf_Compare(Encoded, UsefulBuf_FROM_BYTE_ARRAY_LITERAL(spExpectedFloats))) {
+ return -3;
+ }
+
+ return 0;
+}
+
+
#ifdef NAN_EXPERIMENT
/*