Coverage for /Syzygy/core/section_offset_address_unittest.cc

CoverageLines executed / instrumented / missingexe / inst / missLanguageGroup
100.0%1391390.C++test

Line-by-line coverage:

   1    :  // Copyright 2014 Google Inc. All Rights Reserved.
   2    :  //
   3    :  // Licensed under the Apache License, Version 2.0 (the "License");
   4    :  // you may not use this file except in compliance with the License.
   5    :  // You may obtain a copy of the License at
   6    :  //
   7    :  //     http://www.apache.org/licenses/LICENSE-2.0
   8    :  //
   9    :  // Unless required by applicable law or agreed to in writing, software
  10    :  // distributed under the License is distributed on an "AS IS" BASIS,
  11    :  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12    :  // See the License for the specific language governing permissions and
  13    :  // limitations under the License.
  14    :  
  15    :  #include "syzygy/core/section_offset_address.h"
  16    :  
  17    :  #include "gtest/gtest.h"
  18    :  #include "syzygy/core/unittest_util.h"
  19    :  
  20    :  namespace core {
  21    :  
  22    :  namespace {
  23    :  
  24    :  const uint32 kSectionId = 2;
  25    :  const uint32 kOffset = 0xCAFEBABE;
  26    :  
  27    :  }  // namespace
  28    :  
  29  E :  TEST(SectionOffsetAddressTest, DefaultInitialization) {
  30  E :    SectionOffsetAddress address;
  31  E :    EXPECT_EQ(0, address.section_id());
  32  E :    EXPECT_EQ(0, address.offset());
  33  E :  }
  34    :  
  35  E :  TEST(SectionOffsetAddressTest, CreateInitialialized) {
  36  E :    const uint32 kSectionId = 2;
  37  E :    const uint32 kOffset = 0xCAFEBABE;
  38    :  
  39  E :    SectionOffsetAddress address(kSectionId, kOffset);
  40    :  
  41  E :    EXPECT_EQ(kSectionId, address.section_id());
  42  E :    EXPECT_EQ(kOffset, address.offset());
  43  E :  }
  44    :  
  45  E :  TEST(SectionOffsetAddressTest, ValueComparison) {
  46  E :    const SectionOffsetAddress::SectionOffset kOne(1, 0);
  47  E :    const SectionOffsetAddress::SectionOffset kTwo(1, 10);
  48  E :    const SectionOffsetAddress::SectionOffset kThree(2, 0);
  49    :  
  50  E :    EXPECT_TRUE(kOne < kTwo);
  51  E :    EXPECT_FALSE(kOne < kOne);
  52  E :    EXPECT_FALSE(kTwo < kOne);
  53  E :    EXPECT_TRUE(kTwo < kThree);
  54  E :    EXPECT_FALSE(kThree < kOne);
  55  E :    EXPECT_FALSE(kThree < kTwo);
  56    :  
  57  E :    EXPECT_TRUE(kOne <= kTwo);
  58  E :    EXPECT_TRUE(kOne <= kOne);
  59  E :    EXPECT_FALSE(kTwo <= kOne);
  60  E :    EXPECT_TRUE(kTwo <= kThree);
  61  E :    EXPECT_FALSE(kThree <= kOne);
  62  E :    EXPECT_FALSE(kThree <= kTwo);
  63    :  
  64  E :    EXPECT_FALSE(kOne > kTwo);
  65  E :    EXPECT_FALSE(kOne > kOne);
  66  E :    EXPECT_TRUE(kTwo > kOne);
  67  E :    EXPECT_FALSE(kTwo > kThree);
  68  E :    EXPECT_TRUE(kThree > kOne);
  69  E :    EXPECT_TRUE(kThree > kTwo);
  70    :  
  71  E :    EXPECT_FALSE(kOne >= kTwo);
  72  E :    EXPECT_TRUE(kOne >= kOne);
  73  E :    EXPECT_TRUE(kTwo >= kOne);
  74  E :    EXPECT_FALSE(kTwo >= kThree);
  75  E :    EXPECT_TRUE(kThree >= kOne);
  76  E :    EXPECT_TRUE(kThree >= kTwo);
  77    :  
  78  E :    const SectionOffsetAddress::SectionOffset kOtherOne(1, 0);
  79  E :    EXPECT_TRUE(kOne == kOtherOne);
  80  E :    EXPECT_FALSE(kOne == kTwo);
  81  E :    EXPECT_FALSE(kOne != kOtherOne);
  82  E :    EXPECT_TRUE(kOne != kTwo);
  83  E :  }
  84    :  
  85  E :  TEST(SectionOffsetAddressTest, Operators) {
  86  E :    const SectionOffsetAddress kOne(1, 0);
  87  E :    const SectionOffsetAddress kTwo(1, 10);
  88  E :    const SectionOffsetAddress kThree(2, 0);
  89    :  
  90  E :    EXPECT_TRUE(kOne < kTwo);
  91  E :    EXPECT_FALSE(kOne < kOne);
  92  E :    EXPECT_FALSE(kTwo < kOne);
  93  E :    EXPECT_TRUE(kTwo < kThree);
  94  E :    EXPECT_FALSE(kThree < kOne);
  95  E :    EXPECT_FALSE(kThree < kTwo);
  96    :  
  97  E :    EXPECT_TRUE(kOne <= kTwo);
  98  E :    EXPECT_TRUE(kOne <= kOne);
  99  E :    EXPECT_FALSE(kTwo <= kOne);
 100  E :    EXPECT_TRUE(kTwo <= kThree);
 101  E :    EXPECT_FALSE(kThree <= kOne);
 102  E :    EXPECT_FALSE(kThree <= kTwo);
 103    :  
 104  E :    EXPECT_FALSE(kOne > kTwo);
 105  E :    EXPECT_FALSE(kOne > kOne);
 106  E :    EXPECT_TRUE(kTwo > kOne);
 107  E :    EXPECT_FALSE(kTwo > kThree);
 108  E :    EXPECT_TRUE(kThree > kOne);
 109  E :    EXPECT_TRUE(kThree > kTwo);
 110    :  
 111  E :    EXPECT_FALSE(kOne >= kTwo);
 112  E :    EXPECT_TRUE(kOne >= kOne);
 113  E :    EXPECT_TRUE(kTwo >= kOne);
 114  E :    EXPECT_FALSE(kTwo >= kThree);
 115  E :    EXPECT_TRUE(kThree >= kOne);
 116  E :    EXPECT_TRUE(kThree >= kTwo);
 117    :  
 118  E :    SectionOffsetAddress addr(kOne);
 119  E :    EXPECT_TRUE(kOne == addr);
 120  E :    EXPECT_FALSE(addr == kTwo);
 121  E :    EXPECT_FALSE(kOne != addr);
 122  E :    EXPECT_TRUE(addr != kTwo);
 123  E :    EXPECT_EQ(1, addr.section_id());
 124  E :    EXPECT_EQ(0, addr.offset());
 125    :  
 126  E :    EXPECT_TRUE(kOne + 10 == kTwo);
 127  E :    EXPECT_TRUE(kOne == kTwo - 10);
 128    :  
 129  E :    addr += 10;
 130  E :    EXPECT_TRUE(addr == kTwo);
 131  E :    addr -= 10;
 132  E :    EXPECT_TRUE(addr == kOne);
 133    :  
 134  E :    addr = kThree;
 135  E :    EXPECT_TRUE(addr == kThree);
 136  E :  }
 137    :  
 138  E :  TEST(SectionOffsetAddressTest, SetValue) {
 139  E :    SectionOffsetAddress address(0, 0);
 140  E :    address.set_value(SectionOffsetAddress::SectionOffset(kSectionId, kOffset));
 141    :  
 142  E :    EXPECT_EQ(kSectionId, address.value().section_id);
 143  E :    EXPECT_EQ(kOffset, address.value().offset);
 144  E :  }
 145    :  
 146  E :  TEST(SectionOffsetAddressTest, SetSectionId) {
 147  E :    SectionOffsetAddress address(0, 0);
 148  E :    address.set_section_id(kSectionId);
 149  E :    EXPECT_EQ(kSectionId, address.value().section_id);
 150  E :  }
 151    :  
 152  E :  TEST(SectionOffsetAddressTest, SetOffset) {
 153  E :    SectionOffsetAddress address(0, 0);
 154  E :    address.set_offset(kOffset);
 155  E :    EXPECT_EQ(kOffset, address.value().offset);
 156  E :  }
 157    :  
 158  E :  TEST(SectionOffsetAddressTest, AlignUp) {
 159  E :    const SectionOffsetAddress one(0, 1);
 160  E :    const SectionOffsetAddress two(0, 2);
 161  E :    const SectionOffsetAddress four(0, 4);
 162  E :    const SectionOffsetAddress eight(0, 8);
 163  E :    const SectionOffsetAddress sixteen(0, 16);
 164    :  
 165  E :    EXPECT_EQ(one.AlignUp(1), one);
 166  E :    EXPECT_EQ(one.AlignUp(2), two);
 167  E :    EXPECT_EQ(one.AlignUp(4), four);
 168  E :    EXPECT_EQ(one.AlignUp(8), eight);
 169  E :    EXPECT_EQ(one.AlignUp(16), sixteen);
 170    :  
 171  E :    EXPECT_TRUE(one.AlignUp(1).IsAligned(1));
 172  E :    EXPECT_TRUE(one.AlignUp(2).IsAligned(2));
 173  E :    EXPECT_TRUE(one.AlignUp(4).IsAligned(4));
 174  E :    EXPECT_TRUE(one.AlignUp(8).IsAligned(8));
 175  E :    EXPECT_TRUE(one.AlignUp(16).IsAligned(16));
 176  E :  }
 177    :  
 178  E :  TEST(SectionOffsetAddressTest, GetAlignment) {
 179  E :    const uint32 max_alignment = 512;
 180    :  
 181  E :    const SectionOffsetAddress zero(0, 0);
 182  E :    EXPECT_EQ(max_alignment, zero.GetAlignment());
 183  E :    const SectionOffsetAddress one(0, 1);
 184    :  
 185  E :    for (uint32 i = 1; i <= max_alignment; i <<= 1) {
 186  E :      SectionOffsetAddress address(0, i);
 187  E :      EXPECT_EQ(i, address.GetAlignment());
 188  E :    }
 189    :  
 190  E :    SectionOffsetAddress big_offset(0, 1024);
 191  E :    EXPECT_EQ(max_alignment, big_offset.GetAlignment());
 192  E :  }
 193    :  
 194  E :  TEST(SectionOffsetAddressTest, Serialization) {
 195  E :    const SectionOffsetAddress address(5, 42);
 196    :  
 197  E :    EXPECT_TRUE(testing::TestSerialization(address));
 198  E :  }
 199    :  
 200    :  }  // namespace core

Coverage information generated Thu Jan 14 17:40:38 2016.