diff options
Diffstat (limited to 'src/Queue_test.cc')
-rw-r--r-- | src/Queue_test.cc | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/Queue_test.cc b/src/Queue_test.cc new file mode 100644 index 0000000..2700cce --- /dev/null +++ b/src/Queue_test.cc @@ -0,0 +1,51 @@ +#include <cxxtest/TestSuite.h> + +#include <deque> +#include <string> +#include "RefPtr.h" + +using namespace std; + +template<class T> class Queue +{ +private: + std::deque< RefPtr<T> > _queue; + +public: + void Add(RefPtr<T> item) + { + _queue.push_front(item); + } + + //void Remove(T item); + RefPtr<T> GetNext() + { + if (_queue.empty()) + { + return RefPtr<T>(); + } + else + { + return _queue.back(); + } + } + //T GetByString(std::string url); +}; + +class A_queue : public CxxTest::TestSuite +{ +public: + void Should_by_empty_by_default() + { + Queue<string> queue; + TS_ASSERT(!queue.GetNext().IsAssigned()); + } + + void Should_allow_to_add_items() + { + Queue<string> queue; + queue.Add(RefPtr<string>(new string("item"))); + TS_ASSERT(queue.GetNext().IsAssigned()); + TS_ASSERT_EQUALS("item", *queue.GetNext()); + } +}; |