From dc9c55e1d5140e8382b3f5ce306479f8dbc4b151 Mon Sep 17 00:00:00 2001 From: "Mike D. Lowis" Date: Mon, 25 Jun 2012 16:48:16 -0400 Subject: [PATCH] Started tests for IBuffer class --- tests/test_ibuffer.cpp | 128 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 tests/test_ibuffer.cpp diff --git a/tests/test_ibuffer.cpp b/tests/test_ibuffer.cpp new file mode 100644 index 0000000..b22daf1 --- /dev/null +++ b/tests/test_ibuffer.cpp @@ -0,0 +1,128 @@ +// Unit Test Framework Includes +#include "UnitTest++.h" + +// Supporting Includes +#include + +// File To Test +#include "ibuffer.h" + +using namespace UnitTest; + +//----------------------------------------------------------------------------- +// Helper Functions and Classes +//----------------------------------------------------------------------------- +class TestIBuffer : public IBuffer +{ + public: + unsigned int cur_size; + unsigned int times_size_called; + unsigned int times_clear_called; + unsigned int times_load_called; + + TestIBuffer() : cur_size(0), + times_size_called(0), + times_clear_called(0), + times_load_called(0) {} + + unsigned int size() { + times_size_called++; + return cur_size; + } + + void clear() { + times_clear_called++; + cur_size = 0; + } + + void load() { + times_load_called++; + cur_size++; + } +}; +//----------------------------------------------------------------------------- +// Begin Unit Tests +//----------------------------------------------------------------------------- +namespace { + //------------------------------------------------------------------------- + // Test consume() method + //------------------------------------------------------------------------- + TEST(Verify_consume_clears_the_current_buffer_when_not_marked_and_synced) + { + TestIBuffer buffer; + buffer.cur_size = 1; + + CHECK( 0 == buffer.times_size_called ); + CHECK( 0 == buffer.times_clear_called ); + CHECK( 0 == buffer.location() ); + buffer.consume(); + CHECK( 1 == buffer.cur_size ); + CHECK( 0 == buffer.location() ); + CHECK( 3 == buffer.times_size_called ); + CHECK( 1 == buffer.times_clear_called ); + } + + TEST(Verify_consume_advances_the_index_when_the_buffer_is_out_of_sync) + { + TestIBuffer buffer; + buffer.cur_size = 2; + + CHECK( 0 == buffer.times_size_called ); + CHECK( 0 == buffer.times_clear_called ); + CHECK( 0 == buffer.location() ); + buffer.consume(); + CHECK( 2 == buffer.cur_size ); + CHECK( 1 == buffer.location() ); + CHECK( 3 == buffer.times_size_called ); + CHECK( 0 == buffer.times_clear_called ); + } + + TEST(Verify_consume_does_not_consume_when_marked) + { + TestIBuffer buffer; + buffer.cur_size = 1; + buffer.mark(); + + CHECK( 0 == buffer.times_size_called ); + CHECK( 0 == buffer.times_clear_called ); + CHECK( 0 == buffer.location() ); + buffer.consume(); + CHECK( 2 == buffer.cur_size ); + CHECK( 1 == buffer.location() ); + CHECK( 3 == buffer.times_size_called ); + CHECK( 0 == buffer.times_clear_called ); + } + + //-------------------- + // TODO: Check if this test is needed. + //-------------------- + //TEST(Verify_consume_handles_a_call_when_not_initialized) + //{ + // TestIBuffer buffer; + + // CHECK( 0 == buffer.times_size_called ); + // CHECK( 0 == buffer.times_clear_called ); + // CHECK( 0 == buffer.location() ); + // buffer.consume(); + // CHECK( 2 == buffer.cur_size ); + // CHECK( 1 == buffer.location() ); + // CHECK( 3 == buffer.times_size_called ); + // CHECK( 0 == buffer.times_clear_called ); + //} + + //------------------------------------------------------------------------- + // Test sync() method + //------------------------------------------------------------------------- + TEST(Verify_sync_loads_input_to_desired_index_and_sets_the_current_index) + { + TestIBuffer buffer; + } + + //------------------------------------------------------------------------- + // Test fill() method + //------------------------------------------------------------------------- + TEST(Verify_fill_loads_buffer_to_desired_index) + { + TestIBuffer buffer; + } +} -- 2.54.0