| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 | #!/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 }.joinendclass 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  endend
 |