Clang: Improve modified timer checker

Make the algorithm a little bit more clear.

Change-Id: I71b04cdd947272edf9fade8f93b7300a945a2fc8
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Marco Bubke
2019-07-16 20:42:54 +02:00
parent 8c1b803fad
commit 4e5e4899d5
3 changed files with 21 additions and 10 deletions

View File

@@ -83,12 +83,12 @@ public:
private: private:
bool compareEntries(const SourceEntries &sourceEntries) const bool compareEntries(const SourceEntries &sourceEntries) const
{ {
return set_intersection_compare( return !set_intersection_compare(
m_currentSourceTimeStamps.begin(), m_currentSourceTimeStamps.begin(),
m_currentSourceTimeStamps.end(), m_currentSourceTimeStamps.end(),
sourceEntries.begin(), sourceEntries.begin(),
sourceEntries.end(), 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; }); [](auto first, auto second) { return first.sourceId < second.sourceId; });
} }

View File

@@ -89,13 +89,13 @@ bool set_intersection_compare(
++first1; ++first1;
} else { } else {
if (!comp(*first2, *first1)) { if (!comp(*first2, *first1)) {
if (call(*first2, *first1++)) if (call(*first1++, *first2))
return false; return true;
} }
++first2; ++first2;
} }
} }
return true; return false;
} }
} // namespace ClangBackEnd } // namespace ClangBackEnd

View File

@@ -50,13 +50,17 @@ protected:
NiceMock<MockFileSystem> mockFileSystem; NiceMock<MockFileSystem> mockFileSystem;
ClangBackEnd::ModifiedTimeChecker<> checker{mockFileSystem}; ClangBackEnd::ModifiedTimeChecker<> checker{mockFileSystem};
SourceEntries upToDateEntries = {{1, SourceType::UserInclude, 100}, SourceEntries upToDateEntries = {{1, SourceType::UserInclude, 51},
{2, SourceType::SystemInclude, 30}, {2, SourceType::SystemInclude, 30},
{3, SourceType::UserInclude, 100}, {3, SourceType::UserInclude, 50},
{4, SourceType::SystemInclude, 30}}; {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}, SourceEntries notUpToDateEntries = {{1, SourceType::UserInclude, 50},
{2, SourceType::SystemInclude, 20}, {2, SourceType::SystemInclude, 29},
{3, SourceType::UserInclude, 100}, {3, SourceType::UserInclude, 50},
{4, SourceType::SystemInclude, 30}}; {4, SourceType::SystemInclude, 30}};
}; };
@@ -67,6 +71,13 @@ TEST_F(ModifiedTimeChecker, IsUpToDate)
ASSERT_TRUE(isUpToDate); ASSERT_TRUE(isUpToDate);
} }
TEST_F(ModifiedTimeChecker, EqualEntriesAreUpToDate)
{
auto isUpToDate = checker.isUpToDate(equalEntries);
ASSERT_TRUE(isUpToDate);
}
TEST_F(ModifiedTimeChecker, IsUpToDateSecondRun) TEST_F(ModifiedTimeChecker, IsUpToDateSecondRun)
{ {
checker.isUpToDate(upToDateEntries); checker.isUpToDate(upToDateEntries);