Fix bugs in proto3 mode encoding of submessages (#256)
[apps/agl-service-can-low-level.git] / tests / intsizes / intsizes_unittests.c
index 29cc7ab..79ef036 100644 (file)
         TEST(pb_decode(&s, IntSizes_fields, &msg2) == expected_result);     \
         if (expected_result)                                                \
         {                                                                   \
-            TEST(msg2.req_int8   == int8);                                  \
-            TEST(msg2.req_uint8  == uint8);                                 \
-            TEST(msg2.req_sint8  == sint8);                                 \
-            TEST(msg2.req_int16  == int16);                                 \
-            TEST(msg2.req_uint16 == uint16);                                \
-            TEST(msg2.req_sint16 == sint16);                                \
-            TEST(msg2.req_int32  == int32);                                 \
-            TEST(msg2.req_uint32 == uint32);                                \
-            TEST(msg2.req_sint32 == sint32);                                \
-            TEST(msg2.req_int64  == int64);                                 \
-            TEST(msg2.req_uint64 == uint64);                                \
-            TEST(msg2.req_sint64 == sint64);                                \
+            TEST( (int64_t)msg2.req_int8   == int8);                        \
+            TEST((uint64_t)msg2.req_uint8  == uint8);                       \
+            TEST( (int64_t)msg2.req_sint8  == sint8);                       \
+            TEST( (int64_t)msg2.req_int16  == int16);                       \
+            TEST((uint64_t)msg2.req_uint16 == uint16);                      \
+            TEST( (int64_t)msg2.req_sint16 == sint16);                      \
+            TEST( (int64_t)msg2.req_int32  == int32);                       \
+            TEST((uint64_t)msg2.req_uint32 == uint32);                      \
+            TEST( (int64_t)msg2.req_sint32 == sint32);                      \
+            TEST( (int64_t)msg2.req_int64  == int64);                       \
+            TEST((uint64_t)msg2.req_uint64 == uint64);                      \
+            TEST( (int64_t)msg2.req_sint64 == sint64);                      \
         }                                                                   \
     }                                                                       \
                                                                             \
@@ -101,6 +101,20 @@ int main()
                    INT32_MIN, 0, INT32_MIN,
                    INT64_MIN, 0, INT64_MIN, true);
 
+    COMMENT("Test overflow detection");
+    TEST_ROUNDTRIP(-129,      0,   -128,
+                   -32768,    0, -32768,
+                   INT32_MIN, 0, INT32_MIN,
+                   INT64_MIN, 0, INT64_MIN, false);
+    TEST_ROUNDTRIP(127,     256,    127,
+                   32767, 65535,  32767,
+                   INT32_MAX, UINT32_MAX, INT32_MAX,
+                   INT64_MAX, UINT64_MAX, INT64_MAX, false);
+    TEST_ROUNDTRIP(-128,      0,   -128,
+                   -32768,    0, -32769,
+                   INT32_MIN, 0, INT32_MIN,
+                   INT64_MIN, 0, INT64_MIN, false);
+
     if (status != 0)
         fprintf(stdout, "\n\nSome tests FAILED!\n");