123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- #include "tests/BitArrayTests.h"
- #include "tests/Test.h"
- #include "utils/BitArray.h"
- #include "utils/StringBuffer.h"
- typedef StringBuffer<50> String;
- static void testSetRead(Test& test) {
- BitArray<4, 3> bits;
- bits[0] = 1;
- bits[1] = 2;
- bits[2] = 3;
- bits[3] = 4;
- test.checkEqual(1, static_cast<int> (bits[0]), "set and read correct value");
- test.checkEqual(2, static_cast<int> (bits[1]), "set and read correct value");
- test.checkEqual(3, static_cast<int> (bits[2]), "set and read correct value");
- test.checkEqual(4, static_cast<int> (bits[3]), "set and read correct value");
- }
- static void testBigSetRead(Test& test) {
- BitArray<100, 13> bits;
- for(int i = 0; i < bits.getLength(); i++) {
- bits[i] = i;
- }
- for(int i = 0; i < bits.getLength(); i++) {
- test.checkEqual(i, static_cast<int> (bits[i]), "set and read correct value over long array");
- }
- }
- static void testRandomSetRead(Test& test) {
- const int length = 100;
- int data[length];
- BitArray<100, 13> bits;
- int seed = 534;
- for(int k = 0; k < 20; k++) {
- for(int i = 0; i < bits.getLength(); i++) {
- seed = seed * 636455 + 53453;
- bits[i] = seed & (0x1FFF);
- data[i] = seed & (0x1FFF);
- }
- }
- for(int i = 0; i < bits.getLength(); i++) {
- test.checkEqual(data[i], static_cast<int> (bits[i]), "set and read correct value with random input");
- }
- }
- static void testReadOnly(Test& test) {
- BitArray<4, 3> bits;
- bits[0] = 1;
- bits[1] = 2;
- bits[2] = 3;
- bits[3] = 4;
- const BitArray<4, 3> bits2 = bits;
- test.checkEqual(1, bits2[0], "can read from const");
- test.checkEqual(2, bits2[1], "can read from const");
- test.checkEqual(3, bits2[2], "can read from const");
- test.checkEqual(4, bits2[3], "can read from const");
- }
- static void testChainedSet(Test& test) {
- BitArray<4, 3> bits;
- bits[0] = bits[2] = bits[3] = 2;
- bits[3] = bits[1] = 7;
- test.checkEqual(2, static_cast<int> (bits[0]), "chained set sets correct value");
- test.checkEqual(7, static_cast<int> (bits[1]), "chained set sets correct value");
- test.checkEqual(2, static_cast<int> (bits[2]), "chained set sets correct value");
- test.checkEqual(7, static_cast<int> (bits[3]), "chained set sets correct value");
- }
- static void testToString1(Test& test) {
- BitArray<4, 3> bits;
- bits[0] = 1;
- bits[1] = 2;
- bits[2] = 3;
- bits[3] = 4;
- String s;
- s.append(bits);
- test.checkEqual(String("[1, 2, 3, 4]"), s, "bit array to string 1");
- }
- static void testToString2(Test& test) {
- BitArray<1, 3> a;
- a[0] = 1;
- String s;
- s.append(a);
- test.checkEqual(String("[1]"), s, "bit array to string 1");
- }
- void BitArrayTests::test() {
- Test test("BitArray");
- testSetRead(test);
- testBigSetRead(test);
- testRandomSetRead(test);
- testReadOnly(test);
- testChainedSet(test);
- testToString1(test);
- testToString2(test);
- test.finalize();
- }
|