Imported Upstream version 3.8.0
[platform/upstream/protobuf.git] / ruby / tests / well_known_types_test.rb
index bd24c32..f35f7b1 100644 (file)
@@ -60,6 +60,9 @@ class TestWellKnownTypes < Test::Unit::TestCase
     assert_equal(Google::Protobuf::ListValue.from_a(sublist),
                  struct["sublist"])
 
+    assert_equal true, struct.has_key?("null")
+    assert_equal false, struct.has_key?("missing_key")
+
     should_equal = {
       "number" => 12345,
       "boolean-true" => true,
@@ -82,6 +85,9 @@ class TestWellKnownTypes < Test::Unit::TestCase
     # to_h returns a fully-flattened Ruby structure (Hash and Array).
     assert_equal(should_equal, struct.to_h)
 
+    # Test that we can safely access a missing key
+    assert_equal(nil, struct["missing_key"])
+
     # Test that we can assign Struct and ListValue directly.
     struct["substruct"] = Google::Protobuf::Struct.from_hash(substruct)
     struct["sublist"] = Google::Protobuf::ListValue.from_a(sublist)
@@ -120,11 +126,17 @@ class TestWellKnownTypes < Test::Unit::TestCase
   end
 
   def test_any
-    any = Google::Protobuf::Any.new
     ts = Google::Protobuf::Timestamp.new(seconds: 12345, nanos: 6789)
+
+    any = Google::Protobuf::Any.new
     any.pack(ts)
 
     assert any.is(Google::Protobuf::Timestamp)
     assert_equal ts, any.unpack(Google::Protobuf::Timestamp)
+
+    any = Google::Protobuf::Any.pack(ts)
+
+    assert any.is(Google::Protobuf::Timestamp)
+    assert_equal ts, any.unpack(Google::Protobuf::Timestamp)
   end
 end