|
49 | 49 | #define STRINGIFY(x) _STRINGIFY(x) |
50 | 50 | #define _STRINGIFY(x) #x |
51 | 51 |
|
| 52 | +#define EXPECT_FALSE(arg) if (arg) { \ |
| 53 | + fputs(STRINGIFY(arg) " is not false\n", stderr); \ |
| 54 | + return 1; \ |
| 55 | +} |
| 56 | +#define EXPECT_TRUE(arg) if (!(arg)) { \ |
| 57 | + fputs(STRINGIFY(arg) " is not true\n", stderr); \ |
| 58 | + return 1; \ |
| 59 | +} |
52 | 60 | #define EXPECT_EQ(arg1, arg2) if ((arg1) != (arg2)) { \ |
53 | 61 | fputs(STRINGIFY(arg1) " != " STRINGIFY(arg2) "\n", stderr); \ |
54 | 62 | return 1; \ |
@@ -189,6 +197,19 @@ int test_basic_types(void) |
189 | 197 | basic->uint64_value = UINT64_MAX; |
190 | 198 | EXPECT_EQ(UINT64_MAX, basic->uint64_value); |
191 | 199 |
|
| 200 | + EXPECT_FALSE(rosidl_generator_c__msg__BasicTypes__are_equal(NULL, NULL)); |
| 201 | + EXPECT_FALSE(rosidl_generator_c__msg__BasicTypes__are_equal(basic, NULL)); |
| 202 | + EXPECT_FALSE(rosidl_generator_c__msg__BasicTypes__are_equal(NULL, basic)); |
| 203 | + EXPECT_TRUE(rosidl_generator_c__msg__BasicTypes__are_equal(basic, basic)); |
| 204 | + |
| 205 | + rosidl_generator_c__msg__BasicTypes * basic_copy = NULL; |
| 206 | + basic_copy = rosidl_generator_c__msg__BasicTypes__create(); |
| 207 | + EXPECT_NE(basic_copy, NULL); |
| 208 | + EXPECT_FALSE(rosidl_generator_c__msg__BasicTypes__are_equal(basic, basic_copy)); |
| 209 | + EXPECT_TRUE(rosidl_generator_c__msg__BasicTypes__copy(basic, basic_copy)); |
| 210 | + EXPECT_TRUE(rosidl_generator_c__msg__BasicTypes__are_equal(basic, basic_copy)); |
| 211 | + rosidl_generator_c__msg__BasicTypes__destroy(basic_copy); |
| 212 | + |
192 | 213 | rosidl_generator_c__msg__BasicTypes__destroy(basic); |
193 | 214 | return 0; |
194 | 215 | } |
@@ -232,6 +253,20 @@ int test_defaults() |
232 | 253 | EXPECT_EQ(-40000000, def->int64_value); |
233 | 254 | EXPECT_EQ(50000000, def->uint64_value); |
234 | 255 |
|
| 256 | + EXPECT_FALSE(rosidl_generator_c__msg__Defaults__are_equal(NULL, NULL)); |
| 257 | + EXPECT_FALSE(rosidl_generator_c__msg__Defaults__are_equal(def, NULL)); |
| 258 | + EXPECT_FALSE(rosidl_generator_c__msg__Defaults__are_equal(NULL, def)); |
| 259 | + EXPECT_TRUE(rosidl_generator_c__msg__Defaults__are_equal(def, def)); |
| 260 | + |
| 261 | + rosidl_generator_c__msg__Defaults * def_copy = NULL; |
| 262 | + def_copy = rosidl_generator_c__msg__Defaults__create(); |
| 263 | + EXPECT_NE(def_copy, NULL); |
| 264 | + def->bool_value = false; // mutate message to force a difference |
| 265 | + EXPECT_FALSE(rosidl_generator_c__msg__Defaults__are_equal(def, def_copy)); |
| 266 | + EXPECT_TRUE(rosidl_generator_c__msg__Defaults__copy(def, def_copy)); |
| 267 | + EXPECT_TRUE(rosidl_generator_c__msg__Defaults__are_equal(def, def_copy)); |
| 268 | + rosidl_generator_c__msg__Defaults__destroy(def_copy); |
| 269 | + |
235 | 270 | rosidl_generator_c__msg__Defaults__destroy(def); |
236 | 271 | return 0; |
237 | 272 | } |
@@ -447,6 +482,19 @@ int test_bounded_sequences() |
447 | 482 | EXPECT_EQ(0, strcmp(seq->string_values_default.data[1].data, "max value")); |
448 | 483 | EXPECT_EQ(0, strcmp(seq->string_values_default.data[2].data, "min value")); |
449 | 484 |
|
| 485 | + EXPECT_FALSE(rosidl_generator_c__msg__BoundedSequences__are_equal(NULL, NULL)); |
| 486 | + EXPECT_FALSE(rosidl_generator_c__msg__BoundedSequences__are_equal(seq, NULL)); |
| 487 | + EXPECT_FALSE(rosidl_generator_c__msg__BoundedSequences__are_equal(NULL, seq)); |
| 488 | + EXPECT_TRUE(rosidl_generator_c__msg__BoundedSequences__are_equal(seq, seq)); |
| 489 | + |
| 490 | + rosidl_generator_c__msg__BoundedSequences * seq_copy = NULL; |
| 491 | + seq_copy = rosidl_generator_c__msg__BoundedSequences__create(); |
| 492 | + EXPECT_NE(seq_copy, NULL); |
| 493 | + EXPECT_FALSE(rosidl_generator_c__msg__BoundedSequences__are_equal(seq, seq_copy)); |
| 494 | + EXPECT_TRUE(rosidl_generator_c__msg__BoundedSequences__copy(seq, seq_copy)); |
| 495 | + EXPECT_TRUE(rosidl_generator_c__msg__BoundedSequences__are_equal(seq, seq_copy)); |
| 496 | + rosidl_generator_c__msg__BoundedSequences__destroy(seq_copy); |
| 497 | + |
450 | 498 | rosidl_generator_c__msg__BoundedSequences__destroy(seq); |
451 | 499 | return 0; |
452 | 500 | } |
@@ -663,6 +711,19 @@ int test_unbounded_sequences() |
663 | 711 | EXPECT_EQ(0, strcmp(seq->string_values_default.data[1].data, "max value")); |
664 | 712 | EXPECT_EQ(0, strcmp(seq->string_values_default.data[2].data, "min value")); |
665 | 713 |
|
| 714 | + EXPECT_FALSE(rosidl_generator_c__msg__UnboundedSequences__are_equal(NULL, NULL)); |
| 715 | + EXPECT_FALSE(rosidl_generator_c__msg__UnboundedSequences__are_equal(seq, NULL)); |
| 716 | + EXPECT_FALSE(rosidl_generator_c__msg__UnboundedSequences__are_equal(NULL, seq)); |
| 717 | + EXPECT_TRUE(rosidl_generator_c__msg__UnboundedSequences__are_equal(seq, seq)); |
| 718 | + |
| 719 | + rosidl_generator_c__msg__UnboundedSequences * seq_copy = NULL; |
| 720 | + seq_copy = rosidl_generator_c__msg__UnboundedSequences__create(); |
| 721 | + EXPECT_NE(seq_copy, NULL); |
| 722 | + EXPECT_FALSE(rosidl_generator_c__msg__UnboundedSequences__are_equal(seq, seq_copy)); |
| 723 | + EXPECT_TRUE(rosidl_generator_c__msg__UnboundedSequences__copy(seq, seq_copy)); |
| 724 | + EXPECT_TRUE(rosidl_generator_c__msg__UnboundedSequences__are_equal(seq, seq_copy)); |
| 725 | + rosidl_generator_c__msg__UnboundedSequences__destroy(seq_copy); |
| 726 | + |
666 | 727 | rosidl_generator_c__msg__UnboundedSequences__destroy(seq); |
667 | 728 | return 0; |
668 | 729 | } |
@@ -694,6 +755,19 @@ int test_strings() |
694 | 755 | EXPECT_EQ(0, strcmp(str->bounded_string_value_default1.data, "Hello world!")); |
695 | 756 | EXPECT_EQ(0, strcmp(str->bounded_string_value_default5.data, "Hello\"world!")); |
696 | 757 |
|
| 758 | + EXPECT_FALSE(rosidl_generator_c__msg__Strings__are_equal(NULL, NULL)); |
| 759 | + EXPECT_FALSE(rosidl_generator_c__msg__Strings__are_equal(str, NULL)); |
| 760 | + EXPECT_FALSE(rosidl_generator_c__msg__Strings__are_equal(NULL, str)); |
| 761 | + EXPECT_TRUE(rosidl_generator_c__msg__Strings__are_equal(str, str)); |
| 762 | + |
| 763 | + rosidl_generator_c__msg__Strings * str_copy = NULL; |
| 764 | + str_copy = rosidl_generator_c__msg__Strings__create(); |
| 765 | + EXPECT_NE(str_copy, NULL); |
| 766 | + EXPECT_FALSE(rosidl_generator_c__msg__Strings__are_equal(str, str_copy)); |
| 767 | + EXPECT_TRUE(rosidl_generator_c__msg__Strings__copy(str, str_copy)); |
| 768 | + EXPECT_TRUE(rosidl_generator_c__msg__Strings__are_equal(str, str_copy)); |
| 769 | + rosidl_generator_c__msg__Strings__destroy(str_copy); |
| 770 | + |
697 | 771 | rosidl_generator_c__msg__Strings__destroy(str); |
698 | 772 | return 0; |
699 | 773 | } |
@@ -732,6 +806,19 @@ int test_nested() |
732 | 806 | EXPECT_EQ(-40000000, nested->basic_types_value.int64_value); |
733 | 807 | EXPECT_EQ(50000000, nested->basic_types_value.uint64_value); |
734 | 808 |
|
| 809 | + EXPECT_FALSE(rosidl_generator_c__msg__Nested__are_equal(NULL, NULL)); |
| 810 | + EXPECT_FALSE(rosidl_generator_c__msg__Nested__are_equal(nested, NULL)); |
| 811 | + EXPECT_FALSE(rosidl_generator_c__msg__Nested__are_equal(NULL, nested)); |
| 812 | + EXPECT_TRUE(rosidl_generator_c__msg__Nested__are_equal(nested, nested)); |
| 813 | + |
| 814 | + rosidl_generator_c__msg__Nested * nested_copy = NULL; |
| 815 | + nested_copy = rosidl_generator_c__msg__Nested__create(); |
| 816 | + EXPECT_NE(nested_copy, NULL); |
| 817 | + EXPECT_FALSE(rosidl_generator_c__msg__Nested__are_equal(nested, nested_copy)); |
| 818 | + EXPECT_TRUE(rosidl_generator_c__msg__Nested__copy(nested, nested_copy)); |
| 819 | + EXPECT_TRUE(rosidl_generator_c__msg__Nested__are_equal(nested, nested_copy)); |
| 820 | + rosidl_generator_c__msg__Nested__destroy(nested_copy); |
| 821 | + |
735 | 822 | rosidl_generator_c__msg__Nested__destroy(nested); |
736 | 823 | return 0; |
737 | 824 | } |
@@ -971,6 +1058,19 @@ int test_multi_nested() |
971 | 1058 | EXPECT_EQ(UINT64_MAX, msg->array_of_arrays[0].uint64_values_default[2]); |
972 | 1059 | } |
973 | 1060 |
|
| 1061 | + EXPECT_FALSE(rosidl_generator_c__msg__MultiNested__are_equal(NULL, NULL)); |
| 1062 | + EXPECT_FALSE(rosidl_generator_c__msg__MultiNested__are_equal(msg, NULL)); |
| 1063 | + EXPECT_FALSE(rosidl_generator_c__msg__MultiNested__are_equal(NULL, msg)); |
| 1064 | + EXPECT_TRUE(rosidl_generator_c__msg__MultiNested__are_equal(msg, msg)); |
| 1065 | + |
| 1066 | + rosidl_generator_c__msg__MultiNested * msg_copy = NULL; |
| 1067 | + msg_copy = rosidl_generator_c__msg__MultiNested__create(); |
| 1068 | + EXPECT_NE(msg_copy, NULL); |
| 1069 | + EXPECT_FALSE(rosidl_generator_c__msg__MultiNested__are_equal(msg, msg_copy)); |
| 1070 | + EXPECT_TRUE(rosidl_generator_c__msg__MultiNested__copy(msg, msg_copy)); |
| 1071 | + EXPECT_TRUE(rosidl_generator_c__msg__MultiNested__are_equal(msg, msg_copy)); |
| 1072 | + rosidl_generator_c__msg__MultiNested__destroy(msg_copy); |
| 1073 | + |
974 | 1074 | rosidl_generator_c__msg__MultiNested__destroy(msg); |
975 | 1075 | return 0; |
976 | 1076 | } |
@@ -1182,6 +1282,19 @@ int test_arrays() |
1182 | 1282 | EXPECT_EQ(0, strcmp(arr->string_values_default[1].data, "max value")); |
1183 | 1283 | EXPECT_EQ(0, strcmp(arr->string_values_default[2].data, "min value")); |
1184 | 1284 |
|
| 1285 | + EXPECT_FALSE(rosidl_generator_c__msg__Arrays__are_equal(NULL, NULL)); |
| 1286 | + EXPECT_FALSE(rosidl_generator_c__msg__Arrays__are_equal(arr, NULL)); |
| 1287 | + EXPECT_FALSE(rosidl_generator_c__msg__Arrays__are_equal(NULL, arr)); |
| 1288 | + EXPECT_TRUE(rosidl_generator_c__msg__Arrays__are_equal(arr, arr)); |
| 1289 | + |
| 1290 | + rosidl_generator_c__msg__Arrays * arr_copy = NULL; |
| 1291 | + arr_copy = rosidl_generator_c__msg__Arrays__create(); |
| 1292 | + EXPECT_NE(arr_copy, NULL); |
| 1293 | + EXPECT_FALSE(rosidl_generator_c__msg__Arrays__are_equal(arr, arr_copy)); |
| 1294 | + EXPECT_TRUE(rosidl_generator_c__msg__Arrays__copy(arr, arr_copy)); |
| 1295 | + EXPECT_TRUE(rosidl_generator_c__msg__Arrays__are_equal(arr, arr_copy)); |
| 1296 | + rosidl_generator_c__msg__Arrays__destroy(arr_copy); |
| 1297 | + |
1185 | 1298 | rosidl_generator_c__msg__Arrays__destroy(arr); |
1186 | 1299 | return 0; |
1187 | 1300 | } |
0 commit comments