diff options
author | nyamatongwe <unknown> | 2011-02-13 10:08:08 +1100 |
---|---|---|
committer | nyamatongwe <unknown> | 2011-02-13 10:08:08 +1100 |
commit | 0e4ae90f839d6ab1bfbd84327ee498a96390172d (patch) | |
tree | 93e017190d0f7620d4b7bed9c92fe320a9c67084 /test/unit/testSparseState.cxx | |
parent | a66ec5a196b0207fa23c529a13cf5662d11b2b6f (diff) | |
download | scintilla-mirror-0e4ae90f839d6ab1bfbd84327ee498a96390172d.tar.gz |
Added Merge method to SparseState to make it possible to detect significant
changes in lexers which will require styling beyond the end of the current range.
Diffstat (limited to 'test/unit/testSparseState.cxx')
-rw-r--r-- | test/unit/testSparseState.cxx | 101 |
1 files changed, 100 insertions, 1 deletions
diff --git a/test/unit/testSparseState.cxx b/test/unit/testSparseState.cxx index 74f1032b2..a30240d62 100644 --- a/test/unit/testSparseState.cxx +++ b/test/unit/testSparseState.cxx @@ -95,13 +95,112 @@ TEST_F(SparseStateTest, ReplaceLast) { EXPECT_EQ(32, pss->ValueAt(3)); } -TEST_F(SparseStateTest, CheckOnlyChangeAppended) { +TEST_F(SparseStateTest, OnlyChangeAppended) { pss->Set(0, 30); pss->Set(2, 31); pss->Set(3, 31); EXPECT_EQ(2u, pss->size()); } +TEST_F(SparseStateTest, MergeBetween) { + pss->Set(0, 30); + pss->Set(2, 32); + pss->Set(4, 34); + EXPECT_EQ(3u, pss->size()); + + SparseState<int> ssAdditions(3); + ssAdditions.Set(4, 34); + EXPECT_EQ(1u, ssAdditions.size()); + bool mergeChanged = pss->Merge(ssAdditions,5); + EXPECT_EQ(0, mergeChanged); + + ssAdditions.Set(4, 44); + EXPECT_EQ(1u, ssAdditions.size()); + mergeChanged = pss->Merge(ssAdditions,5); + EXPECT_EQ(true, mergeChanged); + EXPECT_EQ(3u, pss->size()); + EXPECT_EQ(44, pss->ValueAt(4)); +} + +TEST_F(SparseStateTest, MergeAtExisting) { + pss->Set(0, 30); + pss->Set(2, 32); + pss->Set(4, 34); + EXPECT_EQ(3u, pss->size()); + + SparseState<int> ssAdditions(4); + ssAdditions.Set(4, 34); + EXPECT_EQ(1u, ssAdditions.size()); + bool mergeChanged = pss->Merge(ssAdditions,5); + EXPECT_EQ(0, mergeChanged); + + ssAdditions.Set(4, 44); + EXPECT_EQ(1u, ssAdditions.size()); + mergeChanged = pss->Merge(ssAdditions,5); + EXPECT_EQ(true, mergeChanged); + EXPECT_EQ(3u, pss->size()); + EXPECT_EQ(44, pss->ValueAt(4)); +} + +TEST_F(SparseStateTest, MergeWhichRemoves) { + pss->Set(0, 30); + pss->Set(2, 32); + pss->Set(4, 34); + EXPECT_EQ(3u, pss->size()); + + SparseState<int> ssAdditions(2); + ssAdditions.Set(2, 22); + EXPECT_EQ(1u, ssAdditions.size()); + EXPECT_EQ(22, ssAdditions.ValueAt(2)); + bool mergeChanged = pss->Merge(ssAdditions,5); + EXPECT_EQ(true, mergeChanged); + EXPECT_EQ(2u, pss->size()); + EXPECT_EQ(22, pss->ValueAt(2)); +} + +TEST_F(SparseStateTest, MergeIgnoreSome) { + pss->Set(0, 30); + pss->Set(2, 32); + pss->Set(4, 34); + + SparseState<int> ssAdditions(2); + ssAdditions.Set(2, 32); + bool mergeChanged = pss->Merge(ssAdditions,3); + + EXPECT_EQ(0, mergeChanged); + EXPECT_EQ(2u, pss->size()); + EXPECT_EQ(32, pss->ValueAt(2)); +} + +TEST_F(SparseStateTest, MergeIgnoreSomeStart) { + pss->Set(0, 30); + pss->Set(2, 32); + pss->Set(4, 34); + + SparseState<int> ssAdditions(2); + ssAdditions.Set(2, 32); + bool mergeChanged = pss->Merge(ssAdditions,2); + + EXPECT_EQ(0, mergeChanged); + EXPECT_EQ(2u, pss->size()); + EXPECT_EQ(32, pss->ValueAt(2)); +} + +TEST_F(SparseStateTest, MergeIgnoreRepeat) { + pss->Set(0, 30); + pss->Set(2, 32); + pss->Set(4, 34); + + SparseState<int> ssAdditions(5); + // Appending same value as at end of pss. + ssAdditions.Set(5, 34); + bool mergeChanged = pss->Merge(ssAdditions,6); + + EXPECT_EQ(0, mergeChanged); + EXPECT_EQ(3u, pss->size()); + EXPECT_EQ(34, pss->ValueAt(4)); +} + class SparseStateStringTest : public ::testing::Test { protected: virtual void SetUp() { |