Index: runtime/vm/bitmap_test.cc |
diff --git a/runtime/vm/bitmap_test.cc b/runtime/vm/bitmap_test.cc |
index 4e9fc7cdc1c317a172d6126857fe7e4d4cd289a8..d4a39798f7a5260929aaf57a4151a92281755bf1 100644 |
--- a/runtime/vm/bitmap_test.cc |
+++ b/runtime/vm/bitmap_test.cc |
@@ -12,15 +12,14 @@ namespace dart { |
TEST_CASE(BitmapBuilder) { |
// Test basic bit map builder operations. |
BitmapBuilder* builder1 = new BitmapBuilder(); |
- |
- EXPECT_EQ(-1, builder1->Maximum()); |
- EXPECT_EQ(-1, builder1->Minimum()); |
+ EXPECT_EQ(0, builder1->Length()); |
bool value = true; |
for (int32_t i = 0; i < 128; i++) { |
builder1->Set(i, value); |
value = !value; |
} |
+ EXPECT_EQ(128, builder1->Length()); |
value = true; |
for (int32_t i = 0; i < 128; i++) { |
EXPECT_EQ(value, builder1->Get(i)); |
@@ -31,28 +30,29 @@ TEST_CASE(BitmapBuilder) { |
builder1->Set(i, value); |
value = !value; |
} |
+ EXPECT_EQ(1024, builder1->Length()); |
value = true; |
for (int32_t i = 0; i < 1024; i++) { |
EXPECT_EQ(value, builder1->Get(i)); |
value = !value; |
} |
// Create a Stackmap object from the builder and verify its contents. |
- const Stackmap& stackmap1 = |
- Stackmap::Handle(Stackmap::New(0, 1024, builder1)); |
- EXPECT_EQ(1022, builder1->Maximum()); |
- EXPECT_EQ(0, builder1->Minimum()); |
+ const Stackmap& stackmap1 = Stackmap::Handle(Stackmap::New(0, builder1)); |
+ EXPECT_EQ(1024, stackmap1.Length()); |
OS::Print("%s\n", stackmap1.ToCString()); |
value = true; |
for (int32_t i = 0; i < 1024; i++) { |
EXPECT_EQ(value, stackmap1.IsObject(i)); |
value = !value; |
} |
- EXPECT(!stackmap1.IsObject(2056)); // Out of range so returns false. |
// Test the SetRange function in the builder. |
builder1->SetRange(0, 256, false); |
+ EXPECT_EQ(1024, builder1->Length()); |
builder1->SetRange(257, 1024, true); |
+ EXPECT_EQ(1025, builder1->Length()); |
builder1->SetRange(1025, 2048, false); |
+ EXPECT_EQ(2049, builder1->Length()); |
for (int32_t i = 0; i <= 256; i++) { |
EXPECT(!builder1->Get(i)); |
} |
@@ -62,10 +62,8 @@ TEST_CASE(BitmapBuilder) { |
for (int32_t i = 1025; i <= 2048; i++) { |
EXPECT(!builder1->Get(i)); |
} |
- const Stackmap& stackmap2 = |
- Stackmap::Handle(Stackmap::New(0, 2049, builder1)); |
- EXPECT_EQ(1024, builder1->Maximum()); |
- EXPECT_EQ(257, builder1->Minimum()); |
+ const Stackmap& stackmap2 = Stackmap::Handle(Stackmap::New(0, builder1)); |
+ EXPECT_EQ(2049, stackmap2.Length()); |
for (int32_t i = 0; i <= 256; i++) { |
EXPECT(!stackmap2.IsObject(i)); |
} |
@@ -75,6 +73,32 @@ TEST_CASE(BitmapBuilder) { |
for (int32_t i = 1025; i <= 2048; i++) { |
EXPECT(!stackmap2.IsObject(i)); |
} |
+ |
+ // Test using SetLength to shorten the builder, followed by lengthening. |
+ builder1->SetLength(747); |
+ EXPECT_EQ(747, builder1->Length()); |
+ for (int32_t i = 257; i < 747; ++i) { |
+ EXPECT(builder1->Get(i)); |
+ } |
+ |
+ builder1->Set(800, false); |
+ EXPECT_EQ(801, builder1->Length()); |
+ for (int32_t i = 257; i < 747; ++i) { |
+ EXPECT(builder1->Get(i)); |
+ } |
+ for (int32_t i = 747; i < 801; ++i) { |
+ EXPECT(!builder1->Get(i)); |
+ } |
+ |
+ builder1->Set(900, true); |
+ EXPECT_EQ(901, builder1->Length()); |
+ for (int32_t i = 257; i < 747; ++i) { |
+ EXPECT(builder1->Get(i)); |
+ } |
+ for (int32_t i = 747; i < 900; ++i) { |
+ EXPECT(!builder1->Get(i)); |
+ } |
+ EXPECT(builder1->Get(900)); |
} |
} // namespace dart |