From 4e5e4899d5ce612616511506b2fb33ec81230f8e Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Tue, 16 Jul 2019 20:42:54 +0200 Subject: [PATCH] Clang: Improve modified timer checker Make the algorithm a little bit more clear. Change-Id: I71b04cdd947272edf9fade8f93b7300a945a2fc8 Reviewed-by: Tim Jenssen --- src/libs/clangsupport/modifiedtimechecker.h | 4 ++-- src/libs/clangsupport/set_algorithm.h | 6 +++--- .../unittest/modifiedtimechecker-test.cpp | 21 ++++++++++++++----- 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/src/libs/clangsupport/modifiedtimechecker.h b/src/libs/clangsupport/modifiedtimechecker.h index 00e8e3ebacf..0b7f97c5a34 100644 --- a/src/libs/clangsupport/modifiedtimechecker.h +++ b/src/libs/clangsupport/modifiedtimechecker.h @@ -83,12 +83,12 @@ public: private: bool compareEntries(const SourceEntries &sourceEntries) const { - return set_intersection_compare( + return !set_intersection_compare( m_currentSourceTimeStamps.begin(), m_currentSourceTimeStamps.end(), sourceEntries.begin(), sourceEntries.end(), - [](auto first, auto second) { return second.timeStamp > first.timeStamp; }, + [](auto first, auto second) { return first.timeStamp > second.timeStamp; }, [](auto first, auto second) { return first.sourceId < second.sourceId; }); } diff --git a/src/libs/clangsupport/set_algorithm.h b/src/libs/clangsupport/set_algorithm.h index 39bd3a2055b..dae2b019335 100644 --- a/src/libs/clangsupport/set_algorithm.h +++ b/src/libs/clangsupport/set_algorithm.h @@ -89,13 +89,13 @@ bool set_intersection_compare( ++first1; } else { if (!comp(*first2, *first1)) { - if (call(*first2, *first1++)) - return false; + if (call(*first1++, *first2)) + return true; } ++first2; } } - return true; + return false; } } // namespace ClangBackEnd diff --git a/tests/unit/unittest/modifiedtimechecker-test.cpp b/tests/unit/unittest/modifiedtimechecker-test.cpp index 0e18228ac3c..a2e97ccadac 100644 --- a/tests/unit/unittest/modifiedtimechecker-test.cpp +++ b/tests/unit/unittest/modifiedtimechecker-test.cpp @@ -50,13 +50,17 @@ protected: NiceMock mockFileSystem; ClangBackEnd::ModifiedTimeChecker<> checker{mockFileSystem}; - SourceEntries upToDateEntries = {{1, SourceType::UserInclude, 100}, + SourceEntries upToDateEntries = {{1, SourceType::UserInclude, 51}, {2, SourceType::SystemInclude, 30}, - {3, SourceType::UserInclude, 100}, - {4, SourceType::SystemInclude, 30}}; + {3, SourceType::UserInclude, 50}, + {4, SourceType::SystemInclude, 31}}; + SourceEntries equalEntries = {{1, SourceType::UserInclude, 50}, + {2, SourceType::SystemInclude, 30}, + {3, SourceType::UserInclude, 50}, + {4, SourceType::SystemInclude, 30}}; SourceEntries notUpToDateEntries = {{1, SourceType::UserInclude, 50}, - {2, SourceType::SystemInclude, 20}, - {3, SourceType::UserInclude, 100}, + {2, SourceType::SystemInclude, 29}, + {3, SourceType::UserInclude, 50}, {4, SourceType::SystemInclude, 30}}; }; @@ -67,6 +71,13 @@ TEST_F(ModifiedTimeChecker, IsUpToDate) ASSERT_TRUE(isUpToDate); } +TEST_F(ModifiedTimeChecker, EqualEntriesAreUpToDate) +{ + auto isUpToDate = checker.isUpToDate(equalEntries); + + ASSERT_TRUE(isUpToDate); +} + TEST_F(ModifiedTimeChecker, IsUpToDateSecondRun) { checker.isUpToDate(upToDateEntries);