Skip to content

Commit cb0d86d

Browse files
committed
add tests for map default values
1 parent e68ce9c commit cb0d86d

File tree

2 files changed

+32
-12
lines changed

2 files changed

+32
-12
lines changed

pb.c

+4-3
Original file line numberDiff line numberDiff line change
@@ -1671,9 +1671,10 @@ static int Lpb_option(lua_State *L) {
16711671
X(2, int64_as_number, LS->int64_mode = LPB_NUMBER) \
16721672
X(3, int64_as_string, LS->int64_mode = LPB_STRING) \
16731673
X(4, int64_as_hexstring, LS->int64_mode = LPB_HEXSTRING) \
1674-
X(5, no_default_values, LS->default_mode = LPB_NODEF) \
1675-
X(6, use_default_values, LS->default_mode = LPB_COPYDEF) \
1676-
X(7, use_default_metatable, LS->default_mode = LPB_METADEF) \
1674+
X(5, auto_default_values, LS->default_mode = LPB_DEFDEF) \
1675+
X(6, no_default_values, LS->default_mode = LPB_NODEF) \
1676+
X(7, use_default_values, LS->default_mode = LPB_COPYDEF) \
1677+
X(8, use_default_metatable, LS->default_mode = LPB_METADEF) \
16771678

16781679
static const char *opts[] = {
16791680
#define X(ID,NAME,CODE) #NAME,

test.lua

+28-9
Original file line numberDiff line numberDiff line change
@@ -435,6 +435,7 @@ function _G.test_default()
435435
pb.option "enum_as_name"
436436
pb.clear "TestDefault"
437437
pb.clear "TestNest"
438+
pb.option "auto_default_values"
438439
assert(pb.type ".google.protobuf.FileDescriptorSet")
439440
end
440441

@@ -559,6 +560,7 @@ function _G.test_packed()
559560
"MessageB", { messageValue = { { intValue = 1 } } })), "0A 02 08 01")
560561
pb.clear "MessageA"
561562
pb.clear "MessageB"
563+
pb.option "auto_default_values"
562564
assert(pb.type ".google.protobuf.FileDescriptorSet")
563565
end
564566

@@ -572,28 +574,44 @@ function _G.test_map()
572574
map<string, TestEmpty> msg_map = 3;
573575
} ]]
574576

575-
local data = {
576-
map = { one = 1, two = 2, three = 3 };
577-
packed_map = { one = 1, two = 2, three = 3 }
578-
}
579-
check_msg(".TestMap", data)
577+
check_msg("TestMap", { map = {}, packed_map = {}, msg_map = {} })
578+
579+
check_msg(".TestMap", {
580+
map = { one = 1, two = 2, three = 3 };
581+
packed_map = { one = 1, two = 2, three = 3 }
582+
}, {
583+
map = { one = 1, two = 2, three = 3 };
584+
packed_map = { one = 1, two = 2, three = 3 };
585+
msg_map = {}
586+
})
580587

581588
local data2 = { map = { one = 1, [1]=1 } }
582589
fail("string expected for field 'key', got number", function()
583590
local chunk = pb.encode("TestMap", data2)
584-
table_eq(pb.decode("TestMap", chunk), { map = {one = 1} })
591+
table_eq(pb.decode("TestMap", chunk), {
592+
map = {one = 1},
593+
packed_map = {},
594+
msg_map = {},
595+
})
585596
end)
586597
--eq(pb.decode("TestMap", "\10\4\3\10\1\1"), { map = {} })
587-
eq(pb.decode("TestMap", "\10\0"), { map = { [""] = 0 } })
588-
eq(pb.decode("TestMap", "\26\0"), { msg_map = {} })
598+
eq(pb.decode("TestMap", "\10\0"), {
599+
map = { [""] = 0 },
600+
packed_map = {},
601+
msg_map = {}
602+
})
603+
eq(pb.decode("TestMap", "\26\0"), {
604+
map = {},
605+
packed_map = {},
606+
msg_map = {}
607+
})
589608

590609
check_load [[
591610
syntax = "proto2";
592611
message TestMap2 {
593612
map<string, int32> map = 1;
594613
} ]]
595614
check_msg("TestMap2", { map = { one = 1, two = 2, three = 3 } })
596-
assert(pb.type ".google.protobuf.FileDescriptorSet")
597615
end
598616

599617
function _G.test_oneof()
@@ -620,6 +638,7 @@ function _G.test_oneof()
620638
eq(pb.type "TestOneof", ".TestOneof")
621639
pb.clear "TestOneof"
622640
eq(pb.type "TestOneof", nil)
641+
pb.option "auto_default_values"
623642
assert(pb.type ".google.protobuf.FileDescriptorSet")
624643
end
625644

0 commit comments

Comments
 (0)