
Bug: 1113287 Change-Id: I0dd3b14bc9538b71686e9dbac9b258eaec0a2015 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2356749 Reviewed-by: Michael Crouse <mcrouse@chromium.org> Commit-Queue: Sophie Chang <sophiechang@chromium.org> Cr-Commit-Position: refs/heads/master@{#798728}
103 lines
4.1 KiB
C++
103 lines
4.1 KiB
C++
// Copyright 2020 The Chromium Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#include "components/optimization_guide/optimization_metadata.h"
|
|
|
|
#include "components/optimization_guide/proto/delay_async_script_execution_metadata.pb.h"
|
|
#include "testing/gtest/include/gtest/gtest.h"
|
|
|
|
namespace optimization_guide {
|
|
|
|
TEST(OptimizationMetadataTest, ParsedMetadataAnyMetadataNotPopulatedTest) {
|
|
OptimizationMetadata optimization_metadata;
|
|
|
|
base::Optional<proto::DelayAsyncScriptExecutionMetadata>
|
|
parsed_dase_metadata =
|
|
optimization_metadata
|
|
.ParsedMetadata<proto::DelayAsyncScriptExecutionMetadata>();
|
|
EXPECT_FALSE(parsed_dase_metadata.has_value());
|
|
}
|
|
|
|
TEST(OptimizationMetadataTest, ParsedMetadataNoTypeURLTest) {
|
|
proto::Any any_metadata;
|
|
proto::DelayAsyncScriptExecutionMetadata dase_metadata;
|
|
dase_metadata.set_delay_type(proto::DELAY_TYPE_FINISHED_PARSING);
|
|
dase_metadata.SerializeToString(any_metadata.mutable_value());
|
|
OptimizationMetadata optimization_metadata;
|
|
optimization_metadata.set_any_metadata(any_metadata);
|
|
|
|
base::Optional<proto::DelayAsyncScriptExecutionMetadata>
|
|
parsed_dase_metadata =
|
|
optimization_metadata
|
|
.ParsedMetadata<proto::DelayAsyncScriptExecutionMetadata>();
|
|
EXPECT_FALSE(parsed_dase_metadata.has_value());
|
|
}
|
|
|
|
TEST(OptimizationMetadataTest, ParsedMetadataMismatchedTypeTest) {
|
|
proto::Any any_metadata;
|
|
any_metadata.set_type_url("type.googleapis.com/com.foo.Whatever");
|
|
proto::DelayAsyncScriptExecutionMetadata dase_metadata;
|
|
dase_metadata.set_delay_type(proto::DELAY_TYPE_FINISHED_PARSING);
|
|
dase_metadata.SerializeToString(any_metadata.mutable_value());
|
|
OptimizationMetadata optimization_metadata;
|
|
optimization_metadata.set_any_metadata(any_metadata);
|
|
|
|
base::Optional<proto::DelayAsyncScriptExecutionMetadata>
|
|
parsed_dase_metadata =
|
|
optimization_metadata
|
|
.ParsedMetadata<proto::DelayAsyncScriptExecutionMetadata>();
|
|
EXPECT_FALSE(parsed_dase_metadata.has_value());
|
|
}
|
|
|
|
TEST(OptimizationMetadataTest, ParsedMetadataNotSerializableTest) {
|
|
proto::Any any_metadata;
|
|
any_metadata.set_type_url(
|
|
"type.googleapis.com/com.foo.DelayAsyncScriptExecutionMetadata");
|
|
any_metadata.set_value("12345678garbage");
|
|
OptimizationMetadata optimization_metadata;
|
|
optimization_metadata.set_any_metadata(any_metadata);
|
|
|
|
base::Optional<proto::DelayAsyncScriptExecutionMetadata>
|
|
parsed_dase_metadata =
|
|
optimization_metadata
|
|
.ParsedMetadata<proto::DelayAsyncScriptExecutionMetadata>();
|
|
EXPECT_FALSE(parsed_dase_metadata.has_value());
|
|
}
|
|
|
|
TEST(OptimizationMetadataTest, ParsedMetadataTest) {
|
|
proto::Any any_metadata;
|
|
any_metadata.set_type_url(
|
|
"type.googleapis.com/com.foo.DelayAsyncScriptExecutionMetadata");
|
|
proto::DelayAsyncScriptExecutionMetadata dase_metadata;
|
|
dase_metadata.set_delay_type(proto::DELAY_TYPE_FINISHED_PARSING);
|
|
dase_metadata.SerializeToString(any_metadata.mutable_value());
|
|
OptimizationMetadata optimization_metadata;
|
|
optimization_metadata.set_any_metadata(any_metadata);
|
|
|
|
base::Optional<proto::DelayAsyncScriptExecutionMetadata>
|
|
parsed_dase_metadata =
|
|
optimization_metadata
|
|
.ParsedMetadata<proto::DelayAsyncScriptExecutionMetadata>();
|
|
EXPECT_TRUE(parsed_dase_metadata.has_value());
|
|
EXPECT_EQ(parsed_dase_metadata->delay_type(),
|
|
proto::DELAY_TYPE_FINISHED_PARSING);
|
|
}
|
|
|
|
TEST(OptimizationMetadataTest, SetAnyMetadataForTestingTest) {
|
|
proto::DelayAsyncScriptExecutionMetadata dase_metadata;
|
|
dase_metadata.set_delay_type(proto::DELAY_TYPE_FINISHED_PARSING);
|
|
OptimizationMetadata optimization_metadata;
|
|
optimization_metadata.SetAnyMetadataForTesting(dase_metadata);
|
|
|
|
base::Optional<proto::DelayAsyncScriptExecutionMetadata>
|
|
parsed_dase_metadata =
|
|
optimization_metadata
|
|
.ParsedMetadata<proto::DelayAsyncScriptExecutionMetadata>();
|
|
EXPECT_TRUE(parsed_dase_metadata.has_value());
|
|
EXPECT_EQ(parsed_dase_metadata->delay_type(),
|
|
proto::DELAY_TYPE_FINISHED_PARSING);
|
|
}
|
|
|
|
} // namespace optimization_guide
|