From 9c695e2f55a63445d75ac646bce4a2bfbef3cfdf Mon Sep 17 00:00:00 2001 From: Luke Bakken Date: Wed, 31 Aug 2016 12:34:49 -0700 Subject: [PATCH 1/2] Add test demonstrating how optional / default interact in a message definition --- src/riak_pb_codec.erl | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/riak_pb_codec.erl b/src/riak_pb_codec.erl index 92eef33e..bbf68a9b 100644 --- a/src/riak_pb_codec.erl +++ b/src/riak_pb_codec.erl @@ -417,6 +417,7 @@ safe_to_atom(Binary) when is_binary(Binary) -> -ifdef(TEST). -include("riak_kv_pb.hrl"). +-include("riak_dt_pb.hrl"). %% One necessary omission: we do not have any messages today that %% include functions, so we cannot test decoding such records. @@ -435,6 +436,23 @@ record_test() -> decode_eq(Req, encode(Req), fun decode/2). +optional_booleans_test() -> + Req = #dtfetchreq{bucket = "bucket", + key = <<"key">>, + type = <<"type">>}, + DecodedReq = #dtfetchreq{bucket = <<"bucket">>, + key = <<"key">>, + type = <<"type">>, + r = undefined, + pr = undefined, + basic_quorum = undefined, + notfound_ok = undefined, + timeout = undefined, + sloppy_quorum = undefined, + n_val = undefined, + include_context = true}, + decode_eq(DecodedReq, encode(Req), fun decode/2). + empty_atoms_test() -> %% Empty messages are either empty records or atoms, depending on %% whether the .proto file defines the message as an empty record From 810f49c59575439cdbcb7f672b7a96cf207ac8d9 Mon Sep 17 00:00:00 2001 From: Luke Bakken Date: Fri, 2 Sep 2016 13:36:59 -0700 Subject: [PATCH 2/2] Add assertions to test record values when initialized --- src/riak_pb_codec.erl | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/riak_pb_codec.erl b/src/riak_pb_codec.erl index bbf68a9b..7d5e8f78 100644 --- a/src/riak_pb_codec.erl +++ b/src/riak_pb_codec.erl @@ -440,6 +440,14 @@ optional_booleans_test() -> Req = #dtfetchreq{bucket = "bucket", key = <<"key">>, type = <<"type">>}, + ?assertEqual(undefined, Req#dtfetchreq.r), + ?assertEqual(undefined, Req#dtfetchreq.pr), + ?assertEqual(undefined, Req#dtfetchreq.basic_quorum), + ?assertEqual(undefined, Req#dtfetchreq.notfound_ok), + ?assertEqual(undefined, Req#dtfetchreq.timeout), + ?assertEqual(undefined, Req#dtfetchreq.sloppy_quorum), + ?assertEqual(undefined, Req#dtfetchreq.n_val), + ?assertEqual(true, Req#dtfetchreq.include_context), DecodedReq = #dtfetchreq{bucket = <<"bucket">>, key = <<"key">>, type = <<"type">>,