Index: media/base/video_frame_unittest.cc |
diff --git a/media/base/video_frame_unittest.cc b/media/base/video_frame_unittest.cc |
index f2635f9650081a7a2ae839ac233b0aa63d04884f..5c2159f65f73a4f7d3bd7b271cadd8f4981f1952 100644 |
--- a/media/base/video_frame_unittest.cc |
+++ b/media/base/video_frame_unittest.cc |
@@ -328,4 +328,83 @@ TEST(VideoFrame, ZeroInitialized) { |
EXPECT_EQ(0, frame->data(i)[0]); |
} |
+TEST(VideoFrameMetadata, SetAndThenGetAllKeysForAllTypes) { |
+ VideoFrameMetadata metadata; |
+ |
+ for (int i = 0; i < VideoFrameMetadata::NUM_KEYS; ++i) { |
+ const VideoFrameMetadata::Key key = static_cast<VideoFrameMetadata::Key>(i); |
+ |
+ EXPECT_FALSE(metadata.HasKey(key)); |
+ metadata.SetBoolean(key, true); |
+ EXPECT_TRUE(metadata.HasKey(key)); |
+ bool bool_value = false; |
+ EXPECT_TRUE(metadata.GetBoolean(key, &bool_value)); |
+ EXPECT_EQ(true, bool_value); |
+ metadata.Clear(); |
+ |
+ EXPECT_FALSE(metadata.HasKey(key)); |
+ metadata.SetInteger(key, i); |
+ EXPECT_TRUE(metadata.HasKey(key)); |
+ int int_value = -999; |
+ EXPECT_TRUE(metadata.GetInteger(key, &int_value)); |
+ EXPECT_EQ(i, int_value); |
+ metadata.Clear(); |
+ |
+ EXPECT_FALSE(metadata.HasKey(key)); |
+ metadata.SetDouble(key, 3.14 * i); |
+ EXPECT_TRUE(metadata.HasKey(key)); |
+ double double_value = -999.99; |
+ EXPECT_TRUE(metadata.GetDouble(key, &double_value)); |
+ EXPECT_EQ(3.14 * i, double_value); |
+ metadata.Clear(); |
+ |
+ EXPECT_FALSE(metadata.HasKey(key)); |
+ metadata.SetString(key, base::StringPrintf("\xfe%d\xff", i)); |
+ EXPECT_TRUE(metadata.HasKey(key)); |
+ std::string string_value; |
+ EXPECT_TRUE(metadata.GetString(key, &string_value)); |
+ EXPECT_EQ(base::StringPrintf("\xfe%d\xff", i), string_value); |
+ metadata.Clear(); |
+ |
+ EXPECT_FALSE(metadata.HasKey(key)); |
+ metadata.SetTimeTicks(key, base::TimeTicks::FromInternalValue(~(0LL) + i)); |
+ EXPECT_TRUE(metadata.HasKey(key)); |
+ base::TimeTicks ticks_value; |
+ EXPECT_TRUE(metadata.GetTimeTicks(key, &ticks_value)); |
+ EXPECT_EQ(base::TimeTicks::FromInternalValue(~(0LL) + i), ticks_value); |
+ metadata.Clear(); |
+ |
+ EXPECT_FALSE(metadata.HasKey(key)); |
+ metadata.SetValue(key, |
+ scoped_ptr<base::Value>(base::Value::CreateNullValue())); |
+ EXPECT_TRUE(metadata.HasKey(key)); |
+ const base::Value* const null_value = metadata.GetValue(key); |
+ EXPECT_TRUE(null_value); |
+ EXPECT_EQ(base::Value::TYPE_NULL, null_value->GetType()); |
+ metadata.Clear(); |
+ } |
+} |
+ |
+TEST(VideoFrameMetadata, PassMetadataViaIntermediary) { |
+ VideoFrameMetadata expected; |
+ for (int i = 0; i < VideoFrameMetadata::NUM_KEYS; ++i) { |
+ const VideoFrameMetadata::Key key = static_cast<VideoFrameMetadata::Key>(i); |
+ expected.SetInteger(key, i); |
+ } |
+ |
+ base::DictionaryValue tmp; |
+ expected.MergeInternalValuesInto(&tmp); |
+ EXPECT_EQ(static_cast<size_t>(VideoFrameMetadata::NUM_KEYS), tmp.size()); |
+ |
+ VideoFrameMetadata result; |
+ result.MergeInternalValuesFrom(tmp); |
+ |
+ for (int i = 0; i < VideoFrameMetadata::NUM_KEYS; ++i) { |
+ const VideoFrameMetadata::Key key = static_cast<VideoFrameMetadata::Key>(i); |
+ int value = -1; |
+ EXPECT_TRUE(result.GetInteger(key, &value)); |
+ EXPECT_EQ(i, value); |
+ } |
+} |
+ |
} // namespace media |