fixed stair-building issue new test-cases added elevator support fixed/improved some walker modules
207 lines
3.7 KiB
C++
207 lines
3.7 KiB
C++
#ifdef WITH_TESTS
|
|
|
|
#include "../Tests.h"
|
|
#include "../../data/RingBuffer.h"
|
|
|
|
TEST(RingBuffer, reset) {
|
|
|
|
RingBuffer<int> buf(4);
|
|
|
|
ASSERT_EQ(0, buf.size());
|
|
ASSERT_TRUE(buf.empty());
|
|
|
|
buf.add(3);
|
|
ASSERT_EQ(1, buf.size());
|
|
ASSERT_FALSE(buf.empty());
|
|
|
|
buf.reset();
|
|
ASSERT_EQ(0, buf.size());
|
|
ASSERT_TRUE(buf.empty());
|
|
|
|
buf.add(4);
|
|
ASSERT_EQ(1, buf.size());
|
|
ASSERT_FALSE(buf.empty());
|
|
ASSERT_EQ(4, buf.get());
|
|
|
|
}
|
|
|
|
TEST(RingBuffer, add) {
|
|
|
|
RingBuffer<int> buf(4);
|
|
|
|
ASSERT_EQ(0, buf.size());
|
|
ASSERT_TRUE(buf.empty());
|
|
|
|
buf.add(9);
|
|
ASSERT_EQ(1, buf.size());
|
|
ASSERT_FALSE(buf.empty());
|
|
ASSERT_EQ(9, buf.get());
|
|
ASSERT_TRUE(buf.empty());
|
|
|
|
buf.add(2);
|
|
buf.add(4);
|
|
buf.add(3);
|
|
ASSERT_EQ(3, buf.size());
|
|
ASSERT_FALSE(buf.empty());
|
|
ASSERT_EQ(2, buf.get());
|
|
ASSERT_EQ(4, buf.get());
|
|
ASSERT_EQ(3, buf.get());
|
|
ASSERT_TRUE(buf.empty());
|
|
|
|
buf.add(5);
|
|
buf.add(7);
|
|
buf.add(8);
|
|
ASSERT_EQ(3, buf.size());
|
|
ASSERT_FALSE(buf.empty());
|
|
ASSERT_EQ(5, buf.get());
|
|
ASSERT_EQ(7, buf.get());
|
|
ASSERT_EQ(8, buf.get());
|
|
ASSERT_TRUE(buf.empty());
|
|
|
|
}
|
|
|
|
TEST(RingBuffer, peek) {
|
|
|
|
RingBuffer<int> buf(4);
|
|
|
|
buf.add(11);
|
|
ASSERT_EQ(11, buf.peek(0));
|
|
|
|
buf.add(13);
|
|
ASSERT_EQ(11, buf.peek(0));
|
|
ASSERT_EQ(13, buf.peek(1));
|
|
|
|
buf.add(10);
|
|
ASSERT_EQ(11, buf.peek(0));
|
|
ASSERT_EQ(13, buf.peek(1));
|
|
ASSERT_EQ(10, buf.peek(2));
|
|
|
|
buf.add(17);
|
|
ASSERT_EQ(11, buf.peek(0));
|
|
ASSERT_EQ(13, buf.peek(1));
|
|
ASSERT_EQ(10, buf.peek(2));
|
|
ASSERT_EQ(17, buf.peek(3));
|
|
|
|
buf.add(18);
|
|
ASSERT_EQ(18, buf.peek(0));
|
|
ASSERT_EQ(13, buf.peek(1));
|
|
ASSERT_EQ(10, buf.peek(2));
|
|
ASSERT_EQ(17, buf.peek(3));
|
|
|
|
buf.add(9);
|
|
ASSERT_EQ(18, buf.peek(0));
|
|
ASSERT_EQ( 9, buf.peek(1));
|
|
ASSERT_EQ(10, buf.peek(2));
|
|
ASSERT_EQ(17, buf.peek(3));
|
|
|
|
buf.add(88);
|
|
ASSERT_EQ(18, buf.peek(0));
|
|
ASSERT_EQ( 9, buf.peek(1));
|
|
ASSERT_EQ(88, buf.peek(2));
|
|
ASSERT_EQ(17, buf.peek(3));
|
|
|
|
buf.add(54);
|
|
ASSERT_EQ(18, buf.peek(0));
|
|
ASSERT_EQ( 9, buf.peek(1));
|
|
ASSERT_EQ(88, buf.peek(2));
|
|
ASSERT_EQ(54, buf.peek(3));
|
|
|
|
buf.add(1);
|
|
ASSERT_EQ( 1, buf.peek(0));
|
|
ASSERT_EQ( 9, buf.peek(1));
|
|
ASSERT_EQ(88, buf.peek(2));
|
|
ASSERT_EQ(54, buf.peek(3));
|
|
|
|
}
|
|
|
|
TEST(RingBuffer, contains) {
|
|
|
|
RingBuffer<int> buf(4);
|
|
|
|
ASSERT_FALSE(buf.contains(0));
|
|
buf.add(0);
|
|
ASSERT_TRUE(buf.contains(0));
|
|
|
|
ASSERT_FALSE(buf.contains(3));
|
|
buf.add(3);
|
|
ASSERT_TRUE(buf.contains(0));
|
|
ASSERT_TRUE(buf.contains(3));
|
|
|
|
ASSERT_FALSE(buf.contains(7));
|
|
buf.add(7);
|
|
ASSERT_TRUE(buf.contains(0));
|
|
ASSERT_TRUE(buf.contains(3));
|
|
ASSERT_TRUE(buf.contains(7));
|
|
|
|
ASSERT_FALSE(buf.contains(8));
|
|
buf.add(8);
|
|
ASSERT_TRUE(buf.contains(0));
|
|
ASSERT_TRUE(buf.contains(3));
|
|
ASSERT_TRUE(buf.contains(7));
|
|
ASSERT_TRUE(buf.contains(8));
|
|
|
|
|
|
ASSERT_FALSE(buf.contains(11));
|
|
buf.add(11);
|
|
ASSERT_FALSE(buf.contains(0));
|
|
ASSERT_TRUE(buf.contains(3));
|
|
ASSERT_TRUE(buf.contains(7));
|
|
ASSERT_TRUE(buf.contains(8));
|
|
ASSERT_TRUE(buf.contains(11));
|
|
|
|
}
|
|
|
|
TEST(RingBuffer, iterator) {
|
|
|
|
RingBuffer<int> buf(4);
|
|
|
|
int sum;
|
|
|
|
buf.add(1);
|
|
sum = 0; for (int i : buf) {sum += i;}
|
|
ASSERT_EQ(1, sum);
|
|
|
|
buf.add(2);
|
|
sum = 0; for (int i : buf) {sum += i;}
|
|
ASSERT_EQ(1+2, sum);
|
|
|
|
buf.add(3);
|
|
sum = 0; for (int i : buf) {sum += i;}
|
|
ASSERT_EQ(1+2+3, sum);
|
|
|
|
buf.add(4);
|
|
sum = 0; for (int i : buf) {sum += i;}
|
|
ASSERT_EQ(1+2+3+4, sum);
|
|
|
|
// prevent overflow
|
|
buf.get();
|
|
|
|
buf.add(5);
|
|
sum = 0; for (int i : buf) {sum += i;}
|
|
ASSERT_EQ(2+3+4+5, sum);
|
|
|
|
|
|
ASSERT_EQ(2, buf.get());
|
|
ASSERT_EQ(3, buf.size());
|
|
sum = 0; for (int i : buf) {sum += i;}
|
|
ASSERT_EQ(3+4+5, sum);
|
|
|
|
buf.get();
|
|
ASSERT_EQ(2, buf.size());
|
|
sum = 0; for (int i : buf) {sum += i;}
|
|
ASSERT_EQ(4+5, sum);
|
|
|
|
buf.get();
|
|
ASSERT_EQ(1, buf.size());
|
|
sum = 0; for (int i : buf) {sum += i;}
|
|
ASSERT_EQ(5, sum);
|
|
|
|
buf.get();
|
|
ASSERT_EQ(0, buf.size());
|
|
sum = 0; for (int i : buf) {sum += i;}
|
|
ASSERT_EQ(0, sum);
|
|
|
|
}
|
|
|
|
#endif
|