| Index: courgette/rel32_finder_win32_x86_unittest.cc | 
| diff --git a/courgette/rel32_finder_win32_x86_unittest.cc b/courgette/rel32_finder_win32_x86_unittest.cc | 
| deleted file mode 100644 | 
| index 496f0b94bb249bb837bad08f0ca3bcbc9e4a8272..0000000000000000000000000000000000000000 | 
| --- a/courgette/rel32_finder_win32_x86_unittest.cc | 
| +++ /dev/null | 
| @@ -1,151 +0,0 @@ | 
| -// Copyright 2015 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 "courgette/rel32_finder_win32_x86.h" | 
| - | 
| -#include <stddef.h> | 
| -#include <stdint.h> | 
| - | 
| -#include <algorithm> | 
| -#include <sstream> | 
| -#include <string> | 
| - | 
| -#include "base/macros.h" | 
| -#include "courgette/base_test_unittest.h" | 
| -#include "courgette/image_utils.h" | 
| -#include "testing/gtest/include/gtest/gtest.h" | 
| - | 
| -namespace courgette { | 
| - | 
| -namespace { | 
| - | 
| -// Helper class to load and execute a Rel32FinderWin32X86 test case. | 
| -class Rel32FinderWin32X86TestCase { | 
| - public: | 
| -  Rel32FinderWin32X86TestCase(const std::string& test_data) | 
| -      : text_start_rva_(0), | 
| -        text_end_rva_(0), | 
| -        relocs_start_rva_(0), | 
| -        relocs_end_rva_(0), | 
| -        image_end_rva_(0) { | 
| -    LoadTestFromString(test_data); | 
| -  } | 
| - | 
| -  void RunTestBasic(std::string name) { | 
| -    Rel32FinderWin32X86_Basic finder(relocs_start_rva_, relocs_end_rva_); | 
| -    ASSERT_FALSE(text_data_.empty()); | 
| -    finder.Find(&text_data_[0], &text_data_[0] + text_data_.size(), | 
| -        text_start_rva_, text_end_rva_, abs32_locations_); | 
| -    std::vector<RVA> rel32_locations; | 
| -    finder.SwapRel32Locations(&rel32_locations); | 
| -    EXPECT_EQ(expected_rel32_locations_, rel32_locations) | 
| -        << "From test case " << name << " (addresses are in hex)"; | 
| -  } | 
| - | 
| - private: | 
| -  RVA text_start_rva_; | 
| -  RVA text_end_rva_; | 
| -  RVA relocs_start_rva_; | 
| -  RVA relocs_end_rva_; | 
| -  RVA image_end_rva_; | 
| -  std::vector<uint8_t> text_data_; | 
| -  std::vector<RVA> abs32_locations_; | 
| -  std::vector<RVA> expected_rel32_locations_; | 
| - | 
| -  // Scans |iss| for the next non-empty line, after removing "#"-style comments | 
| -  // and stripping trailing spaces. On success, returns true and writes the | 
| -  // result to |line_out|. Otherwise returns false. | 
| -  bool ReadNonEmptyLine(std::istringstream& iss, std::string* line_out) { | 
| -    std::string line; | 
| -    while (std::getline(iss, line)) { | 
| -      // Trim comments and trailing spaces. | 
| -      size_t end_pos = std::min(line.find("#"), line.length()); | 
| -      while (end_pos > 0 && line[end_pos] == ' ') | 
| -        --end_pos; | 
| -      line.resize(end_pos); | 
| -      if (!line.empty()) | 
| -        break; | 
| -    } | 
| -    if (line.empty()) | 
| -      return false; | 
| -    line_out->swap(line); | 
| -    return true; | 
| -  } | 
| - | 
| -  // Scans |iss| for the next non-empty line, and reads (hex) uint32_t into |v|. | 
| -  // Returns true iff successful. | 
| -  bool ReadHexUInt32(std::istringstream& iss, uint32_t* v) { | 
| -    std::string line; | 
| -    if (!ReadNonEmptyLine(iss, &line)) | 
| -      return false; | 
| -    return sscanf(line.c_str(), "%X", v) == 1; | 
| -  } | 
| - | 
| -  // Initializes the test case by parsing the multi-line string |test_data| | 
| -  // to extract Rel32FinderWin32X86 parameters, and read expected values. | 
| -  void LoadTestFromString(const std::string& test_data) { | 
| -    // The first lines (ignoring empty ones) specify RVA bounds. | 
| -    std::istringstream iss(test_data); | 
| -    ASSERT_TRUE(ReadHexUInt32(iss, &text_start_rva_)); | 
| -    ASSERT_TRUE(ReadHexUInt32(iss, &text_end_rva_)); | 
| -    ASSERT_TRUE(ReadHexUInt32(iss, &relocs_start_rva_)); | 
| -    ASSERT_TRUE(ReadHexUInt32(iss, &relocs_end_rva_)); | 
| -    ASSERT_TRUE(ReadHexUInt32(iss, &image_end_rva_)); | 
| - | 
| -    std::string line; | 
| -    // The Program section specifies instruction bytes. We require lines to be | 
| -    // formatted in "DUMPBIN /DISASM" style, i.e., | 
| -    // "00401003: E8 00 00 00 00     call        00401008" | 
| -    //            ^  ^  ^  ^  ^  ^ | 
| -    // We extract up to 6 bytes per line. The remaining are ignored. | 
| -    const int kBytesBegin = 12; | 
| -    const int kBytesEnd = 17; | 
| -    ReadNonEmptyLine(iss, &line); | 
| -    ASSERT_EQ("Program:", line); | 
| -    while (ReadNonEmptyLine(iss, &line) && line != "Abs32:") { | 
| -      std::string toks = line.substr(kBytesBegin, kBytesEnd); | 
| -      uint32_t vals[6]; | 
| -      int num_read = sscanf(toks.c_str(), "%X %X %X %X %X %X", &vals[0], | 
| -          &vals[1], &vals[2], &vals[3], &vals[4], &vals[5]); | 
| -      for (int i = 0; i < num_read; ++i) | 
| -        text_data_.push_back(static_cast<uint8_t>(vals[i] & 0xFF)); | 
| -    } | 
| -    ASSERT_FALSE(text_data_.empty()); | 
| - | 
| -    // The Abs32 section specifies hex RVAs, one per line. | 
| -    ASSERT_EQ("Abs32:", line); | 
| -    while (ReadNonEmptyLine(iss, &line) && line != "Expected:") { | 
| -      RVA abs32_location; | 
| -      ASSERT_EQ(1, sscanf(line.c_str(), "%X", &abs32_location)); | 
| -      abs32_locations_.push_back(abs32_location); | 
| -    } | 
| - | 
| -    // The Expected section specifies hex Rel32 RVAs, one per line. | 
| -    ASSERT_EQ("Expected:", line); | 
| -    while (ReadNonEmptyLine(iss, &line)) { | 
| -      RVA rel32_location; | 
| -      ASSERT_EQ(1, sscanf(line.c_str(), "%X", &rel32_location)); | 
| -      expected_rel32_locations_.push_back(rel32_location); | 
| -    } | 
| -  } | 
| -}; | 
| - | 
| -class Rel32FinderWin32X86Test : public BaseTest { | 
| - public: | 
| -  void RunTest(const char* test_case_file) { | 
| -    Rel32FinderWin32X86TestCase test_case(FileContents(test_case_file)); | 
| -    test_case.RunTestBasic(test_case_file); | 
| -  } | 
| -}; | 
| - | 
| -TEST_F(Rel32FinderWin32X86Test, TestBasic) { | 
| -  RunTest("rel32_win32_x86_01.txt"); | 
| -  RunTest("rel32_win32_x86_02.txt"); | 
| -  RunTest("rel32_win32_x86_03.txt"); | 
| -  RunTest("rel32_win32_x86_04.txt"); | 
| -} | 
| - | 
| -}  // namespace | 
| - | 
| -}  // namespace courgette | 
|  |