difference_estimator_unittest.cc 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. // Copyright (c) 2009 The Chromium 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. #include "courgette/difference_estimator.h"
  5. #include <string>
  6. #include "testing/gtest/include/gtest/gtest.h"
  7. #include "courgette/region.h"
  8. using courgette::DifferenceEstimator;
  9. using courgette::Region;
  10. TEST(DifferenceEstimatorTest, TestSame) {
  11. static const char kString1[] = "Hello world";
  12. // kString2 is stack allocated to prevent string sharing.
  13. const char kString2[] = "Hello world";
  14. DifferenceEstimator difference_estimator;
  15. DifferenceEstimator::Base* base =
  16. difference_estimator.MakeBase(Region(kString1, sizeof(kString1)));
  17. DifferenceEstimator::Subject* subject =
  18. difference_estimator.MakeSubject(Region(kString2, sizeof(kString2)));
  19. EXPECT_EQ(0U, difference_estimator.Measure(base, subject));
  20. }
  21. TEST(DifferenceEstimatorTest, TestDifferent) {
  22. static const char kString1[] = "Hello world";
  23. static const char kString2[] = "Hello universe";
  24. DifferenceEstimator difference_estimator;
  25. DifferenceEstimator::Base* base =
  26. difference_estimator.MakeBase(Region(kString1, sizeof(kString1)));
  27. DifferenceEstimator::Subject* subject =
  28. difference_estimator.MakeSubject(Region(kString2, sizeof(kString2)));
  29. EXPECT_EQ(10U, difference_estimator.Measure(base, subject));
  30. }
  31. TEST(DifferenceEstimatorTest, TestDifferentSuperstring) {
  32. static const char kString1[] = "abcdabcdabcd";
  33. static const char kString2[] = "abcdabcdabcdabcd";
  34. DifferenceEstimator difference_estimator;
  35. DifferenceEstimator::Base* base =
  36. difference_estimator.MakeBase(Region(kString1, sizeof(kString1)-1));
  37. DifferenceEstimator::Subject* subject =
  38. difference_estimator.MakeSubject(Region(kString2, sizeof(kString2)-1));
  39. EXPECT_EQ(1U, difference_estimator.Measure(base, subject));
  40. }
  41. TEST(DifferenceEstimatorTest, TestDifferentSubstring) {
  42. static const char kString1[] = "abcdabcdabcdabcd";
  43. static const char kString2[] = "abcdabcdabcd";
  44. DifferenceEstimator difference_estimator;
  45. DifferenceEstimator::Base* base =
  46. difference_estimator.MakeBase(Region(kString1, sizeof(kString1)-1));
  47. DifferenceEstimator::Subject* subject =
  48. difference_estimator.MakeSubject(Region(kString2, sizeof(kString2)-1));
  49. EXPECT_EQ(1U, difference_estimator.Measure(base, subject));
  50. }