1// Copyright 2015 The Chromium OS Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "bsdiff.h" 6 7#include <gtest/gtest.h> 8#include <string> 9#include <vector> 10 11#include "test_utils.h" 12 13using std::string; 14using std::vector; 15using test_utils::BsdiffPatchFile; 16 17namespace bsdiff { 18 19class BsdiffTest : public testing::Test { 20 protected: 21 BsdiffTest() 22 : old_file_("bsdiff_oldfile.XXXXXX"), 23 new_file_("bsdiff_newfile.XXXXXX"), 24 patch_file_("bsdiff_patchfile.XXXXXX") { 25 } 26 ~BsdiffTest() override {} 27 28 test_utils::ScopedTempFile old_file_; 29 test_utils::ScopedTempFile new_file_; 30 test_utils::ScopedTempFile patch_file_; 31}; 32 33// Check that a file with no changes has a very small patch (no extra data). 34TEST_F(BsdiffTest, EqualEmptyFiles) { 35 // Empty old and new files. 36 EXPECT_EQ(0, bsdiff(old_file_.filename().c_str(), 37 new_file_.filename().c_str(), 38 patch_file_.filename().c_str())); 39 BsdiffPatchFile patch; 40 EXPECT_TRUE(patch.LoadFromFile(patch_file_.filename())); 41 EXPECT_TRUE(patch.IsValid()); 42 43 // An empty bz2 file will have 14 bytes. 44 EXPECT_EQ(14, patch.diff_len); 45 EXPECT_EQ(14U, patch.extra_len); 46} 47 48TEST_F(BsdiffTest, EqualSmallFiles) { 49 string some_text = "Hello world!"; 50 vector<uint8_t> vec_some_text(some_text.begin(), some_text.end()); 51 test_utils::WriteFile(old_file_.filename(), vec_some_text); 52 EXPECT_EQ(0, bsdiff(old_file_.filename().c_str(), 53 new_file_.filename().c_str(), 54 patch_file_.filename().c_str())); 55 BsdiffPatchFile patch; 56 EXPECT_TRUE(patch.LoadFromFile(patch_file_.filename())); 57 EXPECT_TRUE(patch.IsValid()); 58 59 // An empty bz2 file will have 14 bytes. 60 EXPECT_EQ(14, patch.diff_len); 61 EXPECT_EQ(14U, patch.extra_len); 62} 63 64} // namespace bsdiff 65