| Index: third_party/grpc/src/ruby/spec/time_consts_spec.rb
|
| diff --git a/third_party/protobuf/ruby/lib/google/protobuf.rb b/third_party/grpc/src/ruby/spec/time_consts_spec.rb
|
| similarity index 50%
|
| copy from third_party/protobuf/ruby/lib/google/protobuf.rb
|
| copy to third_party/grpc/src/ruby/spec/time_consts_spec.rb
|
| index f0eb626824f23b6dcd858ec820d57bcd246439de..871e0e241acacb7b27796c387c9b5976d3403547 100644
|
| --- a/third_party/protobuf/ruby/lib/google/protobuf.rb
|
| +++ b/third_party/grpc/src/ruby/spec/time_consts_spec.rb
|
| @@ -1,6 +1,5 @@
|
| -# Protocol Buffers - Google's data interchange format
|
| -# Copyright 2008 Google Inc. All rights reserved.
|
| -# https://developers.google.com/protocol-buffers/
|
| +# Copyright 2015, Google Inc.
|
| +# All rights reserved.
|
| #
|
| # Redistribution and use in source and binary forms, with or without
|
| # modification, are permitted provided that the following conditions are
|
| @@ -28,45 +27,63 @@
|
| # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
| -# require mixins before we hook them into the java & c code
|
| -require 'google/protobuf/message_exts'
|
| +require 'grpc'
|
|
|
| -# We define these before requiring the platform-specific modules.
|
| -# That way the module init can grab references to these.
|
| -module Google
|
| - module Protobuf
|
| - class Error < StandardError; end
|
| - class ParseError < Error; end
|
| +TimeConsts = GRPC::Core::TimeConsts
|
| +
|
| +describe TimeConsts do
|
| + before(:each) do
|
| + @known_consts = [:ZERO, :INFINITE_FUTURE, :INFINITE_PAST].sort
|
| end
|
| -end
|
|
|
| -if RUBY_PLATFORM == "java"
|
| - require 'json'
|
| - require 'google/protobuf_java'
|
| -else
|
| - require 'google/protobuf_c'
|
| -end
|
| + it 'should have all the known types' do
|
| + expect(TimeConsts.constants.collect.sort).to eq(@known_consts)
|
| + end
|
|
|
| -require 'google/protobuf/repeated_field'
|
| + describe '#to_time' do
|
| + it 'converts each constant to a Time' do
|
| + m = TimeConsts
|
| + m.constants.each do |c|
|
| + expect(m.const_get(c).to_time).to be_a(Time)
|
| + end
|
| + end
|
| + end
|
| +end
|
|
|
| -module Google
|
| - module Protobuf
|
| +describe '#from_relative_time' do
|
| + it 'cannot handle arbitrary objects' do
|
| + expect { TimeConsts.from_relative_time(Object.new) }.to raise_error
|
| + end
|
|
|
| - def self.encode(msg)
|
| - msg.to_proto
|
| + it 'preserves TimeConsts' do
|
| + m = TimeConsts
|
| + m.constants.each do |c|
|
| + const = m.const_get(c)
|
| + expect(TimeConsts.from_relative_time(const)).to be(const)
|
| end
|
| + end
|
|
|
| - def self.encode_json(msg)
|
| - msg.to_json
|
| - end
|
| + it 'converts 0 to TimeConsts::ZERO' do
|
| + expect(TimeConsts.from_relative_time(0)).to eq(TimeConsts::ZERO)
|
| + end
|
|
|
| - def self.decode(klass, proto)
|
| - klass.decode(proto)
|
| - end
|
| + it 'converts nil to TimeConsts::ZERO' do
|
| + expect(TimeConsts.from_relative_time(nil)).to eq(TimeConsts::ZERO)
|
| + end
|
|
|
| - def self.decode_json(klass, json)
|
| - klass.decode_json(json)
|
| + it 'converts negative values to TimeConsts::INFINITE_FUTURE' do
|
| + [-1, -3.2, -1e6].each do |t|
|
| + y = TimeConsts.from_relative_time(t)
|
| + expect(y).to eq(TimeConsts::INFINITE_FUTURE)
|
| end
|
| + end
|
|
|
| + it 'converts a positive value to an absolute time' do
|
| + epsilon = 1
|
| + [1, 3.2, 1e6].each do |t|
|
| + want = Time.now + t
|
| + abs = TimeConsts.from_relative_time(t)
|
| + expect(abs.to_f).to be_within(epsilon).of(want.to_f)
|
| + end
|
| end
|
| end
|
|
|