blob: 1da50615a42f84211affaa72b3971edc15a46dfe [file] [log] [blame]
// 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