Sha256: 23e85f7872a35b5781596808511d20c6d10396e485053364252aa86426c9f389

Contents?: true

Size: 1.83 KB

Versions: 130

Compression:

Stored size: 1.83 KB

Contents

# encoding: utf-8
require 'test/unit'
require 'test/proto/addressbook.pb'

class SerializeTest < Test::Unit::TestCase
  def test_serialize
    # serialize to string
    person = Tutorial::Person.new
    person.id = 1234
    person.name = 'John Doe'
    person.email = 'jdoe@example.com'
    phone = Tutorial::Person::PhoneNumber.new
    phone.number = '555-4321'
    phone.type = Tutorial::Person::PhoneType::HOME
    person.phone << phone
    serialized_string = person.serialize_to_string

    # parse the serialized string
    person2 = Tutorial::Person.new
    person2.parse_from_string(serialized_string)
    assert_equal(1234, person2.id)
    assert_equal('John Doe', person2.name)
    assert_equal('jdoe@example.com', person2.email)
    assert_equal(1, person2.phone.size)
    assert_equal('555-4321', person2.phone[0].number)
    assert_equal(Tutorial::Person::PhoneType::HOME, person2.phone[0].type)
  end

  def test_serialize_utf8string
    # serialize to string
    person = Tutorial::Person.new
    person.id = 1234
    person.name = '山田 太郎' # kanji characters
    serialized_string = person.serialize_to_string

    # parse the serialized string
    person2 = Tutorial::Person.new
    person2.parse_from_string(serialized_string)
    assert_equal(1234, person2.id)
    assert_equal('山田 太郎', person2.name)
  end

  def test_unknown_field
    person = Tutorial::Person.new
    person.id = 1234
    person.name = 'a b c'
    serialized_string = person.serialize_to_string

    # add invalid field
    tag = 1000
    wire_type = Protobuf::WireType::VARINT
    serialized_string << Protobuf::Field::VarintField.encode((tag << 3) | wire_type)
    serialized_string << Protobuf::Field::VarintField.encode(100)

    # decode
    person2 = Tutorial::Person.new
    person2.parse_from_string(serialized_string)

    assert_equal(person, person2)
  end
end

Version data entries

130 entries across 130 versions & 2 rubygems

Version Path
protobuf-1.1.3 test/test_serialize.rb
protobuf-1.1.2 test/test_serialize.rb
protobuf-1.1.1 test/test_serialize.rb
protobuf-1.1.0.beta2 test/test_serialize.rb
protobuf-1.1.0.beta1 test/test_serialize.rb
protobuf-1.1.0.beta0 test/test_serialize.rb
protobuf-1.0.1 test/test_serialize.rb
protobuf-1.0.0 test/test_serialize.rb
ruby_protobuf-0.4.4 test/test_serialize.rb
ruby_protobuf-0.4.1 test/test_serialize.rb