Protocol Buffers - Google's data interchange format (grpc依赖)
https://developers.google.com/protocol-buffers/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
2.1 KiB
63 lines
2.1 KiB
#!/usr/bin/ruby |
|
|
|
# generated_code.rb is in the same directory as this test. |
|
$LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__))) |
|
|
|
require 'generated_code_pb' |
|
require 'test/unit' |
|
|
|
def hex2bin(s) |
|
s.scan(/../).map { |x| x.hex.chr }.join |
|
end |
|
|
|
class EncodeDecodeTest < Test::Unit::TestCase |
|
def test_discard_unknown |
|
# Test discard unknown in message. |
|
unknown_msg = A::B::C::TestUnknown.new(:unknown_field => 1) |
|
from = A::B::C::TestUnknown.encode(unknown_msg) |
|
m = A::B::C::TestMessage.decode(from) |
|
Google::Protobuf.discard_unknown(m) |
|
to = A::B::C::TestMessage.encode(m) |
|
assert_equal '', to |
|
|
|
# Test discard unknown for singular message field. |
|
unknown_msg = A::B::C::TestUnknown.new( |
|
:optional_unknown => |
|
A::B::C::TestUnknown.new(:unknown_field => 1)) |
|
from = A::B::C::TestUnknown.encode(unknown_msg) |
|
m = A::B::C::TestMessage.decode(from) |
|
Google::Protobuf.discard_unknown(m) |
|
to = A::B::C::TestMessage.encode(m.optional_msg) |
|
assert_equal '', to |
|
|
|
# Test discard unknown for repeated message field. |
|
unknown_msg = A::B::C::TestUnknown.new( |
|
:repeated_unknown => |
|
[A::B::C::TestUnknown.new(:unknown_field => 1)]) |
|
from = A::B::C::TestUnknown.encode(unknown_msg) |
|
m = A::B::C::TestMessage.decode(from) |
|
Google::Protobuf.discard_unknown(m) |
|
to = A::B::C::TestMessage.encode(m.repeated_msg[0]) |
|
assert_equal '', to |
|
|
|
# Test discard unknown for map value message field. |
|
unknown_msg = A::B::C::TestUnknown.new( |
|
:map_unknown => |
|
{"" => A::B::C::TestUnknown.new(:unknown_field => 1)}) |
|
from = A::B::C::TestUnknown.encode(unknown_msg) |
|
m = A::B::C::TestMessage.decode(from) |
|
Google::Protobuf.discard_unknown(m) |
|
to = A::B::C::TestMessage.encode(m.map_string_msg['']) |
|
assert_equal '', to |
|
|
|
# Test discard unknown for oneof message field. |
|
unknown_msg = A::B::C::TestUnknown.new( |
|
:oneof_unknown => |
|
A::B::C::TestUnknown.new(:unknown_field => 1)) |
|
from = A::B::C::TestUnknown.encode(unknown_msg) |
|
m = A::B::C::TestMessage.decode(from) |
|
Google::Protobuf.discard_unknown(m) |
|
to = A::B::C::TestMessage.encode(m.oneof_msg) |
|
assert_equal '', to |
|
end |
|
end
|
|
|