0
Files
android_webview
apps
ash
base
build
build_overrides
buildtools
cc
chrome
chromecast
chromeos
cloud_print
components
content
courgette
testdata
third_party
BUILD.gn
DEPS
OWNERS
adjustment_method.cc
adjustment_method.h
adjustment_method_2.cc
adjustment_method_unittest.cc
analyze_mem_test
analyze_stress_test
assembly_program.cc
assembly_program.h
base_test_unittest.cc
base_test_unittest.h
bsdiff_memory_unittest.cc
consecutive_range_visitor.h
consecutive_range_visitor_unittest.cc
courgette.h
courgette_application.png
courgette_flow.cc
courgette_flow.h
courgette_generation.png
courgette_minimal_tool.cc
courgette_tool.cc
crc.cc
crc.h
description.html
description.md
difference_estimator.cc
difference_estimator.h
difference_estimator_unittest.cc
disassembler.cc
disassembler.h
disassembler_elf_32.cc
disassembler_elf_32.h
disassembler_elf_32_x86.cc
disassembler_elf_32_x86.h
disassembler_elf_32_x86_unittest.cc
disassembler_win32.cc
disassembler_win32.h
disassembler_win32_x64.cc
disassembler_win32_x64.h
disassembler_win32_x64_unittest.cc
disassembler_win32_x86.cc
disassembler_win32_x86.h
disassembler_win32_x86_unittest.cc
encode_decode_unittest.cc
encoded_program.cc
encoded_program.h
encoded_program_fuzz_unittest.cc
encoded_program_unittest.cc
ensemble.cc
ensemble.h
ensemble_apply.cc
ensemble_create.cc
ensemble_unittest.cc
image_utils.h
image_utils_unittest.cc
instruction_utils.h
label_manager.cc
label_manager.h
label_manager_unittest.cc
memory_allocator.cc
memory_allocator.h
memory_allocator_unittest.cc
memory_monitor.cc
patch_generator_x86_32.h
patcher_x86_32.h
program_detector.cc
program_detector.h
program_detector_unittest.cc
region.h
rel32_finder.cc
rel32_finder.h
rel32_finder_unittest.cc
rel32_finder_x64.cc
rel32_finder_x64.h
rel32_finder_x86.cc
rel32_finder_x86.h
run_mem_test
run_stress_test
simple_delta.cc
simple_delta.h
streams.cc
streams.h
streams_unittest.cc
stress_test_common
typedrva_unittest.cc
types_elf.h
types_win_pe.h
versioning_unittest.cc
crypto
dbus
device
docs
extensions
fuchsia
gin
google_apis
google_update
gpu
headless
infra
ios
ipc
jingle
media
mojo
native_client_sdk
net
pdf
ppapi
printing
remoting
rlz
sandbox
services
skia
sql
storage
styleguide
testing
third_party
tools
ui
url
weblayer
.clang-format
.clang-tidy
.eslintrc.js
.git-blame-ignore-revs
.gitattributes
.gitignore
.gn
.vpython
.vpython3
.yapfignore
AUTHORS
BUILD.gn
CODE_OF_CONDUCT.md
DEPS
ENG_REVIEW_OWNERS
LICENSE
LICENSE.chromium_os
OWNERS
PRESUBMIT.py
PRESUBMIT_test.py
PRESUBMIT_test_mocks.py
README.md
WATCHLISTS
codereview.settings
src/courgette/difference_estimator_unittest.cc
sra@google.com 54f1b829fe Code changes to get the code to compile under GCC.
Courgette still only knows how to compress Windows x86 executables.
But now you can compress them on linux.

BUG=none
TEST=none

Review URL: http://codereview.chromium.org/149597

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21042 0039d316-1c4b-4281-b951-d872f2087c98
2009-07-18 03:28:40 +00:00

59 lines
2.3 KiB
C++

// Copyright (c) 2009 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/difference_estimator.h"
#include <string>
#include "testing/gtest/include/gtest/gtest.h"
#include "courgette/region.h"
using courgette::DifferenceEstimator;
using courgette::Region;
TEST(DifferenceEstimatorTest, TestSame) {
static const char kString1[] = "Hello world";
// kString2 is stack allocated to prevent string sharing.
const char kString2[] = "Hello world";
DifferenceEstimator difference_estimator;
DifferenceEstimator::Base* base =
difference_estimator.MakeBase(Region(kString1, sizeof(kString1)));
DifferenceEstimator::Subject* subject =
difference_estimator.MakeSubject(Region(kString2, sizeof(kString2)));
EXPECT_EQ(0U, difference_estimator.Measure(base, subject));
}
TEST(DifferenceEstimatorTest, TestDifferent) {
static const char kString1[] = "Hello world";
static const char kString2[] = "Hello universe";
DifferenceEstimator difference_estimator;
DifferenceEstimator::Base* base =
difference_estimator.MakeBase(Region(kString1, sizeof(kString1)));
DifferenceEstimator::Subject* subject =
difference_estimator.MakeSubject(Region(kString2, sizeof(kString2)));
EXPECT_EQ(10U, difference_estimator.Measure(base, subject));
}
TEST(DifferenceEstimatorTest, TestDifferentSuperstring) {
static const char kString1[] = "abcdabcdabcd";
static const char kString2[] = "abcdabcdabcdabcd";
DifferenceEstimator difference_estimator;
DifferenceEstimator::Base* base =
difference_estimator.MakeBase(Region(kString1, sizeof(kString1)-1));
DifferenceEstimator::Subject* subject =
difference_estimator.MakeSubject(Region(kString2, sizeof(kString2)-1));
EXPECT_EQ(1U, difference_estimator.Measure(base, subject));
}
TEST(DifferenceEstimatorTest, TestDifferentSubstring) {
static const char kString1[] = "abcdabcdabcdabcd";
static const char kString2[] = "abcdabcdabcd";
DifferenceEstimator difference_estimator;
DifferenceEstimator::Base* base =
difference_estimator.MakeBase(Region(kString1, sizeof(kString1)-1));
DifferenceEstimator::Subject* subject =
difference_estimator.MakeSubject(Region(kString2, sizeof(kString2)-1));
EXPECT_EQ(1U, difference_estimator.Measure(base, subject));
}