|
@@ -33,7 +33,10 @@ LOLUNIT_FIXTURE(RandTest) |
|
|
|
|
|
|
|
|
for (int i = 0; i < rolls; ++i) |
|
|
for (int i = 0; i < rolls; ++i) |
|
|
{ |
|
|
{ |
|
|
uint32_t r = rand<int>(); |
|
|
|
|
|
|
|
|
int32_t r = rand<int32_t>(); |
|
|
|
|
|
|
|
|
|
|
|
LOLUNIT_ASSERT_GEQUAL(r, 0); |
|
|
|
|
|
|
|
|
for (int k = 0; k < 31; k++) |
|
|
for (int k = 0; k < 31; k++) |
|
|
{ |
|
|
{ |
|
|
bits[k] += r & 1; |
|
|
bits[k] += r & 1; |
|
@@ -44,8 +47,66 @@ LOLUNIT_FIXTURE(RandTest) |
|
|
for (int k = 0; k < 31; k++) |
|
|
for (int k = 0; k < 31; k++) |
|
|
{ |
|
|
{ |
|
|
LOLUNIT_SET_CONTEXT(k); |
|
|
LOLUNIT_SET_CONTEXT(k); |
|
|
LOLUNIT_ASSERT_GREATER(bits[k], rolls / 3); |
|
|
|
|
|
LOLUNIT_ASSERT_LESS(bits[k], rolls * 2 / 3); |
|
|
|
|
|
|
|
|
LOLUNIT_ASSERT_GEQUAL(bits[k], rolls / 3); |
|
|
|
|
|
LOLUNIT_ASSERT_LEQUAL(bits[k], rolls * 2 / 3); |
|
|
|
|
|
LOLUNIT_UNSET_CONTEXT(k); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
LOLUNIT_TEST(Int16Bits) |
|
|
|
|
|
{ |
|
|
|
|
|
int const rolls = 2000; |
|
|
|
|
|
|
|
|
|
|
|
int bits[16]; |
|
|
|
|
|
memset(bits, 0, sizeof(bits)); |
|
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < rolls; ++i) |
|
|
|
|
|
{ |
|
|
|
|
|
int16_t r = rand<int16_t>(); |
|
|
|
|
|
|
|
|
|
|
|
LOLUNIT_ASSERT_GEQUAL(r, 0); |
|
|
|
|
|
|
|
|
|
|
|
for (int k = 0; k < 15; k++) |
|
|
|
|
|
{ |
|
|
|
|
|
bits[k] += r & 1; |
|
|
|
|
|
r >>= 1; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
for (int k = 0; k < 15; k++) |
|
|
|
|
|
{ |
|
|
|
|
|
LOLUNIT_SET_CONTEXT(k); |
|
|
|
|
|
LOLUNIT_ASSERT_GEQUAL(bits[k], rolls / 3); |
|
|
|
|
|
LOLUNIT_ASSERT_LEQUAL(bits[k], rolls * 2 / 3); |
|
|
|
|
|
LOLUNIT_UNSET_CONTEXT(k); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
LOLUNIT_TEST(Int8Bits) |
|
|
|
|
|
{ |
|
|
|
|
|
int const rolls = 2000; |
|
|
|
|
|
|
|
|
|
|
|
int bits[8]; |
|
|
|
|
|
memset(bits, 0, sizeof(bits)); |
|
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < rolls; ++i) |
|
|
|
|
|
{ |
|
|
|
|
|
int8_t r = rand<int8_t>(); |
|
|
|
|
|
|
|
|
|
|
|
LOLUNIT_ASSERT_GEQUAL(r, 0); |
|
|
|
|
|
|
|
|
|
|
|
for (int k = 0; k < 7; k++) |
|
|
|
|
|
{ |
|
|
|
|
|
bits[k] += r & 1; |
|
|
|
|
|
r >>= 1; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
for (int k = 0; k < 7; k++) |
|
|
|
|
|
{ |
|
|
|
|
|
LOLUNIT_SET_CONTEXT(k); |
|
|
|
|
|
LOLUNIT_ASSERT_GEQUAL(bits[k], rolls / 3); |
|
|
|
|
|
LOLUNIT_ASSERT_LEQUAL(bits[k], rolls * 2 / 3); |
|
|
LOLUNIT_UNSET_CONTEXT(k); |
|
|
LOLUNIT_UNSET_CONTEXT(k); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|