// Copyright 2017 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/zucchini/reference_set.h" #include #include "components/zucchini/image_utils.h" #include "components/zucchini/target_pool.h" #include "components/zucchini/test_reference_reader.h" #include "testing/gtest/include/gtest/gtest.h" namespace zucchini { namespace { constexpr offset_t kWidth = 2U; } // namespace class ReferenceSetTest : public testing::Test { protected: // For simplicity, |target_pool_| has no type info (not needed here). TargetPool target_pool_ = TargetPool{{0, 2, 3, 5}}; ReferenceSet reference_set_ = ReferenceSet{{kWidth, TypeTag(0), PoolTag(0)}, target_pool_}; }; TEST_F(ReferenceSetTest, InitReferencesFromReader) { EXPECT_EQ(std::vector(), reference_set_.references()); EXPECT_EQ(0U, reference_set_.size()); std::vector references = {{10, 0}, {12, 2}, {14, 5}}; reference_set_.InitReferences(TestReferenceReader(references)); EXPECT_EQ(references, reference_set_.references()); } TEST_F(ReferenceSetTest, At) { reference_set_.InitReferences({{10, 0}, {12, 2}, {15, 5}}); // Each references has kWidth = 2, so check all bytes covered. EXPECT_EQ(Reference({10, 0}), reference_set_.at(10)); EXPECT_EQ(Reference({10, 0}), reference_set_.at(11)); EXPECT_EQ(Reference({12, 2}), reference_set_.at(12)); EXPECT_EQ(Reference({12, 2}), reference_set_.at(13)); EXPECT_EQ(Reference({15, 5}), reference_set_.at(15)); EXPECT_EQ(Reference({15, 5}), reference_set_.at(16)); } } // namespace zucchini