Finish the testcase for extensions
authorPetteri Aimonen <jpa@git.mail.kapsi.fi>
Mon, 22 Jul 2013 16:00:04 +0000 (19:00 +0300)
committerPetteri Aimonen <jpa@git.mail.kapsi.fi>
Mon, 22 Jul 2013 16:00:04 +0000 (19:00 +0300)
tests/extensions.options [new file with mode: 0644]
tests/extensions.proto
tests/test_decode_extensions.c
tests/test_encode_extensions.c

diff --git a/tests/extensions.options b/tests/extensions.options
new file mode 100644 (file)
index 0000000..a5cd61d
--- /dev/null
@@ -0,0 +1 @@
+* max_size:16
index 12c7c9a..cbffdce 100644 (file)
@@ -3,3 +3,13 @@ import 'alltypes.proto';
 extend AllTypes {
     optional int32 AllTypes_extensionfield1 = 255;
 }
 extend AllTypes {
     optional int32 AllTypes_extensionfield1 = 255;
 }
+
+message ExtensionMessage {
+    extend AllTypes {
+        optional ExtensionMessage AllTypes_extensionfield2 = 254;
+    }
+    
+    required string test1 = 1;
+    required int32 test2 = 2;
+}
+
index b384c33..ef6a022 100644 (file)
@@ -7,6 +7,11 @@
 #include "alltypes.pb.h"
 #include "extensions.pb.h"
 
 #include "alltypes.pb.h"
 #include "extensions.pb.h"
 
+#define TEST(x) if (!(x)) { \
+    printf("Test " #x " failed.\n"); \
+    return 2; \
+    }
+
 int main(int argc, char **argv)
 {
     uint8_t buffer[1024];
 int main(int argc, char **argv)
 {
     uint8_t buffer[1024];
@@ -14,9 +19,14 @@ int main(int argc, char **argv)
     pb_istream_t stream = pb_istream_from_buffer(buffer, count);
     
     AllTypes alltypes = {};
     pb_istream_t stream = pb_istream_from_buffer(buffer, count);
     
     AllTypes alltypes = {};
+    
     int32_t extensionfield1;
     pb_extension_t ext1 = {&AllTypes_extensionfield1, &extensionfield1, NULL};
     alltypes.extensions = &ext1;
     int32_t extensionfield1;
     pb_extension_t ext1 = {&AllTypes_extensionfield1, &extensionfield1, NULL};
     alltypes.extensions = &ext1;
+        
+    ExtensionMessage extensionfield2 = {};
+    pb_extension_t ext2 = {&ExtensionMessage_AllTypes_extensionfield2, &extensionfield2, NULL};
+    ext1.next = &ext2;
     
     if (!pb_decode(&stream, AllTypes_fields, &alltypes))
     {
     
     if (!pb_decode(&stream, AllTypes_fields, &alltypes))
     {
@@ -24,11 +34,9 @@ int main(int argc, char **argv)
         return 1;
     }
 
         return 1;
     }
 
-    if (extensionfield1 != 12345)
-    {
-        printf("Wrong value for extension field: %d\n", extensionfield1);
-        return 2;
-    }    
+    TEST(extensionfield1 == 12345)
+    TEST(strcmp(extensionfield2.test1, "test") == 0)
+    TEST(extensionfield2.test2 == 54321)
     
     return 0;
 }
     
     return 0;
 }
index c889dec..8857f14 100644 (file)
 int main(int argc, char **argv)
 {
     AllTypes alltypes = {};
 int main(int argc, char **argv)
 {
     AllTypes alltypes = {};
+
     int32_t extensionfield1 = 12345;
     pb_extension_t ext1 = {&AllTypes_extensionfield1, &extensionfield1, NULL};
     int32_t extensionfield1 = 12345;
     pb_extension_t ext1 = {&AllTypes_extensionfield1, &extensionfield1, NULL};
-    
     alltypes.extensions = &ext1;
     alltypes.extensions = &ext1;
+
+    ExtensionMessage extensionfield2 = {"test", 54321};
+    pb_extension_t ext2 = {&ExtensionMessage_AllTypes_extensionfield2, &extensionfield2, NULL};
+    ext1.next = &ext2;
     
     uint8_t buffer[1024];
     pb_ostream_t stream = pb_ostream_from_buffer(buffer, sizeof(buffer));
     
     uint8_t buffer[1024];
     pb_ostream_t stream = pb_ostream_from_buffer(buffer, sizeof(buffer));