summaryrefslogtreecommitdiff
path: root/tests/bindings/ruby
diff options
context:
space:
mode:
authorJosh Haberman <jhaberman@gmail.com>2014-11-18 15:21:50 -0800
committerJosh Haberman <jhaberman@gmail.com>2014-11-18 15:21:50 -0800
commit3d0c7c45da5b72a88bfb03dc5ce3384b7f01cef6 (patch)
tree1c9fd69700e1162c7ed78458160800b586600c9b /tests/bindings/ruby
parent648afe3da654b6e08fe6ea26ae520581eb892e23 (diff)
Sync to Google-internal development.
Diffstat (limited to 'tests/bindings/ruby')
-rw-r--r--tests/bindings/ruby/upb.rb62
1 files changed, 62 insertions, 0 deletions
diff --git a/tests/bindings/ruby/upb.rb b/tests/bindings/ruby/upb.rb
new file mode 100644
index 0000000..3e06c17
--- /dev/null
+++ b/tests/bindings/ruby/upb.rb
@@ -0,0 +1,62 @@
+#!/usr/bin/ruby
+#
+# Tests for Ruby upb extension.
+
+require 'test/unit'
+require 'set'
+require 'upb'
+
+def get_descriptor
+ File.open("upb/descriptor/descriptor.pb").read
+end
+
+def load_descriptor
+ symtab = Upb::SymbolTable.new
+ symtab.load_descriptor(get_descriptor())
+ return symtab
+end
+
+def get_message_class(name)
+ return Upb.get_message_class(load_descriptor().lookup(name))
+end
+
+class TestRubyExtension < Test::Unit::TestCase
+ def test_parsedescriptor
+ msgdef = load_descriptor.lookup("google.protobuf.FileDescriptorSet")
+ assert_instance_of(Upb::MessageDef, msgdef)
+
+ file_descriptor_set = Upb.get_message_class(msgdef)
+ msg = file_descriptor_set.parse(get_descriptor())
+
+ # A couple message types we know should exist.
+ names = Set.new(["DescriptorProto", "FieldDescriptorProto"])
+
+ msg.file.each { |file|
+ file.message_type.each { |message_type|
+ names.delete(message_type.name)
+ }
+ }
+
+ assert_equal(0, names.size)
+ end
+
+ def test_parseserialize
+ field_descriptor_proto = get_message_class("google.protobuf.FieldDescriptorProto")
+ field_options = get_message_class("google.protobuf.FieldOptions")
+
+ field = field_descriptor_proto.new
+
+ field.name = "MyName"
+ field.number = 5
+ field.options = field_options.new
+ field.options.packed = true
+
+ serialized = Upb::Message.serialize(field)
+
+ field2 = field_descriptor_proto.parse(serialized)
+
+ assert_equal("MyName", field2.name)
+ assert_equal(5, field2.number)
+ assert_equal(true, field2.options.packed)
+ end
+end
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback