Coverage for /Syzygy/pdb/pdb_file_unittest.cc

CoverageLines executed / instrumented / missingexe / inst / missLanguageGroup
94.8%55580.C++test

Line-by-line coverage:

   1    :  // Copyright 2012 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/pdb/pdb_file.h"
  16    :  
  17    :  #include "base/memory/scoped_ptr.h"
  18    :  #include "gmock/gmock.h"
  19    :  #include "gtest/gtest.h"
  20    :  
  21    :  namespace pdb {
  22    :  
  23    :  namespace {
  24    :  
  25    :  class DummyPdbStream : public PdbStream {
  26    :   public:
  27  E :    DummyPdbStream() : PdbStream(10) {
  28  E :      ++instance_count_;
  29  E :    }
  30    :  
  31  i :    virtual bool ReadBytes(void* dest, size_t count, size_t* bytes_read) {
  32  i :      return false;
  33  i :    }
  34    :  
  35  E :    static size_t instance_count() { return instance_count_; }
  36    :  
  37    :   protected:
  38  E :    virtual ~DummyPdbStream() {
  39  E :      --instance_count_;
  40  E :    }
  41    :  
  42    :    static size_t instance_count_;
  43    :  };
  44    :  
  45    :  size_t DummyPdbStream::instance_count_;
  46    :  
  47    :  }  // namespace
  48    :  
  49  E :  TEST(PdbFileTest, Clear) {
  50  E :    PdbFile pdb_file;
  51  E :    EXPECT_EQ(0u, pdb_file.StreamCount());
  52  E :    EXPECT_EQ(0u, DummyPdbStream::instance_count());
  53    :  
  54  E :    pdb_file.AppendStream(new DummyPdbStream());
  55  E :    EXPECT_EQ(1u, pdb_file.StreamCount());
  56  E :    EXPECT_EQ(1u, DummyPdbStream::instance_count());
  57    :  
  58  E :    pdb_file.AppendStream(new DummyPdbStream());
  59  E :    EXPECT_EQ(2u, pdb_file.StreamCount());
  60  E :    EXPECT_EQ(2u, DummyPdbStream::instance_count());
  61    :  
  62  E :    pdb_file.SetStream(100, new DummyPdbStream());
  63  E :    EXPECT_EQ(101u, pdb_file.StreamCount());
  64  E :    EXPECT_TRUE(pdb_file.GetStream(99) == NULL);
  65  E :    EXPECT_EQ(3u, DummyPdbStream::instance_count());
  66    :  
  67  E :    pdb_file.Clear();
  68  E :    EXPECT_EQ(0u, pdb_file.StreamCount());
  69  E :    EXPECT_EQ(0u, DummyPdbStream::instance_count());
  70  E :  }
  71    :  
  72  E :  TEST(PdbFileTest, WorksAsExpected) {
  73  E :    scoped_ptr<PdbFile> pdb(new PdbFile());
  74  E :    EXPECT_EQ(0u, pdb->StreamCount());
  75  E :    EXPECT_EQ(0u, DummyPdbStream::instance_count());
  76    :  
  77  E :    scoped_refptr<PdbStream> stream(new DummyPdbStream());
  78  E :    EXPECT_EQ(1u, DummyPdbStream::instance_count());
  79  E :    size_t index0 = pdb->AppendStream(stream.get());
  80  E :    EXPECT_EQ(0u, index0);
  81  E :    EXPECT_EQ(1u, pdb->StreamCount());
  82  E :    EXPECT_EQ(stream.get(), pdb->GetStream(index0));
  83    :  
  84  E :    stream = new DummyPdbStream();
  85  E :    EXPECT_EQ(2u, DummyPdbStream::instance_count());
  86  E :    size_t index1 = pdb->AppendStream(stream.get());
  87  E :    EXPECT_EQ(1u, index1);
  88  E :    EXPECT_EQ(2u, pdb->StreamCount());
  89  E :    EXPECT_EQ(stream.get(), pdb->GetStream(index1));
  90  E :    PdbStream* stream1 = stream.get();
  91    :  
  92  E :    stream = new DummyPdbStream();
  93  E :    EXPECT_EQ(3u, DummyPdbStream::instance_count());
  94  E :    pdb->ReplaceStream(index0, stream.get());
  95  E :    EXPECT_EQ(2u, DummyPdbStream::instance_count());
  96  E :    EXPECT_EQ(2u, pdb->StreamCount());
  97  E :    EXPECT_EQ(stream.get(), pdb->GetStream(index0));
  98  E :    PdbStream* stream0 = stream.get();
  99  E :    stream = NULL;
 100    :  
 101  E :    EXPECT_EQ(stream0, pdb->GetStream(0));
 102  E :    EXPECT_EQ(stream1, pdb->GetStream(1));
 103    :  
 104  E :    pdb.reset(NULL);
 105  E :    EXPECT_EQ(0u, DummyPdbStream::instance_count());
 106  E :  }
 107    :  
 108    :  }  // namespace pdb

Coverage information generated Thu Jul 04 09:34:53 2013.