aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/unit/testPartitioning.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'test/unit/testPartitioning.cxx')
-rw-r--r--test/unit/testPartitioning.cxx302
1 files changed, 137 insertions, 165 deletions
diff --git a/test/unit/testPartitioning.cxx b/test/unit/testPartitioning.cxx
index 1644d787f..f86dcf4db 100644
--- a/test/unit/testPartitioning.cxx
+++ b/test/unit/testPartitioning.cxx
@@ -9,7 +9,7 @@
#include "SplitVector.h"
#include "Partitioning.h"
-#include <gtest/gtest.h>
+#include "catch.hpp"
const int growSize = 4;
@@ -18,193 +18,165 @@ static const int testArray[lengthTestArray] = {3, 4, 5, 6, 7, 8, 9, 10};
// Test SplitVectorWithRangeAdd.
-class SplitVectorWithRangeAddTest : public ::testing::Test {
-protected:
- virtual void SetUp() {
- psvwra = new SplitVectorWithRangeAdd(growSize);
- }
-
- virtual void TearDown() {
- delete psvwra;
- psvwra = 0;
- }
-
- SplitVectorWithRangeAdd *psvwra;
-};
+TEST_CASE("SplitVectorWithRangeAdd") {
-TEST_F(SplitVectorWithRangeAddTest, IsEmptyInitially) {
- EXPECT_EQ(0, psvwra->Length());
-}
+ SplitVectorWithRangeAdd svwra(growSize);
-TEST_F(SplitVectorWithRangeAddTest, IncrementExceptEnds) {
- psvwra->InsertFromArray(0, testArray, 0, lengthTestArray);
- psvwra->RangeAddDelta(1, lengthTestArray-1, 1);
- for (int i=0; i<psvwra->Length(); i++) {
- if ((i == 0) || (i == lengthTestArray-1))
- EXPECT_EQ(i+3, psvwra->ValueAt(i));
- else
- EXPECT_EQ(i+4, psvwra->ValueAt(i));
+ SECTION("IsEmptyInitially") {
+ REQUIRE(0 == svwra.Length());
}
-}
-
-// Test Partitioning.
-class PartitioningTest : public ::testing::Test {
-protected:
- virtual void SetUp() {
- pp = new Partitioning(growSize);
+ SECTION("IncrementExceptEnds") {
+ svwra.InsertFromArray(0, testArray, 0, lengthTestArray);
+ svwra.RangeAddDelta(1, lengthTestArray-1, 1);
+ for (int i=0; i<svwra.Length(); i++) {
+ if ((i == 0) || (i == lengthTestArray-1))
+ REQUIRE((i+3) == svwra.ValueAt(i));
+ else
+ REQUIRE((i+4) == svwra.ValueAt(i));
+ }
}
- virtual void TearDown() {
- delete pp;
- pp = 0;
- }
+}
- Partitioning *pp;
-};
+// Test Partitioning.
-TEST_F(PartitioningTest, IsEmptyInitially) {
- EXPECT_EQ(1, pp->Partitions());
- EXPECT_EQ(0, pp->PositionFromPartition(pp->Partitions()));
- EXPECT_EQ(0, pp->PartitionFromPosition(0));
-}
+TEST_CASE("Partitioning") {
-TEST_F(PartitioningTest, SimpleInsert) {
- pp->InsertText(0, 1);
- EXPECT_EQ(1, pp->Partitions());
- EXPECT_EQ(1, pp->PositionFromPartition(pp->Partitions()));
-}
+ Partitioning part(growSize);
-TEST_F(PartitioningTest, TwoPartitions) {
- pp->InsertText(0, 2);
- pp->InsertPartition(1, 1);
- EXPECT_EQ(2, pp->Partitions());
- EXPECT_EQ(0, pp->PositionFromPartition(0));
- EXPECT_EQ(1, pp->PositionFromPartition(1));
- EXPECT_EQ(2, pp->PositionFromPartition(2));
-}
+ SECTION("IsEmptyInitially") {
+ REQUIRE(1 == part.Partitions());
+ REQUIRE(0 == part.PositionFromPartition(part.Partitions()));
+ REQUIRE(0 == part.PartitionFromPosition(0));
+ }
-TEST_F(PartitioningTest, MoveStart) {
- pp->InsertText(0, 3);
- pp->InsertPartition(1, 2);
- pp->SetPartitionStartPosition(1,1);
- EXPECT_EQ(2, pp->Partitions());
- EXPECT_EQ(0, pp->PositionFromPartition(0));
- EXPECT_EQ(1, pp->PositionFromPartition(1));
- EXPECT_EQ(3, pp->PositionFromPartition(2));
-}
+ SECTION("SimpleInsert") {
+ part.InsertText(0, 1);
+ REQUIRE(1 == part.Partitions());
+ REQUIRE(1 == part.PositionFromPartition(part.Partitions()));
+ }
-TEST_F(PartitioningTest, InsertAgain) {
- pp->InsertText(0, 3);
- pp->InsertPartition(1, 2);
- pp->InsertText(0,3);
- pp->InsertText(1,2);
- EXPECT_EQ(2, pp->Partitions());
- EXPECT_EQ(0, pp->PositionFromPartition(0));
- EXPECT_EQ(5, pp->PositionFromPartition(1));
- EXPECT_EQ(8, pp->PositionFromPartition(2));
-}
+ SECTION("TwoPartitions") {
+ part.InsertText(0, 2);
+ part.InsertPartition(1, 1);
+ REQUIRE(2 == part.Partitions());
+ REQUIRE(0 == part.PositionFromPartition(0));
+ REQUIRE(1 == part.PositionFromPartition(1));
+ REQUIRE(2 == part.PositionFromPartition(2));
+ }
-TEST_F(PartitioningTest, InsertReversed) {
- pp->InsertText(0, 3);
- pp->InsertPartition(1, 2);
- pp->InsertText(1,2);
- pp->InsertText(0,3);
- EXPECT_EQ(2, pp->Partitions());
- EXPECT_EQ(0, pp->PositionFromPartition(0));
- EXPECT_EQ(5, pp->PositionFromPartition(1));
- EXPECT_EQ(8, pp->PositionFromPartition(2));
-}
+ SECTION("MoveStart") {
+ part.InsertText(0, 3);
+ part.InsertPartition(1, 2);
+ part.SetPartitionStartPosition(1,1);
+ REQUIRE(2 == part.Partitions());
+ REQUIRE(0 == part.PositionFromPartition(0));
+ REQUIRE(1 == part.PositionFromPartition(1));
+ REQUIRE(3 == part.PositionFromPartition(2));
+ }
-TEST_F(PartitioningTest, InverseSearch) {
- pp->InsertText(0, 3);
- pp->InsertPartition(1, 2);
- pp->SetPartitionStartPosition(1,1);
+ SECTION("InsertAgain") {
+ part.InsertText(0, 3);
+ part.InsertPartition(1, 2);
+ part.InsertText(0,3);
+ part.InsertText(1,2);
+ REQUIRE(2 == part.Partitions());
+ REQUIRE(0 == part.PositionFromPartition(0));
+ REQUIRE(5 == part.PositionFromPartition(1));
+ REQUIRE(8 == part.PositionFromPartition(2));
+ }
- EXPECT_EQ(2, pp->Partitions());
- EXPECT_EQ(0, pp->PositionFromPartition(0));
- EXPECT_EQ(1, pp->PositionFromPartition(1));
- EXPECT_EQ(3, pp->PositionFromPartition(2));
+ SECTION("InsertReversed") {
+ part.InsertText(0, 3);
+ part.InsertPartition(1, 2);
+ part.InsertText(1,2);
+ part.InsertText(0,3);
+ REQUIRE(2 == part.Partitions());
+ REQUIRE(0 == part.PositionFromPartition(0));
+ REQUIRE(5 == part.PositionFromPartition(1));
+ REQUIRE(8 == part.PositionFromPartition(2));
+ }
- EXPECT_EQ(0, pp->PartitionFromPosition(0));
- EXPECT_EQ(1, pp->PartitionFromPosition(1));
- EXPECT_EQ(1, pp->PartitionFromPosition(2));
+ SECTION("InverseSearch") {
+ part.InsertText(0, 3);
+ part.InsertPartition(1, 2);
+ part.SetPartitionStartPosition(1,1);
- EXPECT_EQ(1, pp->PartitionFromPosition(3));
-}
+ REQUIRE(2 == part.Partitions());
+ REQUIRE(0 == part.PositionFromPartition(0));
+ REQUIRE(1 == part.PositionFromPartition(1));
+ REQUIRE(3 == part.PositionFromPartition(2));
-TEST_F(PartitioningTest, DeletePartition) {
- pp->InsertText(0, 2);
- pp->InsertPartition(1, 1);
- pp->RemovePartition(1);
- EXPECT_EQ(1, pp->Partitions());
- EXPECT_EQ(0, pp->PositionFromPartition(0));
- EXPECT_EQ(2, pp->PositionFromPartition(1));
-}
+ REQUIRE(0 == part.PartitionFromPosition(0));
+ REQUIRE(1 == part.PartitionFromPosition(1));
+ REQUIRE(1 == part.PartitionFromPosition(2));
-TEST_F(PartitioningTest, DeleteAll) {
- pp->InsertText(0, 3);
- pp->InsertPartition(1, 2);
- pp->SetPartitionStartPosition(1,1);
- pp->DeleteAll();
- // Back to initial state
- EXPECT_EQ(1, pp->Partitions());
- EXPECT_EQ(0, pp->PositionFromPartition(pp->Partitions()));
-}
+ REQUIRE(1 == part.PartitionFromPosition(3));
+ }
-TEST_F(PartitioningTest, TestBackwards) {
- pp->InsertText(0, 10);
- pp->InsertPartition(1, 3);
- pp->InsertPartition(2, 6);
- pp->InsertPartition(3, 9);
- pp->InsertText(2,4);
- pp->InsertText(1,2);
- pp->InsertText(0,3);
- EXPECT_EQ(4, pp->Partitions());
- EXPECT_EQ(0, pp->PositionFromPartition(0));
- EXPECT_EQ(6, pp->PositionFromPartition(1));
- EXPECT_EQ(11, pp->PositionFromPartition(2));
- EXPECT_EQ(18, pp->PositionFromPartition(3));
- EXPECT_EQ(19, pp->PositionFromPartition(4));
-}
+ SECTION("DeletePartition") {
+ part.InsertText(0, 2);
+ part.InsertPartition(1, 1);
+ part.RemovePartition(1);
+ REQUIRE(1 == part.Partitions());
+ REQUIRE(0 == part.PositionFromPartition(0));
+ REQUIRE(2 == part.PositionFromPartition(1));
+ }
-TEST_F(PartitioningTest, TestMany) {
- // Provoke backstep call
- pp->InsertText(0, 42);
- for (int i=0; i<20; i++) {
- pp->InsertPartition(i+1, (i+1) * 2);
+ SECTION("DeleteAll") {
+ part.InsertText(0, 3);
+ part.InsertPartition(1, 2);
+ part.SetPartitionStartPosition(1,1);
+ part.DeleteAll();
+ // Back to initial state
+ REQUIRE(1 == part.Partitions());
+ REQUIRE(0 == part.PositionFromPartition(part.Partitions()));
}
- for (int i=20; i>0; i--) {
- pp->InsertText(i,2);
+
+ SECTION("TestBackwards") {
+ part.InsertText(0, 10);
+ part.InsertPartition(1, 3);
+ part.InsertPartition(2, 6);
+ part.InsertPartition(3, 9);
+ part.InsertText(2,4);
+ part.InsertText(1,2);
+ part.InsertText(0,3);
+ REQUIRE(4 == part.Partitions());
+ REQUIRE(0 == part.PositionFromPartition(0));
+ REQUIRE(6 == part.PositionFromPartition(1));
+ REQUIRE(11 == part.PositionFromPartition(2));
+ REQUIRE(18 == part.PositionFromPartition(3));
+ REQUIRE(19 == part.PositionFromPartition(4));
}
- EXPECT_EQ(21, pp->Partitions());
- for (int i=1; i<20; i++) {
- EXPECT_EQ(i*4 - 2, pp->PositionFromPartition(i));
- EXPECT_EQ(i, pp->PartitionFromPosition(i*4 - 2));
+
+ SECTION("TestMany") {
+ // Provoke backstep call
+ part.InsertText(0, 42);
+ for (int i=0; i<20; i++) {
+ part.InsertPartition(i+1, (i+1) * 2);
+ }
+ for (int i=20; i>0; i--) {
+ part.InsertText(i,2);
+ }
+ REQUIRE(21 == part.Partitions());
+ for (int i=1; i<20; i++) {
+ REQUIRE((i*4 - 2) == part.PositionFromPartition(i));
+ REQUIRE(i == part.PartitionFromPosition(i*4 - 2));
+ }
+ part.InsertText(19,2);
+ REQUIRE(3 == part.PartitionFromPosition(10));
+ part.InsertText(0,2);
+ part.InsertText(0,-2);
+ part.RemovePartition(1);
+ REQUIRE(0 == part.PositionFromPartition(0));
+ REQUIRE(6 == part.PositionFromPartition(1));
+ REQUIRE(10 == part.PositionFromPartition(2));
+ part.RemovePartition(10);
+ REQUIRE(46 == part.PositionFromPartition(10));
+ REQUIRE(10 == part.PartitionFromPosition(46));
+ REQUIRE(50 == part.PositionFromPartition(11));
+ REQUIRE(11 == part.PartitionFromPosition(50));
}
- pp->InsertText(19,2);
- EXPECT_EQ(3, pp->PartitionFromPosition(10));
- pp->InsertText(0,2);
- pp->InsertText(0,-2);
- pp->RemovePartition(1);
- EXPECT_EQ(0, pp->PositionFromPartition(0));
- EXPECT_EQ(6, pp->PositionFromPartition(1));
- EXPECT_EQ(10, pp->PositionFromPartition(2));
- pp->RemovePartition(10);
- EXPECT_EQ(46, pp->PositionFromPartition(10));
- EXPECT_EQ(10, pp->PartitionFromPosition(46));
- EXPECT_EQ(50, pp->PositionFromPartition(11));
- EXPECT_EQ(11, pp->PartitionFromPosition(50));
-}
-#if !PLAT_WIN
-// Omit death tests on Windows where they trigger a system "unitTest.exe has stopped working" popup.
-TEST_F(PartitioningTest, OutOfRangeDeathTest) {
- ::testing::FLAGS_gtest_death_test_style = "threadsafe";
- pp->InsertText(0, 2);
- pp->InsertPartition(1, 1);
- EXPECT_EQ(2, pp->Partitions());
- ASSERT_DEATH(pp->PositionFromPartition(-1), "Assertion");
- ASSERT_DEATH(pp->PositionFromPartition(3), "Assertion");
}
-#endif