|
|
@@ -1,6 +1,7 @@
|
|
|
#!/usr/bin/ruby
|
|
|
|
|
|
require 'google/protobuf'
|
|
|
+require 'json'
|
|
|
require 'test/unit'
|
|
|
|
|
|
# ------------- generated code --------------
|
|
|
@@ -1179,9 +1180,33 @@ module BasicTest
|
|
|
return if RUBY_PLATFORM == "java"
|
|
|
m = TestMessage.new
|
|
|
|
|
|
- expected = '{"optionalInt32":0,"optionalInt64":0,"optionalUint32":0,"optionalUint64":0,"optionalBool":false,"optionalFloat":0,"optionalDouble":0,"optionalString":"","optionalBytes":"","optionalEnum":"Default","repeatedInt32":[],"repeatedInt64":[],"repeatedUint32":[],"repeatedUint64":[],"repeatedBool":[],"repeatedFloat":[],"repeatedDouble":[],"repeatedString":[],"repeatedBytes":[],"repeatedMsg":[],"repeatedEnum":[]}'
|
|
|
+ expected = {
|
|
|
+ optionalInt32: 0,
|
|
|
+ optionalInt64: 0,
|
|
|
+ optionalUint32: 0,
|
|
|
+ optionalUint64: 0,
|
|
|
+ optionalBool: false,
|
|
|
+ optionalFloat: 0,
|
|
|
+ optionalDouble: 0,
|
|
|
+ optionalString: "",
|
|
|
+ optionalBytes: "",
|
|
|
+ optionalEnum: "Default",
|
|
|
+ repeatedInt32: [],
|
|
|
+ repeatedInt64: [],
|
|
|
+ repeatedUint32: [],
|
|
|
+ repeatedUint64: [],
|
|
|
+ repeatedBool: [],
|
|
|
+ repeatedFloat: [],
|
|
|
+ repeatedDouble: [],
|
|
|
+ repeatedString: [],
|
|
|
+ repeatedBytes: [],
|
|
|
+ repeatedMsg: [],
|
|
|
+ repeatedEnum: []
|
|
|
+ }
|
|
|
+
|
|
|
+ actual = TestMessage.encode_json(m, :emit_defaults => true)
|
|
|
|
|
|
- assert TestMessage.encode_json(m, :emit_defaults => true) == expected
|
|
|
+ assert JSON.parse(actual, :symbolize_names => true) == expected
|
|
|
end
|
|
|
|
|
|
def test_json_emit_defaults_submsg
|
|
|
@@ -1189,9 +1214,34 @@ module BasicTest
|
|
|
return if RUBY_PLATFORM == "java"
|
|
|
m = TestMessage.new(optional_msg: TestMessage2.new)
|
|
|
|
|
|
- expected = '{"optionalInt32":0,"optionalInt64":0,"optionalUint32":0,"optionalUint64":0,"optionalBool":false,"optionalFloat":0,"optionalDouble":0,"optionalString":"","optionalBytes":"","optionalMsg":{"foo":0},"optionalEnum":"Default","repeatedInt32":[],"repeatedInt64":[],"repeatedUint32":[],"repeatedUint64":[],"repeatedBool":[],"repeatedFloat":[],"repeatedDouble":[],"repeatedString":[],"repeatedBytes":[],"repeatedMsg":[],"repeatedEnum":[]}'
|
|
|
+ expected = {
|
|
|
+ optionalInt32: 0,
|
|
|
+ optionalInt64: 0,
|
|
|
+ optionalUint32: 0,
|
|
|
+ optionalUint64: 0,
|
|
|
+ optionalBool: false,
|
|
|
+ optionalFloat: 0,
|
|
|
+ optionalDouble: 0,
|
|
|
+ optionalString: "",
|
|
|
+ optionalBytes: "",
|
|
|
+ optionalMsg: {foo: 0},
|
|
|
+ optionalEnum: "Default",
|
|
|
+ repeatedInt32: [],
|
|
|
+ repeatedInt64: [],
|
|
|
+ repeatedUint32: [],
|
|
|
+ repeatedUint64: [],
|
|
|
+ repeatedBool: [],
|
|
|
+ repeatedFloat: [],
|
|
|
+ repeatedDouble: [],
|
|
|
+ repeatedString: [],
|
|
|
+ repeatedBytes: [],
|
|
|
+ repeatedMsg: [],
|
|
|
+ repeatedEnum: []
|
|
|
+ }
|
|
|
+
|
|
|
+ actual = TestMessage.encode_json(m, :emit_defaults => true)
|
|
|
|
|
|
- assert TestMessage.encode_json(m, :emit_defaults => true) == expected
|
|
|
+ assert JSON.parse(actual, :symbolize_names => true) == expected
|
|
|
end
|
|
|
|
|
|
def test_json_emit_defaults_repeated_submsg
|
|
|
@@ -1199,21 +1249,45 @@ module BasicTest
|
|
|
return if RUBY_PLATFORM == "java"
|
|
|
m = TestMessage.new(repeated_msg: [TestMessage2.new])
|
|
|
|
|
|
- expected = '{"optionalInt32":0,"optionalInt64":0,"optionalUint32":0,"optionalUint64":0,"optionalBool":false,"optionalFloat":0,"optionalDouble":0,"optionalString":"","optionalBytes":"","optionalEnum":"Default","repeatedInt32":[],"repeatedInt64":[],"repeatedUint32":[],"repeatedUint64":[],"repeatedBool":[],"repeatedFloat":[],"repeatedDouble":[],"repeatedString":[],"repeatedBytes":[],"repeatedMsg":[{"foo":0}],"repeatedEnum":[]}'
|
|
|
+ expected = {
|
|
|
+ optionalInt32: 0,
|
|
|
+ optionalInt64: 0,
|
|
|
+ optionalUint32: 0,
|
|
|
+ optionalUint64: 0,
|
|
|
+ optionalBool: false,
|
|
|
+ optionalFloat: 0,
|
|
|
+ optionalDouble: 0,
|
|
|
+ optionalString: "",
|
|
|
+ optionalBytes: "",
|
|
|
+ optionalEnum: "Default",
|
|
|
+ repeatedInt32: [],
|
|
|
+ repeatedInt64: [],
|
|
|
+ repeatedUint32: [],
|
|
|
+ repeatedUint64: [],
|
|
|
+ repeatedBool: [],
|
|
|
+ repeatedFloat: [],
|
|
|
+ repeatedDouble: [],
|
|
|
+ repeatedString: [],
|
|
|
+ repeatedBytes: [],
|
|
|
+ repeatedMsg: [{foo: 0}],
|
|
|
+ repeatedEnum: []
|
|
|
+ }
|
|
|
+
|
|
|
+ actual = TestMessage.encode_json(m, :emit_defaults => true)
|
|
|
|
|
|
- assert TestMessage.encode_json(m, :emit_defaults => true) == expected
|
|
|
+ assert JSON.parse(actual, :symbolize_names => true) == expected
|
|
|
end
|
|
|
|
|
|
def test_json_maps
|
|
|
# TODO: Fix JSON in JRuby version.
|
|
|
return if RUBY_PLATFORM == "java"
|
|
|
m = MapMessage.new(:map_string_int32 => {"a" => 1})
|
|
|
- expected = '{"mapStringInt32":{"a":1},"mapStringMsg":{}}'
|
|
|
- expected_preserve = '{"map_string_int32":{"a":1},"map_string_msg":{}}'
|
|
|
- assert MapMessage.encode_json(m) == expected
|
|
|
+ expected = {mapStringInt32: {a: 1}, mapStringMsg: {}}
|
|
|
+ expected_preserve = {map_string_int32: {a: 1}, map_string_msg: {}}
|
|
|
+ assert JSON.parse(MapMessage.encode_json(m), :symbolize_names => true) == expected
|
|
|
|
|
|
json = MapMessage.encode_json(m, :preserve_proto_fieldnames => true)
|
|
|
- assert json == expected_preserve
|
|
|
+ assert JSON.parse(json, :symbolize_names => true) == expected_preserve
|
|
|
|
|
|
m2 = MapMessage.decode_json(MapMessage.encode_json(m))
|
|
|
assert m == m2
|
|
|
@@ -1223,8 +1297,11 @@ module BasicTest
|
|
|
# TODO: Fix JSON in JRuby version.
|
|
|
return if RUBY_PLATFORM == "java"
|
|
|
m = MapMessage.new(:map_string_msg => {"a" => TestMessage2.new})
|
|
|
- expected = '{"mapStringInt32":{},"mapStringMsg":{"a":{"foo":0}}}'
|
|
|
- assert MapMessage.encode_json(m, :emit_defaults => true) == expected
|
|
|
+ expected = {mapStringInt32: {}, mapStringMsg: {a: {foo: 0}}}
|
|
|
+
|
|
|
+ actual = MapMessage.encode_json(m, :emit_defaults => true)
|
|
|
+
|
|
|
+ assert JSON.parse(actual, :symbolize_names => true) == expected
|
|
|
end
|
|
|
|
|
|
def test_comparison_with_arbitrary_object
|