forked from qt-creator/qt-creator
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:
@@ -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; });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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
|
||||||
|
@@ -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, 31}};
|
||||||
|
SourceEntries equalEntries = {{1, SourceType::UserInclude, 50},
|
||||||
|
{2, SourceType::SystemInclude, 30},
|
||||||
|
{3, SourceType::UserInclude, 50},
|
||||||
{4, SourceType::SystemInclude, 30}};
|
{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);
|
||||||
|
Reference in New Issue
Block a user