2020
2121#include " TestHelpers.h"
2222
23+ // Verify that the memory in use is a multiple of 4 bytes
24+ #define ASSERT_ALIGNED (w ) \
25+ ASSERT_EQ (((w)->sizeInUse() & 3), 0); \
26+ ASSERT_EQ (((w)->freeSpace() & 3), 0); \
27+ ASSERT_EQ (((w)->sizeOfSlots() & 3), 0)
28+
2329#define CREATE_WINDOW_1K \
2430 CursorWindow* w; \
25- CursorWindow::create (String8(" test" ), 1 << 10, &w);
31+ CursorWindow::create (String8(" test" ), 1 << 10, &w); \
32+ ASSERT_ALIGNED (w);
2633
2734#define CREATE_WINDOW_1K_3X3 \
2835 CursorWindow* w; \
2936 CursorWindow::create (String8(" test" ), 1 << 10, &w); \
3037 ASSERT_EQ (w->setNumColumns (3 ), OK); \
3138 ASSERT_EQ (w->allocRow (), OK); \
3239 ASSERT_EQ (w->allocRow (), OK); \
33- ASSERT_EQ (w->allocRow (), OK);
40+ ASSERT_EQ (w->allocRow (), OK); \
41+ ASSERT_ALIGNED (w);
3442
3543#define CREATE_WINDOW_2M \
3644 CursorWindow* w; \
37- CursorWindow::create (String8(" test" ), 1 << 21, &w);
45+ CursorWindow::create (String8(" test" ), 1 << 21, &w); \
46+ ASSERT_ALIGNED (w);
3847
3948static constexpr const size_t kHalfInlineSize = 8192 ;
4049static constexpr const size_t kGiantSize = 1048576 ;
@@ -48,6 +57,7 @@ TEST(CursorWindowTest, Empty) {
4857 ASSERT_EQ (w->getNumColumns (), 0 );
4958 ASSERT_EQ (w->size (), 1 << 10 );
5059 ASSERT_EQ (w->freeSpace (), 1 << 10 );
60+ ASSERT_ALIGNED (w);
5161}
5262
5363TEST (CursorWindowTest, SetNumColumns) {
@@ -59,6 +69,7 @@ TEST(CursorWindowTest, SetNumColumns) {
5969 ASSERT_NE (w->setNumColumns (5 ), OK);
6070 ASSERT_NE (w->setNumColumns (3 ), OK);
6171 ASSERT_EQ (w->getNumColumns (), 4 );
72+ ASSERT_ALIGNED (w);
6273}
6374
6475TEST (CursorWindowTest, SetNumColumnsAfterRow) {
@@ -69,6 +80,7 @@ TEST(CursorWindowTest, SetNumColumnsAfterRow) {
6980 ASSERT_EQ (w->allocRow (), OK);
7081 ASSERT_NE (w->setNumColumns (4 ), OK);
7182 ASSERT_EQ (w->getNumColumns (), 0 );
83+ ASSERT_ALIGNED (w);
7284}
7385
7486TEST (CursorWindowTest, AllocRow) {
@@ -82,14 +94,17 @@ TEST(CursorWindowTest, AllocRow) {
8294 ASSERT_EQ (w->allocRow (), OK);
8395 ASSERT_LT (w->freeSpace (), before);
8496 ASSERT_EQ (w->getNumRows (), 1 );
97+ ASSERT_ALIGNED (w);
8598
8699 // Verify we can unwind
87100 ASSERT_EQ (w->freeLastRow (), OK);
88101 ASSERT_EQ (w->freeSpace (), before);
89102 ASSERT_EQ (w->getNumRows (), 0 );
103+ ASSERT_ALIGNED (w);
90104
91105 // Can't unwind when no rows left
92106 ASSERT_NE (w->freeLastRow (), OK);
107+ ASSERT_ALIGNED (w);
93108}
94109
95110TEST (CursorWindowTest, AllocRowBounds) {
@@ -99,6 +114,7 @@ TEST(CursorWindowTest, AllocRowBounds) {
99114 ASSERT_EQ (w->setNumColumns (60 ), OK);
100115 ASSERT_EQ (w->allocRow (), OK);
101116 ASSERT_NE (w->allocRow (), OK);
117+ ASSERT_ALIGNED (w);
102118}
103119
104120TEST (CursorWindowTest, StoreNull) {
@@ -115,6 +131,7 @@ TEST(CursorWindowTest, StoreNull) {
115131 auto field = w->getFieldSlot (0 , 0 );
116132 ASSERT_EQ (w->getFieldSlotType (field), CursorWindow::FIELD_TYPE_NULL);
117133 }
134+ ASSERT_ALIGNED (w);
118135}
119136
120137TEST (CursorWindowTest, StoreLong) {
@@ -133,6 +150,7 @@ TEST(CursorWindowTest, StoreLong) {
133150 ASSERT_EQ (w->getFieldSlotType (field), CursorWindow::FIELD_TYPE_INTEGER);
134151 ASSERT_EQ (w->getFieldSlotValueLong (field), 0xcafe );
135152 }
153+ ASSERT_ALIGNED (w);
136154}
137155
138156TEST (CursorWindowTest, StoreString) {
@@ -154,6 +172,7 @@ TEST(CursorWindowTest, StoreString) {
154172 auto actual = w->getFieldSlotValueString (field, &size);
155173 ASSERT_EQ (std::string (actual), " cafe" );
156174 }
175+ ASSERT_ALIGNED (w);
157176}
158177
159178TEST (CursorWindowTest, StoreBounds) {
@@ -174,6 +193,7 @@ TEST(CursorWindowTest, StoreBounds) {
174193 ASSERT_EQ (w->getFieldSlot (-1 , 0 ), nullptr );
175194 ASSERT_EQ (w->getFieldSlot (0 , -1 ), nullptr );
176195 ASSERT_EQ (w->getFieldSlot (-1 , -1 ), nullptr );
196+ ASSERT_ALIGNED (w);
177197}
178198
179199TEST (CursorWindowTest, Inflate) {
@@ -233,6 +253,7 @@ TEST(CursorWindowTest, Inflate) {
233253 ASSERT_NE (actual, buf);
234254 ASSERT_EQ (memcmp (buf, actual, kHalfInlineSize ), 0 );
235255 }
256+ ASSERT_ALIGNED (w);
236257}
237258
238259TEST (CursorWindowTest, ParcelEmpty) {
@@ -248,10 +269,12 @@ TEST(CursorWindowTest, ParcelEmpty) {
248269 ASSERT_EQ (w->getNumColumns (), 0 );
249270 ASSERT_EQ (w->size (), 0 );
250271 ASSERT_EQ (w->freeSpace (), 0 );
272+ ASSERT_ALIGNED (w);
251273
252274 // We can't mutate the window after parceling
253275 ASSERT_NE (w->setNumColumns (4 ), OK);
254276 ASSERT_NE (w->allocRow (), OK);
277+ ASSERT_ALIGNED (w);
255278}
256279
257280TEST (CursorWindowTest, ParcelSmall) {
@@ -310,6 +333,7 @@ TEST(CursorWindowTest, ParcelSmall) {
310333 ASSERT_EQ (actualSize, 0 );
311334 ASSERT_NE (actual, nullptr );
312335 }
336+ ASSERT_ALIGNED (w);
313337}
314338
315339TEST (CursorWindowTest, ParcelLarge) {
@@ -362,6 +386,7 @@ TEST(CursorWindowTest, ParcelLarge) {
362386 ASSERT_EQ (actualSize, 0 );
363387 ASSERT_NE (actual, nullptr );
364388 }
389+ ASSERT_ALIGNED (w);
365390}
366391
367392} // android
0 commit comments