#include #include #include #include #include #include #include "util/fifo.h" using namespace std; class FIFOTestSuite : public Test::Suite{ public: FIFOTestSuite(){ TEST_ADD(FIFOTestSuite::test_simple); TEST_ADD(FIFOTestSuite::test_complex); } protected: virtual void setup(){ cout << endl; } virtual void tear_down(){ cout << endl; } template void raw_out(unsigned char *c){ cout << hex; for(int i = 0; i < sizeof(T); i++){ cout << "0x"; cout << setw(2) << setfill('0') << (unsigned int)(*(c++)); cout << ' '; } cout << dec << endl; } private: void test_simple(){ } void test_complex(){ struct Base { int property_base; int property_base_array[8]; }; struct Sub : Base{ int property_sub; int property_sub_array[8]; void dump(){ cout << Base::property_base << ","; for(int i = 0; i < 8; i++) cout << Base::property_base_array[i] << ","; cout << property_sub << ","; for(int i = 0; i < 8; i++) cout << property_sub_array[i] << ","; cout << endl; } }; Sub sub, sub2; sub.property_base = 1; for(int i = 0; i < 8; i++) sub.property_base_array[i] = 2 + i; sub.property_sub = 10; for(int i = 0; i < 8; i++) sub.property_sub_array[i] = 11 + i; sub.dump(); FIFO fifo(128); for(int i = 0; i < 128; i++) fifo.push(&sub); fifo[0].dump(); for(int i = 0; i < 64; i++){ cout << i << ","; fifo.pop(&sub2); sub2.dump(); } for(int i = 0; i < 128; i++) fifo.push(&sub); for(int i = 0; i < 64; i++){ cout << i << ","; fifo.pop(&sub2); sub2.dump(); } for(int i = 0; i < 128; i++) fifo.push(&sub); for(int i = 0; i < 64; i++){ cout << i << ","; fifo.pop(&sub2); sub2.dump(); } for(int i = 0; i < 128; i++) fifo.push(&sub); for(int i = 0; i < 64; i++){ cout << i << ","; fifo.pop(&sub2); sub2.dump(); } } }; bool run_tests(){ FIFOTestSuite test_suits; Test::TextOutput output(Test::TextOutput::Verbose); return test_suits.run(output, false); // Note the 'false' parameter } int main(){run_tests();return 0;}