extent_utils_unittest.cc revision 5c6c65570013bbdbd67f9bf6391dd295ef5b5ee6
1// Copyright 2015 The Chromium OS Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "update_engine/payload_generator/extent_utils.h" 6 7#include <utility> 8#include <vector> 9 10#include <gtest/gtest.h> 11 12#include "update_engine/extent_ranges.h" 13#include "update_engine/payload_constants.h" 14 15using std::vector; 16 17namespace chromeos_update_engine { 18 19class ExtentUtilsTest : public ::testing::Test {}; 20 21TEST(ExtentUtilsTest, AppendSparseToExtentsTest) { 22 vector<Extent> extents; 23 24 EXPECT_EQ(0, extents.size()); 25 AppendBlockToExtents(&extents, kSparseHole); 26 EXPECT_EQ(1, extents.size()); 27 AppendBlockToExtents(&extents, 0); 28 EXPECT_EQ(2, extents.size()); 29 AppendBlockToExtents(&extents, kSparseHole); 30 AppendBlockToExtents(&extents, kSparseHole); 31 32 ASSERT_EQ(3, extents.size()); 33 EXPECT_EQ(kSparseHole, extents[0].start_block()); 34 EXPECT_EQ(1, extents[0].num_blocks()); 35 EXPECT_EQ(0, extents[1].start_block()); 36 EXPECT_EQ(1, extents[1].num_blocks()); 37 EXPECT_EQ(kSparseHole, extents[2].start_block()); 38 EXPECT_EQ(2, extents[2].num_blocks()); 39} 40 41TEST(ExtentUtilsTest, BlocksInExtentsTest) { 42 { 43 vector<Extent> extents; 44 EXPECT_EQ(0, BlocksInExtents(extents)); 45 extents.push_back(ExtentForRange(0, 1)); 46 EXPECT_EQ(1, BlocksInExtents(extents)); 47 extents.push_back(ExtentForRange(23, 55)); 48 EXPECT_EQ(56, BlocksInExtents(extents)); 49 extents.push_back(ExtentForRange(1, 2)); 50 EXPECT_EQ(58, BlocksInExtents(extents)); 51 } 52 { 53 google::protobuf::RepeatedPtrField<Extent> extents; 54 EXPECT_EQ(0, BlocksInExtents(extents)); 55 *extents.Add() = ExtentForRange(0, 1); 56 EXPECT_EQ(1, BlocksInExtents(extents)); 57 *extents.Add() = ExtentForRange(23, 55); 58 EXPECT_EQ(56, BlocksInExtents(extents)); 59 *extents.Add() = ExtentForRange(1, 2); 60 EXPECT_EQ(58, BlocksInExtents(extents)); 61 } 62} 63 64} // namespace chromeos_update_engine 65