|
|
|
@ -56,7 +56,7 @@ module BasicTest |
|
|
|
|
inners: [] |
|
|
|
|
)['inners'].to_s |
|
|
|
|
|
|
|
|
|
assert_raise Google::Protobuf::TypeError do |
|
|
|
|
assert_raises Google::Protobuf::TypeError do |
|
|
|
|
outer.new( |
|
|
|
|
inners: [nil] |
|
|
|
|
).to_s |
|
|
|
@ -112,46 +112,46 @@ module BasicTest |
|
|
|
|
|
|
|
|
|
def test_has_field |
|
|
|
|
m = TestSingularFields.new |
|
|
|
|
assert !m.has_singular_msg? |
|
|
|
|
refute m.has_singular_msg? |
|
|
|
|
m.singular_msg = TestMessage2.new |
|
|
|
|
assert m.has_singular_msg? |
|
|
|
|
assert TestSingularFields.descriptor.lookup('singular_msg').has?(m) |
|
|
|
|
|
|
|
|
|
m = OneofMessage.new |
|
|
|
|
assert !m.has_my_oneof? |
|
|
|
|
assert !m.has_a? |
|
|
|
|
refute m.has_my_oneof? |
|
|
|
|
refute m.has_a? |
|
|
|
|
m.a = "foo" |
|
|
|
|
assert m.has_my_oneof? |
|
|
|
|
assert m.has_a? |
|
|
|
|
assert_true OneofMessage.descriptor.lookup('a').has?(m) |
|
|
|
|
|
|
|
|
|
m = TestSingularFields.new |
|
|
|
|
assert_raise NoMethodError do |
|
|
|
|
assert_raises NoMethodError do |
|
|
|
|
m.has_singular_int32? |
|
|
|
|
end |
|
|
|
|
assert_raise ArgumentError do |
|
|
|
|
assert_raises ArgumentError do |
|
|
|
|
TestSingularFields.descriptor.lookup('singular_int32').has?(m) |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
assert_raise NoMethodError do |
|
|
|
|
assert_raises NoMethodError do |
|
|
|
|
m.has_singular_string? |
|
|
|
|
end |
|
|
|
|
assert_raise ArgumentError do |
|
|
|
|
assert_raises ArgumentError do |
|
|
|
|
TestSingularFields.descriptor.lookup('singular_string').has?(m) |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
assert_raise NoMethodError do |
|
|
|
|
assert_raises NoMethodError do |
|
|
|
|
m.has_singular_bool? |
|
|
|
|
end |
|
|
|
|
assert_raise ArgumentError do |
|
|
|
|
assert_raises ArgumentError do |
|
|
|
|
TestSingularFields.descriptor.lookup('singular_bool').has?(m) |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
m = TestMessage.new |
|
|
|
|
assert_raise NoMethodError do |
|
|
|
|
assert_raises NoMethodError do |
|
|
|
|
m.has_repeated_msg? |
|
|
|
|
end |
|
|
|
|
assert_raise ArgumentError do |
|
|
|
|
assert_raises ArgumentError do |
|
|
|
|
TestMessage.descriptor.lookup('repeated_msg').has?(m) |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
@ -161,14 +161,12 @@ module BasicTest |
|
|
|
|
|
|
|
|
|
# Explicitly setting to zero does not cause anything to be serialized. |
|
|
|
|
m.singular_int32 = 0 |
|
|
|
|
assert_equal "", TestSingularFields.encode(m) |
|
|
|
|
|
|
|
|
|
assert_empty TestSingularFields.encode(m) |
|
|
|
|
# Explicitly setting to a non-zero value *does* cause serialization. |
|
|
|
|
m.singular_int32 = 1 |
|
|
|
|
assert_not_equal "", TestSingularFields.encode(m) |
|
|
|
|
|
|
|
|
|
refute_empty TestSingularFields.encode(m) |
|
|
|
|
m.singular_int32 = 0 |
|
|
|
|
assert_equal "", TestSingularFields.encode(m) |
|
|
|
|
assert_empty TestSingularFields.encode(m) |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
def test_set_clear_defaults |
|
|
|
@ -187,35 +185,33 @@ module BasicTest |
|
|
|
|
m.singular_string = "foo bar" |
|
|
|
|
assert_equal "foo bar", m.singular_string |
|
|
|
|
m.clear_singular_string |
|
|
|
|
assert_equal "", m.singular_string |
|
|
|
|
|
|
|
|
|
assert_empty m.singular_string |
|
|
|
|
m.singular_string = "foo" |
|
|
|
|
assert_equal "foo", m.singular_string |
|
|
|
|
TestSingularFields.descriptor.lookup('singular_string').clear(m) |
|
|
|
|
assert_equal "", m.singular_string |
|
|
|
|
|
|
|
|
|
assert_empty m.singular_string |
|
|
|
|
m.singular_msg = TestMessage2.new(:foo => 42) |
|
|
|
|
assert_equal TestMessage2.new(:foo => 42), m.singular_msg |
|
|
|
|
assert m.has_singular_msg? |
|
|
|
|
m.clear_singular_msg |
|
|
|
|
assert_equal nil, m.singular_msg |
|
|
|
|
assert !m.has_singular_msg? |
|
|
|
|
assert_nil m.singular_msg |
|
|
|
|
refute m.has_singular_msg? |
|
|
|
|
|
|
|
|
|
m.singular_msg = TestMessage2.new(:foo => 42) |
|
|
|
|
assert_equal TestMessage2.new(:foo => 42), m.singular_msg |
|
|
|
|
TestSingularFields.descriptor.lookup('singular_msg').clear(m) |
|
|
|
|
assert_equal nil, m.singular_msg |
|
|
|
|
assert_nil m.singular_msg |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
def test_import_proto2 |
|
|
|
|
m = TestMessage.new |
|
|
|
|
assert !m.has_optional_proto2_submessage? |
|
|
|
|
refute m.has_optional_proto2_submessage? |
|
|
|
|
m.optional_proto2_submessage = ::FooBar::Proto2::TestImportedMessage.new |
|
|
|
|
assert m.has_optional_proto2_submessage? |
|
|
|
|
assert TestMessage.descriptor.lookup('optional_proto2_submessage').has?(m) |
|
|
|
|
|
|
|
|
|
m.clear_optional_proto2_submessage |
|
|
|
|
assert !m.has_optional_proto2_submessage? |
|
|
|
|
refute m.has_optional_proto2_submessage? |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
def test_clear_repeated_fields |
|
|
|
@ -224,96 +220,90 @@ module BasicTest |
|
|
|
|
m.repeated_int32.push(1) |
|
|
|
|
assert_equal [1], m.repeated_int32 |
|
|
|
|
m.clear_repeated_int32 |
|
|
|
|
assert_equal [], m.repeated_int32 |
|
|
|
|
|
|
|
|
|
assert_empty m.repeated_int32 |
|
|
|
|
m.repeated_int32.push(1) |
|
|
|
|
assert_equal [1], m.repeated_int32 |
|
|
|
|
TestMessage.descriptor.lookup('repeated_int32').clear(m) |
|
|
|
|
assert_equal [], m.repeated_int32 |
|
|
|
|
|
|
|
|
|
assert_empty m.repeated_int32 |
|
|
|
|
m = OneofMessage.new |
|
|
|
|
m.a = "foo" |
|
|
|
|
assert_equal "foo", m.a |
|
|
|
|
assert m.has_my_oneof? |
|
|
|
|
assert_equal :a, m.my_oneof |
|
|
|
|
m.clear_a |
|
|
|
|
assert !m.has_my_oneof? |
|
|
|
|
refute m.has_my_oneof? |
|
|
|
|
|
|
|
|
|
m.a = "foobar" |
|
|
|
|
assert m.has_my_oneof? |
|
|
|
|
m.clear_my_oneof |
|
|
|
|
assert !m.has_my_oneof? |
|
|
|
|
refute m.has_my_oneof? |
|
|
|
|
|
|
|
|
|
m.a = "bar" |
|
|
|
|
assert_equal "bar", m.a |
|
|
|
|
assert m.has_my_oneof? |
|
|
|
|
OneofMessage.descriptor.lookup('a').clear(m) |
|
|
|
|
assert !m.has_my_oneof? |
|
|
|
|
refute m.has_my_oneof? |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
def test_initialization_map_errors |
|
|
|
|
e = assert_raise ArgumentError do |
|
|
|
|
e = assert_raises ArgumentError do |
|
|
|
|
TestMessage.new(:hello => "world") |
|
|
|
|
end |
|
|
|
|
assert_match(/hello/, e.message) |
|
|
|
|
|
|
|
|
|
e = assert_raise ArgumentError do |
|
|
|
|
e = assert_raises ArgumentError do |
|
|
|
|
MapMessage.new(:map_string_int32 => "hello") |
|
|
|
|
end |
|
|
|
|
assert_equal e.message, "Expected Hash object as initializer value for map field 'map_string_int32' (given String)." |
|
|
|
|
|
|
|
|
|
e = assert_raise ArgumentError do |
|
|
|
|
assert_equal "Expected Hash object as initializer value for map field 'map_string_int32' (given String).", e.message |
|
|
|
|
e = assert_raises ArgumentError do |
|
|
|
|
TestMessage.new(:repeated_uint32 => "hello") |
|
|
|
|
end |
|
|
|
|
assert_equal e.message, "Expected array as initializer value for repeated field 'repeated_uint32' (given String)." |
|
|
|
|
assert_equal "Expected array as initializer value for repeated field 'repeated_uint32' (given String).", e.message |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
def test_map_field |
|
|
|
|
m = MapMessage.new |
|
|
|
|
assert m.map_string_int32 == {} |
|
|
|
|
assert m.map_string_msg == {} |
|
|
|
|
assert_empty m.map_string_int32.to_h |
|
|
|
|
assert_empty m.map_string_msg.to_h |
|
|
|
|
|
|
|
|
|
m = MapMessage.new( |
|
|
|
|
:map_string_int32 => {"a" => 1, "b" => 2}, |
|
|
|
|
:map_string_msg => {"a" => TestMessage2.new(:foo => 1), |
|
|
|
|
"b" => TestMessage2.new(:foo => 2)}, |
|
|
|
|
:map_string_enum => {"a" => :A, "b" => :B}) |
|
|
|
|
assert m.map_string_int32.keys.sort == ["a", "b"] |
|
|
|
|
assert m.map_string_int32["a"] == 1 |
|
|
|
|
assert m.map_string_msg["b"].foo == 2 |
|
|
|
|
assert m.map_string_enum["a"] == :A |
|
|
|
|
|
|
|
|
|
assert_equal ["a", "b"], m.map_string_int32.keys.sort |
|
|
|
|
assert_equal 1, m.map_string_int32["a"] |
|
|
|
|
assert_equal 2, m.map_string_msg["b"].foo |
|
|
|
|
assert_equal :A, m.map_string_enum["a"] |
|
|
|
|
m.map_string_int32["c"] = 3 |
|
|
|
|
assert m.map_string_int32["c"] == 3 |
|
|
|
|
assert_equal 3, m.map_string_int32["c"] |
|
|
|
|
m.map_string_msg["c"] = TestMessage2.new(:foo => 3) |
|
|
|
|
assert m.map_string_msg["c"] == TestMessage2.new(:foo => 3) |
|
|
|
|
assert_equal TestMessage2.new(:foo => 3), m.map_string_msg["c"] |
|
|
|
|
m.map_string_msg.delete("b") |
|
|
|
|
m.map_string_msg.delete("c") |
|
|
|
|
assert m.map_string_msg == { "a" => TestMessage2.new(:foo => 1) } |
|
|
|
|
|
|
|
|
|
assert_raise Google::Protobuf::TypeError do |
|
|
|
|
assert_equal({ "a" => TestMessage2.new(:foo => 1).to_h }, m.map_string_msg.to_h) |
|
|
|
|
assert_raises Google::Protobuf::TypeError do |
|
|
|
|
m.map_string_msg["e"] = TestMessage.new # wrong value type |
|
|
|
|
end |
|
|
|
|
# ensure nothing was added by the above |
|
|
|
|
assert m.map_string_msg == { "a" => TestMessage2.new(:foo => 1) } |
|
|
|
|
|
|
|
|
|
assert_equal({ "a" => TestMessage2.new(:foo => 1).to_h }, m.map_string_msg.to_h) |
|
|
|
|
m.map_string_int32 = Google::Protobuf::Map.new(:string, :int32) |
|
|
|
|
assert_raise Google::Protobuf::TypeError do |
|
|
|
|
assert_raises Google::Protobuf::TypeError do |
|
|
|
|
m.map_string_int32 = Google::Protobuf::Map.new(:string, :int64) |
|
|
|
|
end |
|
|
|
|
assert_raise Google::Protobuf::TypeError do |
|
|
|
|
assert_raises Google::Protobuf::TypeError do |
|
|
|
|
m.map_string_int32 = {} |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
assert_raise Google::Protobuf::TypeError do |
|
|
|
|
assert_raises Google::Protobuf::TypeError do |
|
|
|
|
m = MapMessage.new(:map_string_int32 => { 1 => "I am not a number" }) |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
def test_map_field_with_symbol |
|
|
|
|
m = MapMessage.new |
|
|
|
|
assert m.map_string_int32 == {} |
|
|
|
|
assert m.map_string_msg == {} |
|
|
|
|
assert_empty m.map_string_int32.to_h |
|
|
|
|
assert_empty m.map_string_msg.to_h |
|
|
|
|
|
|
|
|
|
m = MapMessage.new( |
|
|
|
|
:map_string_int32 => {a: 1, "b" => 2}, |
|
|
|
@ -335,7 +325,7 @@ module BasicTest |
|
|
|
|
expected_a = "<BasicTest::MapMessage: map_string_int32: {\"b\"=>2, \"a\"=>1}, map_string_msg: {\"b\"=><BasicTest::TestMessage2: foo: 2>, \"a\"=><BasicTest::TestMessage2: foo: 1>}, map_string_enum: {\"b\"=>:B, \"a\"=>:A}>" |
|
|
|
|
expected_b = "<BasicTest::MapMessage: map_string_int32: {\"a\"=>1, \"b\"=>2}, map_string_msg: {\"a\"=><BasicTest::TestMessage2: foo: 1>, \"b\"=><BasicTest::TestMessage2: foo: 2>}, map_string_enum: {\"a\"=>:A, \"b\"=>:B}>" |
|
|
|
|
inspect_result = m.inspect |
|
|
|
|
assert expected_a == inspect_result || expected_b == inspect_result, "Incorrect inspect result: #{inspect_result}" |
|
|
|
|
assert_includes [expected_a, expected_b], inspect_result |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
def test_map_corruption |
|
|
|
@ -353,7 +343,7 @@ module BasicTest |
|
|
|
|
assert_equal 4, m.map_int64[0].value |
|
|
|
|
assert_equal 5, m.map_uint32[0].value |
|
|
|
|
assert_equal 6, m.map_uint64[0].value |
|
|
|
|
assert_equal true, m.map_bool[0].value |
|
|
|
|
assert m.map_bool[0].value |
|
|
|
|
assert_equal 'str', m.map_string[0].value |
|
|
|
|
assert_equal 'fun', m.map_bytes[0].value |
|
|
|
|
} |
|
|
|
@ -395,9 +385,9 @@ module BasicTest |
|
|
|
|
assert_equal 0, m.map_int64[0].value |
|
|
|
|
assert_equal 0, m.map_uint32[0].value |
|
|
|
|
assert_equal 0, m.map_uint64[0].value |
|
|
|
|
assert_equal false, m.map_bool[0].value |
|
|
|
|
assert_equal '', m.map_string[0].value |
|
|
|
|
assert_equal '', m.map_bytes[0].value |
|
|
|
|
refute m.map_bool[0].value |
|
|
|
|
assert_empty m.map_string[0].value |
|
|
|
|
assert_empty m.map_bytes[0].value |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
m = proto_module::Wrapper.new( |
|
|
|
@ -437,9 +427,9 @@ module BasicTest |
|
|
|
|
assert_equal 0, m.map_int64[0].value |
|
|
|
|
assert_equal 0, m.map_uint32[0].value |
|
|
|
|
assert_equal 0, m.map_uint64[0].value |
|
|
|
|
assert_equal false, m.map_bool[0].value |
|
|
|
|
assert_equal '', m.map_string[0].value |
|
|
|
|
assert_equal '', m.map_bytes[0].value |
|
|
|
|
refute m.map_bool[0].value |
|
|
|
|
assert_empty m.map_string[0].value |
|
|
|
|
assert_empty m.map_bytes[0].value |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
m = proto_module::Wrapper.new( |
|
|
|
@ -489,19 +479,16 @@ module BasicTest |
|
|
|
|
"b" => TestMessage2.new(:foo => 2)}, |
|
|
|
|
:map_string_enum => {"a" => :A, "b" => :B}) |
|
|
|
|
m2 = MapMessage.decode(MapMessage.encode(m)) |
|
|
|
|
assert m == m2 |
|
|
|
|
|
|
|
|
|
assert_equal m, m2 |
|
|
|
|
m3 = MapMessageWireEquiv.decode(MapMessage.encode(m)) |
|
|
|
|
assert m3.map_string_int32.length == 2 |
|
|
|
|
|
|
|
|
|
assert_equal 2, m3.map_string_int32.length |
|
|
|
|
kv = {} |
|
|
|
|
m3.map_string_int32.map { |msg| kv[msg.key] = msg.value } |
|
|
|
|
assert kv == {"a" => 1, "b" => 2} |
|
|
|
|
|
|
|
|
|
assert_equal({"a" => 1, "b" => 2}, kv) |
|
|
|
|
kv = {} |
|
|
|
|
m3.map_string_msg.map { |msg| kv[msg.key] = msg.value } |
|
|
|
|
assert kv == {"a" => TestMessage2.new(:foo => 1), |
|
|
|
|
"b" => TestMessage2.new(:foo => 2)} |
|
|
|
|
assert_equal({"a" => TestMessage2.new(:foo => 1), |
|
|
|
|
"b" => TestMessage2.new(:foo => 2)}, kv) |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
def test_protobuf_decode_json_ignore_unknown_fields |
|
|
|
@ -510,8 +497,8 @@ module BasicTest |
|
|
|
|
not_in_message: "some_value" |
|
|
|
|
}.to_json, { ignore_unknown_fields: true }) |
|
|
|
|
|
|
|
|
|
assert_equal m.optional_string, "foo" |
|
|
|
|
e = assert_raise Google::Protobuf::ParseError do |
|
|
|
|
assert_equal "foo", m.optional_string |
|
|
|
|
e = assert_raises Google::Protobuf::ParseError do |
|
|
|
|
TestMessage.decode_json({ not_in_message: "some_value" }.to_json) |
|
|
|
|
end |
|
|
|
|
assert_match(/No such field: not_in_message/, e.message) |
|
|
|
@ -573,10 +560,10 @@ module BasicTest |
|
|
|
|
m = MapMessage.new(:map_string_int32 => {"a" => 1}) |
|
|
|
|
expected = {mapStringInt32: {a: 1}, mapStringMsg: {}, mapStringEnum: {}} |
|
|
|
|
expected_preserve = {map_string_int32: {a: 1}, map_string_msg: {}, map_string_enum: {}} |
|
|
|
|
assert_equal JSON.parse(MapMessage.encode_json(m, :emit_defaults=>true), :symbolize_names => true), expected |
|
|
|
|
assert_equal expected, JSON.parse(MapMessage.encode_json(m, :emit_defaults=>true), :symbolize_names => true) |
|
|
|
|
|
|
|
|
|
json = MapMessage.encode_json(m, :preserve_proto_fieldnames => true, :emit_defaults=>true) |
|
|
|
|
assert_equal JSON.parse(json, :symbolize_names => true), expected_preserve |
|
|
|
|
assert_equal expected_preserve, JSON.parse(json, :symbolize_names => true) |
|
|
|
|
|
|
|
|
|
m2 = MapMessage.decode_json(MapMessage.encode_json(m)) |
|
|
|
|
assert_equal m, m2 |
|
|
|
@ -588,7 +575,7 @@ module BasicTest |
|
|
|
|
|
|
|
|
|
actual = MapMessage.encode_json(m, :emit_defaults => true) |
|
|
|
|
|
|
|
|
|
assert_equal JSON.parse(actual, :symbolize_names => true), expected |
|
|
|
|
assert_equal expected, JSON.parse(actual, :symbolize_names => true) |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
def test_json_emit_defaults_submsg |
|
|
|
@ -615,18 +602,18 @@ module BasicTest |
|
|
|
|
|
|
|
|
|
def test_respond_to |
|
|
|
|
msg = MapMessage.new |
|
|
|
|
assert msg.respond_to?(:map_string_int32) |
|
|
|
|
assert !msg.respond_to?(:bacon) |
|
|
|
|
assert_respond_to msg, :map_string_int32 |
|
|
|
|
refute_respond_to msg, :bacon |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
def test_file_descriptor |
|
|
|
|
file_descriptor = TestMessage.descriptor.file_descriptor |
|
|
|
|
assert nil != file_descriptor |
|
|
|
|
refute_nil file_descriptor |
|
|
|
|
assert_equal "tests/basic_test.proto", file_descriptor.name |
|
|
|
|
assert_equal :proto3, file_descriptor.syntax |
|
|
|
|
|
|
|
|
|
file_descriptor = TestEnum.descriptor.file_descriptor |
|
|
|
|
assert nil != file_descriptor |
|
|
|
|
refute_nil file_descriptor |
|
|
|
|
assert_equal "tests/basic_test.proto", file_descriptor.name |
|
|
|
|
assert_equal :proto3, file_descriptor.syntax |
|
|
|
|
end |
|
|
|
@ -645,10 +632,10 @@ module BasicTest |
|
|
|
|
assert m.map_string_int32.frozen? |
|
|
|
|
assert m.map_string_msg.frozen? |
|
|
|
|
|
|
|
|
|
assert_raise(FrozenErrorType) { m.map_string_int32['foo'] = 1 } |
|
|
|
|
assert_raise(FrozenErrorType) { m.map_string_msg['bar'] = proto_module::TestMessage2.new } |
|
|
|
|
assert_raise(FrozenErrorType) { m.map_string_int32.delete('a') } |
|
|
|
|
assert_raise(FrozenErrorType) { m.map_string_int32.clear } |
|
|
|
|
assert_raises(FrozenErrorType) { m.map_string_int32['foo'] = 1 } |
|
|
|
|
assert_raises(FrozenErrorType) { m.map_string_msg['bar'] = proto_module::TestMessage2.new } |
|
|
|
|
assert_raises(FrozenErrorType) { m.map_string_int32.delete('a') } |
|
|
|
|
assert_raises(FrozenErrorType) { m.map_string_int32.clear } |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
def test_map_length |
|
|
|
@ -691,23 +678,23 @@ module BasicTest |
|
|
|
|
|
|
|
|
|
def test_map_fields_respond_to? # regression test for issue 9202 |
|
|
|
|
msg = proto_module::MapMessage.new |
|
|
|
|
assert msg.respond_to?(:map_string_int32=) |
|
|
|
|
assert_respond_to msg, :map_string_int32= |
|
|
|
|
msg.map_string_int32 = Google::Protobuf::Map.new(:string, :int32) |
|
|
|
|
assert msg.respond_to?(:map_string_int32) |
|
|
|
|
assert_respond_to msg, :map_string_int32 |
|
|
|
|
assert_equal( Google::Protobuf::Map.new(:string, :int32), msg.map_string_int32 ) |
|
|
|
|
assert msg.respond_to?(:clear_map_string_int32) |
|
|
|
|
assert_respond_to msg, :clear_map_string_int32 |
|
|
|
|
msg.clear_map_string_int32 |
|
|
|
|
|
|
|
|
|
assert !msg.respond_to?(:has_map_string_int32?) |
|
|
|
|
assert_raise NoMethodError do |
|
|
|
|
refute_respond_to msg, :has_map_string_int32? |
|
|
|
|
assert_raises NoMethodError do |
|
|
|
|
msg.has_map_string_int32? |
|
|
|
|
end |
|
|
|
|
assert !msg.respond_to?(:map_string_int32_as_value) |
|
|
|
|
assert_raise NoMethodError do |
|
|
|
|
refute_respond_to msg, :map_string_int32_as_value |
|
|
|
|
assert_raises NoMethodError do |
|
|
|
|
msg.map_string_int32_as_value |
|
|
|
|
end |
|
|
|
|
assert !msg.respond_to?(:map_string_int32_as_value=) |
|
|
|
|
assert_raise NoMethodError do |
|
|
|
|
refute_respond_to msg, :map_string_int32_as_value= |
|
|
|
|
assert_raises NoMethodError do |
|
|
|
|
msg.map_string_int32_as_value = :boom |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
@ -718,13 +705,13 @@ module BasicTest |
|
|
|
|
# `has_` prefix + "?" suffix actions should work for oneofs fields and members. |
|
|
|
|
assert msg.has_my_oneof? |
|
|
|
|
assert msg.respond_to? :has_my_oneof? |
|
|
|
|
assert msg.respond_to?( :has_a? ) |
|
|
|
|
assert !msg.has_a? |
|
|
|
|
assert msg.respond_to?( :has_b? ) |
|
|
|
|
assert !msg.has_b? |
|
|
|
|
assert msg.respond_to?( :has_c? ) |
|
|
|
|
assert !msg.has_c? |
|
|
|
|
assert msg.respond_to?( :has_d? ) |
|
|
|
|
assert !msg.has_d? |
|
|
|
|
assert_respond_to msg, :has_a? |
|
|
|
|
refute msg.has_a? |
|
|
|
|
assert_respond_to msg, :has_b? |
|
|
|
|
refute msg.has_b? |
|
|
|
|
assert_respond_to msg, :has_c? |
|
|
|
|
refute msg.has_c? |
|
|
|
|
assert_respond_to msg, :has_d? |
|
|
|
|
refute msg.has_d? |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|