protobuf 2.2.5-java
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +17 -0
- data/.travis.yml +9 -0
- data/.yardopts +5 -0
- data/Gemfile +3 -0
- data/README.md +316 -0
- data/Rakefile +29 -0
- data/UPGRADING.md +60 -0
- data/bin/rpc_server +5 -0
- data/bin/rprotoc +62 -0
- data/examples/addressbook.pb.rb +55 -0
- data/examples/addressbook.proto +24 -0
- data/examples/reading_a_message.rb +32 -0
- data/examples/writing_a_message.rb +46 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/code_generator.h +142 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/command_line_interface.h +318 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_enum.h +99 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_enum_field.h +103 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_extension.h +85 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_field.h +167 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_file.h +98 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_generator.h +72 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_helpers.h +159 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_message.h +170 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_message_field.h +102 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_primitive_field.h +103 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_service.h +118 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_string_field.h +104 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/cpp/cpp_test_bad_identifiers.pb.h +2721 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/importer.h +303 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_enum.h +84 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_enum_field.h +121 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_extension.h +77 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_field.h +108 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_file.h +101 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_generator.h +72 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_helpers.h +213 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_message.h +109 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_message_field.h +134 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_primitive_field.h +121 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_service.h +113 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/java/java_string_field.h +120 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/mock_code_generator.h +113 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/package_info.h +64 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/parser.h +434 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/plugin.h +73 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/plugin.pb.h +790 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/python/python_generator.h +156 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/subprocess.h +108 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/compiler/zip_writer.h +93 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/descriptor.h +1367 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/descriptor.pb.h +5223 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/descriptor_database.h +366 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/dynamic_message.h +136 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/extension_set.h +904 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/generated_message_reflection.h +424 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/generated_message_util.h +82 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/io/coded_stream.h +1102 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/io/coded_stream_inl.h +64 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/io/gzip_stream.h +207 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/io/package_info.h +54 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/io/printer.h +136 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/io/tokenizer.h +313 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/io/zero_copy_stream.h +238 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/io/zero_copy_stream_impl.h +357 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/io/zero_copy_stream_impl_lite.h +340 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/message.h +692 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/message_lite.h +239 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/package_info.h +64 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/reflection_ops.h +80 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/repeated_field.h +1295 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/service.h +291 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/stubs/common.h +1211 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/stubs/hash.h +220 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/stubs/map-util.h +119 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/stubs/once.h +123 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/stubs/stl_util-inl.h +121 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/stubs/strutil.h +457 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/stubs/substitute.h +170 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/test_util.h +174 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/test_util_lite.h +101 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/testing/file.h +83 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/testing/googletest.h +98 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/text_format.h +285 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unittest.pb.h +11915 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unittest_custom_options.pb.h +2895 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unittest_embed_optimize_for.pb.h +211 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unittest_empty.pb.h +56 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unittest_import.pb.h +188 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unittest_import_lite.pb.h +151 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unittest_lite.pb.h +4752 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unittest_lite_imports_nonlite.pb.h +150 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unittest_mset.pb.h +816 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unittest_no_generic_services.pb.h +197 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unittest_optimize_for.pb.h +403 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/unknown_field_set.h +268 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/wire_format.h +304 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/wire_format_lite.h +620 -0
- data/ext/protobuf-2.4.1/src/google/protobuf/wire_format_lite_inl.h +774 -0
- data/ext/ruby_generator/Makefile +10 -0
- data/ext/ruby_generator/RubyGenerator.cpp +450 -0
- data/ext/ruby_generator/RubyGenerator.h +199 -0
- data/ext/ruby_generator/extconf.rb +36 -0
- data/ext/ruby_generator/protoc-ruby +0 -0
- data/lib/protobuf/cli.rb +188 -0
- data/lib/protobuf/enum.rb +58 -0
- data/lib/protobuf/enum_value.rb +59 -0
- data/lib/protobuf/evented.rb +22 -0
- data/lib/protobuf/exceptions.rb +11 -0
- data/lib/protobuf/ext/eventmachine.rb +14 -0
- data/lib/protobuf/field/base_field.rb +240 -0
- data/lib/protobuf/field/bool_field.rb +36 -0
- data/lib/protobuf/field/bytes_field.rb +38 -0
- data/lib/protobuf/field/double_field.rb +19 -0
- data/lib/protobuf/field/enum_field.rb +50 -0
- data/lib/protobuf/field/extension_fields.rb +32 -0
- data/lib/protobuf/field/field_array.rb +65 -0
- data/lib/protobuf/field/fixed32_field.rb +19 -0
- data/lib/protobuf/field/fixed64_field.rb +22 -0
- data/lib/protobuf/field/float_field.rb +31 -0
- data/lib/protobuf/field/int32_field.rb +12 -0
- data/lib/protobuf/field/int64_field.rb +12 -0
- data/lib/protobuf/field/integer_field.rb +19 -0
- data/lib/protobuf/field/message_field.rb +53 -0
- data/lib/protobuf/field/sfixed32_field.rb +21 -0
- data/lib/protobuf/field/sfixed64_field.rb +24 -0
- data/lib/protobuf/field/signed_integer_field.rb +23 -0
- data/lib/protobuf/field/sint32_field.rb +12 -0
- data/lib/protobuf/field/sint64_field.rb +12 -0
- data/lib/protobuf/field/string_field.rb +14 -0
- data/lib/protobuf/field/uint32_field.rb +12 -0
- data/lib/protobuf/field/uint64_field.rb +12 -0
- data/lib/protobuf/field/varint_field.rb +61 -0
- data/lib/protobuf/field.rb +57 -0
- data/lib/protobuf/logger.rb +86 -0
- data/lib/protobuf/message/decoder.rb +83 -0
- data/lib/protobuf/message/encoder.rb +48 -0
- data/lib/protobuf/message/extend.rb +8 -0
- data/lib/protobuf/message/message.rb +1 -0
- data/lib/protobuf/message.rb +320 -0
- data/lib/protobuf/rpc/buffer.rb +79 -0
- data/lib/protobuf/rpc/client.rb +166 -0
- data/lib/protobuf/rpc/connector.rb +19 -0
- data/lib/protobuf/rpc/connectors/base.rb +38 -0
- data/lib/protobuf/rpc/connectors/common.rb +156 -0
- data/lib/protobuf/rpc/connectors/em_client.rb +84 -0
- data/lib/protobuf/rpc/connectors/eventmachine.rb +87 -0
- data/lib/protobuf/rpc/connectors/socket.rb +73 -0
- data/lib/protobuf/rpc/connectors/zmq.rb +69 -0
- data/lib/protobuf/rpc/error/client_error.rb +31 -0
- data/lib/protobuf/rpc/error/server_error.rb +43 -0
- data/lib/protobuf/rpc/error.rb +25 -0
- data/lib/protobuf/rpc/rpc.pb.rb +118 -0
- data/lib/protobuf/rpc/server.rb +89 -0
- data/lib/protobuf/rpc/servers/evented/server.rb +41 -0
- data/lib/protobuf/rpc/servers/evented_runner.rb +21 -0
- data/lib/protobuf/rpc/servers/socket/server.rb +111 -0
- data/lib/protobuf/rpc/servers/socket/worker.rb +66 -0
- data/lib/protobuf/rpc/servers/socket_runner.rb +27 -0
- data/lib/protobuf/rpc/servers/zmq/broker.rb +87 -0
- data/lib/protobuf/rpc/servers/zmq/server.rb +50 -0
- data/lib/protobuf/rpc/servers/zmq/util.rb +27 -0
- data/lib/protobuf/rpc/servers/zmq/worker.rb +60 -0
- data/lib/protobuf/rpc/servers/zmq_runner.rb +25 -0
- data/lib/protobuf/rpc/service.rb +173 -0
- data/lib/protobuf/rpc/service_dispatcher.rb +130 -0
- data/lib/protobuf/rpc/service_filters.rb +267 -0
- data/lib/protobuf/rpc/stat.rb +83 -0
- data/lib/protobuf/socket.rb +22 -0
- data/lib/protobuf/version.rb +4 -0
- data/lib/protobuf/wire_type.rb +10 -0
- data/lib/protobuf/zmq.rb +21 -0
- data/lib/protobuf.rb +86 -0
- data/proto/rpc.pb.rb +48 -0
- data/proto/rpc.proto +73 -0
- data/protobuf.gemspec +44 -0
- data/spec/benchmark/tasks.rb +179 -0
- data/spec/functional/embedded_service_spec.rb +7 -0
- data/spec/functional/evented_server_spec.rb +64 -0
- data/spec/functional/socket_server_spec.rb +58 -0
- data/spec/functional/zmq_server_spec.rb +58 -0
- data/spec/lib/protobuf/cli_spec.rb +212 -0
- data/spec/lib/protobuf/enum_spec.rb +98 -0
- data/spec/lib/protobuf/enum_value_spec.rb +15 -0
- data/spec/lib/protobuf/logger_spec.rb +131 -0
- data/spec/lib/protobuf/message/encoder_spec.rb +19 -0
- data/spec/lib/protobuf/message_spec.rb +209 -0
- data/spec/lib/protobuf/rpc/client_spec.rb +158 -0
- data/spec/lib/protobuf/rpc/connector_spec.rb +32 -0
- data/spec/lib/protobuf/rpc/connectors/base_spec.rb +50 -0
- data/spec/lib/protobuf/rpc/connectors/common_spec.rb +128 -0
- data/spec/lib/protobuf/rpc/connectors/socket_spec.rb +36 -0
- data/spec/lib/protobuf/rpc/connectors/zmq_spec.rb +22 -0
- data/spec/lib/protobuf/rpc/servers/evented_server_spec.rb +18 -0
- data/spec/lib/protobuf/rpc/servers/socket_server_spec.rb +43 -0
- data/spec/lib/protobuf/rpc/servers/zmq/broker_spec.rb +35 -0
- data/spec/lib/protobuf/rpc/servers/zmq/server_spec.rb +41 -0
- data/spec/lib/protobuf/rpc/servers/zmq/util_spec.rb +45 -0
- data/spec/lib/protobuf/rpc/servers/zmq/worker_spec.rb +44 -0
- data/spec/lib/protobuf/rpc/service_dispatcher_spec.rb +116 -0
- data/spec/lib/protobuf/rpc/service_filters_spec.rb +451 -0
- data/spec/lib/protobuf/rpc/service_spec.rb +165 -0
- data/spec/lib/protobuf_spec.rb +62 -0
- data/spec/spec_helper.rb +51 -0
- data/spec/support/all.rb +6 -0
- data/spec/support/server.rb +101 -0
- data/spec/support/test/enum.pb.rb +34 -0
- data/spec/support/test/enum.proto +12 -0
- data/spec/support/test/resource.pb.rb +58 -0
- data/spec/support/test/resource.proto +31 -0
- data/spec/support/test/resource_service.rb +14 -0
- data/spec/support/test_app_file.rb +2 -0
- data/spec/support/tolerance_matcher.rb +40 -0
- data/test/data/data.bin +3 -0
- data/test/data/data_source.py +14 -0
- data/test/data/types.bin +0 -0
- data/test/data/types_source.py +22 -0
- data/test/data/unk.png +0 -0
- data/test/proto/addressbook.pb.rb +66 -0
- data/test/proto/addressbook.proto +33 -0
- data/test/proto/addressbook_base.pb.rb +58 -0
- data/test/proto/addressbook_base.proto +26 -0
- data/test/proto/addressbook_ext.pb.rb +20 -0
- data/test/proto/addressbook_ext.proto +6 -0
- data/test/proto/collision.pb.rb +17 -0
- data/test/proto/collision.proto +5 -0
- data/test/proto/ext_collision.pb.rb +24 -0
- data/test/proto/ext_collision.proto +8 -0
- data/test/proto/ext_range.pb.rb +22 -0
- data/test/proto/ext_range.proto +7 -0
- data/test/proto/float_default.proto +10 -0
- data/test/proto/lowercase.pb.rb +30 -0
- data/test/proto/lowercase.proto +9 -0
- data/test/proto/merge.pb.rb +39 -0
- data/test/proto/merge.proto +15 -0
- data/test/proto/nested.pb.rb +30 -0
- data/test/proto/nested.proto +9 -0
- data/test/proto/optional_field.pb.rb +35 -0
- data/test/proto/optional_field.proto +12 -0
- data/test/proto/packed.pb.rb +22 -0
- data/test/proto/packed.proto +6 -0
- data/test/proto/rpc.proto +6 -0
- data/test/proto/types.pb.rb +84 -0
- data/test/proto/types.proto +37 -0
- data/test/test_addressbook.rb +56 -0
- data/test/test_enum_value.rb +41 -0
- data/test/test_extension.rb +36 -0
- data/test/test_lowercase.rb +11 -0
- data/test/test_message.rb +128 -0
- data/test/test_optional_field.rb +103 -0
- data/test/test_packed_field.rb +40 -0
- data/test/test_parse.rb +15 -0
- data/test/test_repeated_types.rb +132 -0
- data/test/test_serialize.rb +61 -0
- data/test/test_standard_message.rb +96 -0
- data/test/test_types.rb +226 -0
- metadata +461 -0
@@ -0,0 +1,22 @@
|
|
1
|
+
### Generated by rprotoc. DO NOT EDIT!
|
2
|
+
### <proto file: test/proto/ext_range.proto>
|
3
|
+
# message ExtRangeTest {
|
4
|
+
# extensions 1 to 10;
|
5
|
+
# }
|
6
|
+
#
|
7
|
+
# extend ExtRangeTest {
|
8
|
+
# optional string a = 11;
|
9
|
+
# }
|
10
|
+
|
11
|
+
require 'protobuf/message/message'
|
12
|
+
require 'protobuf/message/enum'
|
13
|
+
require 'protobuf/message/extend'
|
14
|
+
|
15
|
+
class ExtRangeTest < ::Protobuf::Message
|
16
|
+
defined_in __FILE__
|
17
|
+
extensions 1..10
|
18
|
+
end
|
19
|
+
class ExtRangeTest < ::Protobuf::Message
|
20
|
+
defined_in __FILE__
|
21
|
+
optional :string, :a, 11, :extension => true
|
22
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
message M {
|
2
|
+
optional float f = 1 [default = 4.2];
|
3
|
+
optional float g = 2 [default = -4.2];
|
4
|
+
optional float h = 3 [default = 4352];
|
5
|
+
optional float i = 4 [default = 23145.2 ];
|
6
|
+
optional float j = 5 [default = -5 ];
|
7
|
+
optional float k = 6 [default = +23 ];
|
8
|
+
optional float l = 7 [default = +23.42 ];
|
9
|
+
}
|
10
|
+
|
@@ -0,0 +1,30 @@
|
|
1
|
+
### Generated by rprotoc. DO NOT EDIT!
|
2
|
+
### <proto file: test/proto/lowercase.proto>
|
3
|
+
# package test.lowercase;
|
4
|
+
#
|
5
|
+
# message foo {
|
6
|
+
# message bar {
|
7
|
+
# }
|
8
|
+
# }
|
9
|
+
# message baaz {
|
10
|
+
# required foo.bar x = 1;
|
11
|
+
# }
|
12
|
+
|
13
|
+
require 'protobuf/message/message'
|
14
|
+
require 'protobuf/message/enum'
|
15
|
+
require 'protobuf/message/extend'
|
16
|
+
|
17
|
+
module Test
|
18
|
+
module Lowercase
|
19
|
+
class Foo < ::Protobuf::Message
|
20
|
+
defined_in __FILE__
|
21
|
+
class Bar < ::Protobuf::Message
|
22
|
+
defined_in __FILE__
|
23
|
+
end
|
24
|
+
end
|
25
|
+
class Baaz < ::Protobuf::Message
|
26
|
+
defined_in __FILE__
|
27
|
+
required :'foo::bar', :x, 1
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
### Generated by rprotoc. DO NOT EDIT!
|
2
|
+
### <proto file: test/proto/merge.proto>
|
3
|
+
# package test;
|
4
|
+
#
|
5
|
+
# message MergeMessage {
|
6
|
+
# message InnerMessage1 {
|
7
|
+
# required string name = 1;
|
8
|
+
# }
|
9
|
+
# message InnerMessage2 {
|
10
|
+
# required string name = 1;
|
11
|
+
# repeated InnerMessage1 repeate_message = 2;
|
12
|
+
# }
|
13
|
+
#
|
14
|
+
# required string name = 1;
|
15
|
+
# repeated InnerMessage1 repeate_message = 2;
|
16
|
+
# required InnerMessage2 require_message = 3;
|
17
|
+
# }
|
18
|
+
|
19
|
+
require 'protobuf/message/message'
|
20
|
+
require 'protobuf/message/enum'
|
21
|
+
require 'protobuf/message/extend'
|
22
|
+
|
23
|
+
module Test
|
24
|
+
class MergeMessage < ::Protobuf::Message
|
25
|
+
defined_in __FILE__
|
26
|
+
class InnerMessage1 < ::Protobuf::Message
|
27
|
+
defined_in __FILE__
|
28
|
+
required :string, :name, 1
|
29
|
+
end
|
30
|
+
class InnerMessage2 < ::Protobuf::Message
|
31
|
+
defined_in __FILE__
|
32
|
+
required :string, :name, 1
|
33
|
+
repeated :InnerMessage1, :repeate_message, 2
|
34
|
+
end
|
35
|
+
required :string, :name, 1
|
36
|
+
repeated :InnerMessage1, :repeate_message, 2
|
37
|
+
required :InnerMessage2, :require_message, 3
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
package test;
|
2
|
+
|
3
|
+
message MergeMessage {
|
4
|
+
message InnerMessage1 {
|
5
|
+
required string name = 1;
|
6
|
+
}
|
7
|
+
message InnerMessage2 {
|
8
|
+
required string name = 1;
|
9
|
+
repeated InnerMessage1 repeate_message = 2;
|
10
|
+
}
|
11
|
+
|
12
|
+
required string name = 1;
|
13
|
+
repeated InnerMessage1 repeate_message = 2;
|
14
|
+
required InnerMessage2 require_message = 3;
|
15
|
+
}
|
@@ -0,0 +1,30 @@
|
|
1
|
+
### Generated by rprotoc. DO NOT EDIT!
|
2
|
+
### <proto file: test/proto/nested.proto>
|
3
|
+
# package test.nested;
|
4
|
+
#
|
5
|
+
# message Foo {
|
6
|
+
# message Bar {
|
7
|
+
# }
|
8
|
+
# }
|
9
|
+
# message Baaz {
|
10
|
+
# optional Foo.Bar x = 1;
|
11
|
+
# }
|
12
|
+
|
13
|
+
require 'protobuf/message/message'
|
14
|
+
require 'protobuf/message/enum'
|
15
|
+
require 'protobuf/message/extend'
|
16
|
+
|
17
|
+
module Test
|
18
|
+
module Nested
|
19
|
+
class Foo < ::Protobuf::Message
|
20
|
+
defined_in __FILE__
|
21
|
+
class Bar < ::Protobuf::Message
|
22
|
+
defined_in __FILE__
|
23
|
+
end
|
24
|
+
end
|
25
|
+
class Baaz < ::Protobuf::Message
|
26
|
+
defined_in __FILE__
|
27
|
+
optional :'Foo::Bar', :x, 1
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
### Generated by rprotoc. DO NOT EDIT!
|
2
|
+
### <proto file: test/proto/optional_field.proto>
|
3
|
+
# package test.optional_field;
|
4
|
+
#
|
5
|
+
# message Message {
|
6
|
+
# enum Enum {
|
7
|
+
# A = 1;
|
8
|
+
# B = 2;
|
9
|
+
# }
|
10
|
+
# optional uint32 number = 1 [default = 20];
|
11
|
+
# optional string text = 2 [default = "default string"];
|
12
|
+
# optional Enum enum = 3 [default = B];
|
13
|
+
# optional int32 signed = 4 [default = -100];
|
14
|
+
# }
|
15
|
+
|
16
|
+
require 'protobuf/message/message'
|
17
|
+
require 'protobuf/message/enum'
|
18
|
+
require 'protobuf/message/extend'
|
19
|
+
|
20
|
+
module Test
|
21
|
+
module OptionalField
|
22
|
+
class Message < ::Protobuf::Message
|
23
|
+
defined_in __FILE__
|
24
|
+
class Enum < ::Protobuf::Enum
|
25
|
+
defined_in __FILE__
|
26
|
+
define :A, 1
|
27
|
+
define :B, 2
|
28
|
+
end
|
29
|
+
optional :uint32, :number, 1, :default => 20
|
30
|
+
optional :string, :text, 2, :default => "default string"
|
31
|
+
optional :Enum, :enum, 3, :default => :B
|
32
|
+
optional :int32, :signed, 4, :default => -100
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
package test.optional_field;
|
2
|
+
|
3
|
+
message Message {
|
4
|
+
enum Enum {
|
5
|
+
A = 1;
|
6
|
+
B = 2;
|
7
|
+
}
|
8
|
+
optional uint32 number = 1 [default = 20];
|
9
|
+
optional string text = 2 [default = "default string"];
|
10
|
+
optional Enum enum = 3 [default = B];
|
11
|
+
optional int32 signed = 4 [default = -100];
|
12
|
+
}
|
@@ -0,0 +1,22 @@
|
|
1
|
+
### Generated by rprotoc. DO NOT EDIT!
|
2
|
+
### <proto file: test/proto/packed.proto>
|
3
|
+
# package test.packed_field;
|
4
|
+
#
|
5
|
+
# message Message {
|
6
|
+
# repeated int32 a = 1 [packed = true];
|
7
|
+
# repeated fixed32 b = 2 [packed = true];
|
8
|
+
# }
|
9
|
+
|
10
|
+
require 'protobuf/message/message'
|
11
|
+
require 'protobuf/message/enum'
|
12
|
+
require 'protobuf/message/extend'
|
13
|
+
|
14
|
+
module Test
|
15
|
+
module PackedField
|
16
|
+
class Message < ::Protobuf::Message
|
17
|
+
defined_in __FILE__
|
18
|
+
repeated :int32, :a, 1, :packed => true
|
19
|
+
repeated :fixed32, :b, 2, :packed => true
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,84 @@
|
|
1
|
+
### Generated by rprotoc. DO NOT EDIT!
|
2
|
+
### <proto file: test/proto/types.proto>
|
3
|
+
# package test.types;
|
4
|
+
#
|
5
|
+
# message TestTypes {
|
6
|
+
# required double type1 = 1;
|
7
|
+
# required float type2 = 2;
|
8
|
+
# required int32 type3 = 3;
|
9
|
+
# required int64 type4 = 4;
|
10
|
+
# required uint32 type5 = 5;
|
11
|
+
# required uint64 type6 = 6;
|
12
|
+
# required sint32 type7 = 7;
|
13
|
+
# required sint64 type8 = 8;
|
14
|
+
# required fixed32 type9 = 9;
|
15
|
+
# required fixed64 type10 = 10;
|
16
|
+
# required bool type11 = 11;
|
17
|
+
# required string type12 = 12;
|
18
|
+
# required bytes type13 = 13;
|
19
|
+
# required sfixed32 type14 = 14;
|
20
|
+
# required sfixed64 type15 = 15;
|
21
|
+
# }
|
22
|
+
#
|
23
|
+
# message RepeatedTypes {
|
24
|
+
# repeated double type1 = 1;
|
25
|
+
# repeated float type2 = 2;
|
26
|
+
# repeated int32 type3 = 3;
|
27
|
+
# repeated int64 type4 = 4;
|
28
|
+
# repeated uint32 type5 = 5;
|
29
|
+
# repeated uint64 type6 = 6;
|
30
|
+
# repeated sint32 type7 = 7;
|
31
|
+
# repeated sint64 type8 = 8;
|
32
|
+
# repeated fixed32 type9 = 9;
|
33
|
+
# repeated fixed64 type10 = 10;
|
34
|
+
# repeated bool type11 = 11;
|
35
|
+
# repeated string type12 = 12;
|
36
|
+
# repeated bytes type13 = 13;
|
37
|
+
# repeated sfixed32 type14 = 14;
|
38
|
+
# repeated sfixed64 type15 = 15;
|
39
|
+
# }
|
40
|
+
|
41
|
+
require 'protobuf/message/message'
|
42
|
+
require 'protobuf/message/enum'
|
43
|
+
require 'protobuf/message/extend'
|
44
|
+
|
45
|
+
module Test
|
46
|
+
module Types
|
47
|
+
class TestTypes < ::Protobuf::Message
|
48
|
+
defined_in __FILE__
|
49
|
+
required :double, :type1, 1
|
50
|
+
required :float, :type2, 2
|
51
|
+
required :int32, :type3, 3
|
52
|
+
required :int64, :type4, 4
|
53
|
+
required :uint32, :type5, 5
|
54
|
+
required :uint64, :type6, 6
|
55
|
+
required :sint32, :type7, 7
|
56
|
+
required :sint64, :type8, 8
|
57
|
+
required :fixed32, :type9, 9
|
58
|
+
required :fixed64, :type10, 10
|
59
|
+
required :bool, :type11, 11
|
60
|
+
required :string, :type12, 12
|
61
|
+
required :bytes, :type13, 13
|
62
|
+
required :sfixed32, :type14, 14
|
63
|
+
required :sfixed64, :type15, 15
|
64
|
+
end
|
65
|
+
class RepeatedTypes < ::Protobuf::Message
|
66
|
+
defined_in __FILE__
|
67
|
+
repeated :double, :type1, 1
|
68
|
+
repeated :float, :type2, 2
|
69
|
+
repeated :int32, :type3, 3
|
70
|
+
repeated :int64, :type4, 4
|
71
|
+
repeated :uint32, :type5, 5
|
72
|
+
repeated :uint64, :type6, 6
|
73
|
+
repeated :sint32, :type7, 7
|
74
|
+
repeated :sint64, :type8, 8
|
75
|
+
repeated :fixed32, :type9, 9
|
76
|
+
repeated :fixed64, :type10, 10
|
77
|
+
repeated :bool, :type11, 11
|
78
|
+
repeated :string, :type12, 12
|
79
|
+
repeated :bytes, :type13, 13
|
80
|
+
repeated :sfixed32, :type14, 14
|
81
|
+
repeated :sfixed64, :type15, 15
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
package test.types;
|
2
|
+
|
3
|
+
message TestTypes {
|
4
|
+
required double type1 = 1;
|
5
|
+
required float type2 = 2;
|
6
|
+
required int32 type3 = 3;
|
7
|
+
required int64 type4 = 4;
|
8
|
+
required uint32 type5 = 5;
|
9
|
+
required uint64 type6 = 6;
|
10
|
+
required sint32 type7 = 7;
|
11
|
+
required sint64 type8 = 8;
|
12
|
+
required fixed32 type9 = 9;
|
13
|
+
required fixed64 type10 = 10;
|
14
|
+
required bool type11 = 11;
|
15
|
+
required string type12 = 12;
|
16
|
+
required bytes type13 = 13;
|
17
|
+
required sfixed32 type14 = 14;
|
18
|
+
required sfixed64 type15 = 15;
|
19
|
+
}
|
20
|
+
|
21
|
+
message RepeatedTypes {
|
22
|
+
repeated double type1 = 1;
|
23
|
+
repeated float type2 = 2;
|
24
|
+
repeated int32 type3 = 3;
|
25
|
+
repeated int64 type4 = 4;
|
26
|
+
repeated uint32 type5 = 5;
|
27
|
+
repeated uint64 type6 = 6;
|
28
|
+
repeated sint32 type7 = 7;
|
29
|
+
repeated sint64 type8 = 8;
|
30
|
+
repeated fixed32 type9 = 9;
|
31
|
+
repeated fixed64 type10 = 10;
|
32
|
+
repeated bool type11 = 11;
|
33
|
+
repeated string type12 = 12;
|
34
|
+
repeated bytes type13 = 13;
|
35
|
+
repeated sfixed32 type14 = 14;
|
36
|
+
repeated sfixed64 type15 = 15;
|
37
|
+
}
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'protobuf/message/message'
|
3
|
+
require 'protobuf/enum'
|
4
|
+
require 'test/proto/addressbook.pb'
|
5
|
+
|
6
|
+
class AddressbookTest < Test::Unit::TestCase
|
7
|
+
def test_enum
|
8
|
+
phone_number = Tutorial::Person::PhoneNumber.new
|
9
|
+
assert_equal(Tutorial::Person::PhoneType::HOME, phone_number.type)
|
10
|
+
phone_number.type = Tutorial::Person::PhoneType::MOBILE
|
11
|
+
assert_equal(0, phone_number.type)
|
12
|
+
phone_number.type = Tutorial::Person::PhoneType::HOME
|
13
|
+
assert_equal(1, phone_number.type)
|
14
|
+
phone_number.type = Tutorial::Person::PhoneType::WORK
|
15
|
+
assert_equal(2, phone_number.type)
|
16
|
+
assert_raise(TypeError) do
|
17
|
+
phone_number.type = 3
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_symbol_enum
|
22
|
+
phone_number = Tutorial::Person::PhoneNumber.new
|
23
|
+
assert_equal(Tutorial::Person::PhoneType::HOME, phone_number.type)
|
24
|
+
phone_number.type = :MOBILE
|
25
|
+
assert_equal(0, phone_number.type)
|
26
|
+
phone_number.type = :HOME
|
27
|
+
assert_equal(1, phone_number.type)
|
28
|
+
phone_number.type = :WORK
|
29
|
+
assert_equal(2, phone_number.type)
|
30
|
+
assert_raise(TypeError) do
|
31
|
+
phone_number.type = :UNKNOWN
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_initial_value
|
36
|
+
person = Tutorial::Person.new
|
37
|
+
assert_nil(person.name)
|
38
|
+
assert_nil(person.id)
|
39
|
+
assert_equal([], person.phone)
|
40
|
+
assert_equal('', person.email)
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_repeatable
|
44
|
+
address_book = Tutorial::AddressBook.new
|
45
|
+
assert_equal([], address_book.person)
|
46
|
+
assert_instance_of(Protobuf::Field::FieldArray, address_book.person)
|
47
|
+
address_book.person << Tutorial::Person.new
|
48
|
+
assert_equal(1, address_book.person.size)
|
49
|
+
assert_raise(TypeError) do
|
50
|
+
address_book.person << 1
|
51
|
+
end
|
52
|
+
assert_equal(1, address_book.person.size)
|
53
|
+
address_book.person << Tutorial::Person.new
|
54
|
+
assert_equal(2, address_book.person.size)
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'protobuf/message/message'
|
3
|
+
require 'protobuf/enum'
|
4
|
+
require 'test/proto/addressbook.pb'
|
5
|
+
require 'test/proto/addressbook_base.pb'
|
6
|
+
|
7
|
+
class EnumValueTest < Test::Unit::TestCase
|
8
|
+
def test_enum_value
|
9
|
+
e = Protobuf::EnumValue.new(Object, :name, 100)
|
10
|
+
assert_kind_of(Protobuf::EnumValue, e)
|
11
|
+
assert_equal(:name, e.name)
|
12
|
+
assert_equal(100, e.value)
|
13
|
+
assert_equal('name', e.to_s)
|
14
|
+
assert_equal('name', "#{e}")
|
15
|
+
assert(e == 100)
|
16
|
+
assert(100 == e)
|
17
|
+
assert(101, e + 1)
|
18
|
+
assert(101, 1 + e)
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_enum_field_and_enum_value
|
22
|
+
phone_number = Tutorial::Person::PhoneNumber.new
|
23
|
+
|
24
|
+
assert_kind_of(Protobuf::EnumValue, phone_number.type)
|
25
|
+
assert_equal(Tutorial::Person::PhoneType::HOME, phone_number.type)
|
26
|
+
|
27
|
+
phone_number.type = 1
|
28
|
+
assert_kind_of(Protobuf::EnumValue, phone_number.type)
|
29
|
+
assert_equal(Tutorial::Person::PhoneType::HOME, phone_number.type)
|
30
|
+
assert_equal(1, phone_number.type)
|
31
|
+
|
32
|
+
phone_number.type = :HOME
|
33
|
+
assert_kind_of(Protobuf::EnumValue, phone_number.type)
|
34
|
+
assert_equal(Tutorial::Person::PhoneType::HOME, phone_number.type)
|
35
|
+
assert_equal(1, phone_number.type)
|
36
|
+
|
37
|
+
assert_raise(TypeError) do
|
38
|
+
phone_number.type = TutorialExt::Person::PhoneType::HOME
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'test/proto/addressbook_ext.pb'
|
3
|
+
|
4
|
+
class ExtensionTest < Test::Unit::TestCase
|
5
|
+
def test_accessor
|
6
|
+
assert(TutorialExt::Person.extension_fields.to_a.map{|t, f| f.name}.include?(:age))
|
7
|
+
person = TutorialExt::Person.new
|
8
|
+
assert_nothing_raised {person.age = 100}
|
9
|
+
assert_equal(100, person.age)
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_serialize
|
13
|
+
# serialize to string
|
14
|
+
person = TutorialExt::Person.new
|
15
|
+
person.id = 1234
|
16
|
+
person.age = 70
|
17
|
+
person.name = 'John Doe'
|
18
|
+
person.email = 'jdoe@example.com'
|
19
|
+
phone = TutorialExt::Person::PhoneNumber.new
|
20
|
+
phone.number = '555-4321'
|
21
|
+
phone.type = TutorialExt::Person::PhoneType::HOME
|
22
|
+
person.phone << phone
|
23
|
+
serialized_string = person.serialize_to_string
|
24
|
+
|
25
|
+
# parse the serialized string
|
26
|
+
person2 = TutorialExt::Person.new
|
27
|
+
person2.parse_from_string serialized_string
|
28
|
+
assert_equal(1234, person2.id)
|
29
|
+
assert_equal(70, person2.age)
|
30
|
+
assert_equal('John Doe', person2.name)
|
31
|
+
assert_equal('jdoe@example.com', person2.email)
|
32
|
+
assert_equal(1, person2.phone.size)
|
33
|
+
assert_equal('555-4321', person2.phone[0].number)
|
34
|
+
assert_equal(TutorialExt::Person::PhoneType::HOME, person2.phone[0].type)
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'test/proto/lowercase.pb'
|
3
|
+
|
4
|
+
class LowercaseTest < Test::Unit::TestCase
|
5
|
+
def test_lowercase
|
6
|
+
message = nil
|
7
|
+
assert_nothing_raised { message = Test::Lowercase::Baaz.new }
|
8
|
+
assert_nothing_raised { message.x = Test::Lowercase::Foo::Bar.new }
|
9
|
+
assert_equal(Test::Lowercase::Foo::Bar, message.get_field_by_name(:x).type)
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,128 @@
|
|
1
|
+
require 'protobuf/message/message'
|
2
|
+
require 'test/proto/addressbook.pb'
|
3
|
+
require 'test/proto/merge.pb'
|
4
|
+
require 'test/unit'
|
5
|
+
|
6
|
+
# It should not conflict with Test::InnerMessage1 which is included in merge.proto
|
7
|
+
class InnerMessage1; end
|
8
|
+
|
9
|
+
class MessageTest < Test::Unit::TestCase
|
10
|
+
def test_equality
|
11
|
+
person1 = Tutorial::Person.new :name => 'ando'
|
12
|
+
person2 = Tutorial::Person.new :name => 'ando'
|
13
|
+
person3 = Tutorial::Person.new :name => 'Ando'
|
14
|
+
assert(person1 == person2)
|
15
|
+
assert(person1 != person3)
|
16
|
+
assert(person1 != 'ando')
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_bracketed_access
|
20
|
+
person = Tutorial::Person.new
|
21
|
+
name_tag = 1
|
22
|
+
person[name_tag] = 'Ichiro'
|
23
|
+
assert_equal('Ichiro', person.name)
|
24
|
+
assert_equal('Ichiro', person[name_tag])
|
25
|
+
|
26
|
+
person[:id] = 100
|
27
|
+
assert_equal(100, person.id)
|
28
|
+
person['id'] = 200
|
29
|
+
assert_equal(200, person.id)
|
30
|
+
assert_equal(200, person[:id])
|
31
|
+
assert_equal(200, person['id'])
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_initialize_with_hash
|
35
|
+
person = Tutorial::Person.new(:name => 'Jiro', :id => 300, :email => 'jiro@ema.il')
|
36
|
+
assert_equal('Jiro', person.name)
|
37
|
+
assert_equal(300, person.id)
|
38
|
+
assert_equal('jiro@ema.il', person.email)
|
39
|
+
|
40
|
+
# initialize with array of hash
|
41
|
+
person = Tutorial::Person.new(:phone => [{:number => 'phone1'}, {:number => 'phone2'}])
|
42
|
+
assert_equal('phone1', person.phone[0].number)
|
43
|
+
assert_equal('phone2', person.phone[1].number)
|
44
|
+
|
45
|
+
# initalize with hash in hash
|
46
|
+
message = Test::MergeMessage.new(:require_message => { :name => 'name1', :repeate_message => [{:name => 'name2'}] })
|
47
|
+
assert_equal('name1', message.require_message.name)
|
48
|
+
assert_equal('name2', message.require_message.repeate_message[0].name)
|
49
|
+
|
50
|
+
message.require_message = { :name => 'name21' }
|
51
|
+
message.require_message.repeate_message = [ {:name => 'name22'} ]
|
52
|
+
assert_equal('name21', message.require_message.name)
|
53
|
+
assert_equal('name22', message.require_message.repeate_message[0].name)
|
54
|
+
assert_equal(1, message.require_message.repeate_message.size)
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_defined_filenames
|
58
|
+
assert(Tutorial::Person.defined_filenames)
|
59
|
+
assert_equal(1, Tutorial::Person.defined_filenames.size)
|
60
|
+
assert_match(%r{/.*/proto/addressbook\.pb\.rb}, Tutorial::Person.defined_filenames.first)
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_proto_filenames
|
64
|
+
assert(Tutorial::Person.proto_filenames)
|
65
|
+
assert_equal(1, Tutorial::Person.proto_filenames.size)
|
66
|
+
assert_equal('test/proto/addressbook.proto', Tutorial::Person.proto_filenames.first)
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_proto_contents
|
70
|
+
assert_equal(<<-EOS.strip, Tutorial::Person.proto_contents.values.first.strip)
|
71
|
+
package tutorial;
|
72
|
+
|
73
|
+
message Person {
|
74
|
+
required string name = 1;
|
75
|
+
required int32 id = 2;
|
76
|
+
optional string email = 3;
|
77
|
+
|
78
|
+
enum PhoneType {
|
79
|
+
MOBILE = 0;
|
80
|
+
HOME = 1;
|
81
|
+
WORK = 2;
|
82
|
+
}
|
83
|
+
|
84
|
+
message PhoneNumber {
|
85
|
+
required string number = 1;
|
86
|
+
optional PhoneType type = 2 [default = HOME];
|
87
|
+
}
|
88
|
+
|
89
|
+
repeated PhoneNumber phone = 4;
|
90
|
+
optional uint32 age = 5 [default = 20];
|
91
|
+
|
92
|
+
extensions 100 to 200;
|
93
|
+
}
|
94
|
+
|
95
|
+
/*
|
96
|
+
extend Person {
|
97
|
+
optional int32 age = 100;
|
98
|
+
}
|
99
|
+
*/
|
100
|
+
|
101
|
+
message AddressBook {
|
102
|
+
repeated Person person = 1;
|
103
|
+
}
|
104
|
+
EOS
|
105
|
+
end
|
106
|
+
|
107
|
+
def test_merge_field
|
108
|
+
inner_message1_2 = Test::MergeMessage::InnerMessage2.new(:name => 'name12')
|
109
|
+
inner_message1_2.repeate_message << Test::MergeMessage::InnerMessage1.new(:name => 'name121')
|
110
|
+
message1 = Test::MergeMessage.new(:name => 'name1', :require_message => inner_message1_2)
|
111
|
+
message1.repeate_message << Test::MergeMessage::InnerMessage1.new(:name => 'name11')
|
112
|
+
|
113
|
+
inner_message2_2 = Test::MergeMessage::InnerMessage2.new(:name => 'name22')
|
114
|
+
inner_message2_2.repeate_message << Test::MergeMessage::InnerMessage1.new(:name => 'name221')
|
115
|
+
message2 = Test::MergeMessage.new(:name => 'name2', :require_message => inner_message2_2)
|
116
|
+
message2.repeate_message << Test::MergeMessage::InnerMessage1.new(:name => 'name21')
|
117
|
+
|
118
|
+
message1.merge_from(message2)
|
119
|
+
assert_equal('name2', message1.name)
|
120
|
+
assert_equal(2, message1.repeate_message.size)
|
121
|
+
assert_equal('name11', message1.repeate_message[0].name)
|
122
|
+
assert_equal('name21', message1.repeate_message[1].name)
|
123
|
+
assert_equal('name22', message1.require_message.name)
|
124
|
+
assert_equal(2, message1.require_message.repeate_message.size)
|
125
|
+
assert_equal('name121', message1.require_message.repeate_message[0].name)
|
126
|
+
assert_equal('name221', message1.require_message.repeate_message[1].name)
|
127
|
+
end
|
128
|
+
end
|