// Copyright 2015 The Chromium OS 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 "bsdiff.h" #include <gtest/gtest.h> #include <string> #include <vector> #include "test_utils.h" using std::string; using std::vector; using test_utils::BsdiffPatchFile; namespace bsdiff { class BsdiffTest : public testing::Test { protected: BsdiffTest() : old_file_("bsdiff_oldfile.XXXXXX"), new_file_("bsdiff_newfile.XXXXXX"), patch_file_("bsdiff_patchfile.XXXXXX") { } ~BsdiffTest() override {} test_utils::ScopedTempFile old_file_; test_utils::ScopedTempFile new_file_; test_utils::ScopedTempFile patch_file_; }; // Check that a file with no changes has a very small patch (no extra data). TEST_F(BsdiffTest, EqualEmptyFiles) { // Empty old and new files. EXPECT_EQ(0, bsdiff(old_file_.filename().c_str(), new_file_.filename().c_str(), patch_file_.filename().c_str())); BsdiffPatchFile patch; EXPECT_TRUE(patch.LoadFromFile(patch_file_.filename())); EXPECT_TRUE(patch.IsValid()); // An empty bz2 file will have 14 bytes. EXPECT_EQ(14, patch.diff_len); EXPECT_EQ(14U, patch.extra_len); } TEST_F(BsdiffTest, EqualSmallFiles) { string some_text = "Hello world!"; vector<uint8_t> vec_some_text(some_text.begin(), some_text.end()); test_utils::WriteFile(old_file_.filename(), vec_some_text); EXPECT_EQ(0, bsdiff(old_file_.filename().c_str(), new_file_.filename().c_str(), patch_file_.filename().c_str())); BsdiffPatchFile patch; EXPECT_TRUE(patch.LoadFromFile(patch_file_.filename())); EXPECT_TRUE(patch.IsValid()); // An empty bz2 file will have 14 bytes. EXPECT_EQ(14, patch.diff_len); EXPECT_EQ(14U, patch.extra_len); } } // namespace bsdiff