| // Copyright (c) 2009-2010 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by the GPL v2 license that can |
| // be found in the LICENSE file. |
| // |
| // Tests for verity::FileHasher |
| #include "verity/file_hasher.h" |
| |
| #include <base/basictypes.h> |
| #include <base/scoped_ptr.h> |
| #include <gmock/gmock.h> |
| #include <gtest/gtest.h> |
| |
| #include "verity/simple_file/mock_file.h" |
| #include "verity/utils.h" |
| |
| using ::testing::_; // wildcard mock matcher |
| using ::testing::AtLeast; // Times modifier |
| using ::testing::DefaultValue; // allow for easy default return value change |
| using ::testing::InSequence; |
| using ::testing::Invoke; // mock Invoke action |
| using ::testing::Return; // mock Return action |
| |
| class FileHasherTest : public ::testing::Test { |
| public: |
| FileHasherTest() : |
| src_(new simple_file::MockFile()), |
| dst_(new simple_file::MockFile()) { } |
| ~FileHasherTest() { } |
| void SetUp() { |
| hasher_.reset(new verity::FileHasher()); |
| } |
| protected: |
| scoped_ptr<simple_file::MockFile> src_; |
| scoped_ptr<simple_file::MockFile> dst_; |
| scoped_ptr<verity::FileHasher> hasher_; |
| }; |
| |
| static char last_digest_match[256] = { 0 }; |
| |
| MATCHER_P(DigestMatch, a, "given hexdigest matches binary digest arg") { |
| char *hexdigest = new char[strlen(a) + 1]; |
| verity_utils::to_hex(hexdigest, arg, strlen(a)/2); |
| bool ok = !strcmp(a, hexdigest); |
| LOG(INFO) << "DigestMatcher: " |
| << hexdigest << (ok? " == " : " != ") << a; |
| delete [] hexdigest; |
| // Store this away globally so we can easily re use it. |
| // Later this needs to be supported by a MockFile. |
| if (sizeof(last_digest_match) > strlen(a)/2) { |
| memcpy(last_digest_match, arg, strlen(a)/2); |
| } |
| return ok; |
| } |
| |
| #if 0 |
| TEST_F(FileHasherTest, EndToEnd) { |
| EXPECT_TRUE(false); |
| } |
| #endif |