123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- #!/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 'google/protobuf/well_known_types'
- 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
- def test_encode_json
- msg = A::B::C::TestMessage.new({ optional_int32: 22 })
- json = msg.to_json
- to = A::B::C::TestMessage.decode_json(json)
- assert_equal to.optional_int32, 22
- msg = A::B::C::TestMessage.new({ optional_int32: 22 })
- json = msg.to_json({ preserve_proto_fieldnames: true })
- assert_match 'optional_int32', json
- to = A::B::C::TestMessage.decode_json(json)
- assert_equal 22, to.optional_int32
- msg = A::B::C::TestMessage.new({ optional_int32: 22 })
- json = A::B::C::TestMessage.encode_json(
- msg,
- { preserve_proto_fieldnames: true, emit_defaults: true }
- )
- assert_match 'optional_int32', json
- end
- def test_encode_wrong_msg
- assert_raise ::ArgumentError do
- m = A::B::C::TestMessage.new(
- :optional_int32 => 1,
- )
- Google::Protobuf::Any.encode(m)
- end
- end
- def test_json_name
- msg = A::B::C::TestJsonName.new(:value => 42)
- json = msg.to_json
- assert_match json, "{\"CustomJsonName\":42}"
- end
- end
|