|
| 1 | +#include <BSTest.h> |
| 2 | + |
| 3 | +BS_ENV_DECLARE(); |
| 4 | + |
| 5 | +void setup() |
| 6 | +{ |
| 7 | + Serial.begin(115200); |
| 8 | + BS_RUN(Serial); |
| 9 | +} |
| 10 | + |
| 11 | + |
| 12 | +TEST_CASE("If randomSeed is not called, random() uses hardware PRNG", "[random]") |
| 13 | +{ |
| 14 | + int32_t data[32]; |
| 15 | + srand(10); |
| 16 | + for (int i = 0; i < sizeof(data)/sizeof(data[0]); ++i) { |
| 17 | + data[i] = random(0x7fffffff); |
| 18 | + } |
| 19 | + srand(10); |
| 20 | + for (int i = 0; i < sizeof(data)/sizeof(data[0]); ++i) { |
| 21 | + CHECK(random(0x7fffffff) != data[i]); |
| 22 | + } |
| 23 | +} |
| 24 | + |
| 25 | + |
| 26 | +TEST_CASE("If randomSeed is called, we get same random sequence every time", "[random]") |
| 27 | +{ |
| 28 | + const int32_t reference_sequence[] = { |
| 29 | + 2104627054, 2013331137, 258660947, 107061148, |
| 30 | + 317460219, 663931879, 307161078, 1718702872, |
| 31 | + 1306951058, 1066376876, 624381721, 850811527, |
| 32 | + 329784053, 726742932, 182903521, 787925035, |
| 33 | + 1364123723, 198878220, 1117075042, 1108236242, |
| 34 | + 1775000610, 500470195, 896676389, 6341838, |
| 35 | + 785214762, 1084946248, 1601419914, 2058135092, |
| 36 | + 1671754873, 1952290050, 1572975837, 1596343802, |
| 37 | + 240941423, 1843946550, 793779187, 441773333, |
| 38 | + 884819086, 590861527, 1676358848, 2132930493, |
| 39 | + 969627641, 930717537, 195748182, 2064531490, |
| 40 | + 1195920216, 347502525, 584628940, 1938341337, |
| 41 | + 642503024, 915004020, 2034338438, 1690522669, |
| 42 | + 1805037441, 1904039418, 1491310300, 227517325, |
| 43 | + 17943876, 570537582, 1409581066, 1819703730, |
| 44 | + 730240988, 786466794, 1411137128, 1680096093, |
| 45 | + }; |
| 46 | + randomSeed(42); |
| 47 | + for (int i = 0; i < sizeof(reference_sequence)/sizeof(reference_sequence[0]); ++i) { |
| 48 | + CHECK(random(0x7fffffff) == reference_sequence[i]); |
| 49 | + } |
| 50 | +} |
| 51 | + |
| 52 | + |
| 53 | +void loop() {} |
0 commit comments