From fb7f635e1c48bb0fb44e7ee83e0555d70c0102e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E6=99=93=E8=88=AA?= <1210603696@qq.com> Date: Wed, 7 Jan 2015 13:55:38 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90deque=E7=9A=84=E5=8D=95?= =?UTF-8?q?=E5=85=83=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TinySTL/Test/DequeTest.cpp | 103 +++++++++++++++++++++++++++++++++++++ TinySTL/Test/DequeTest.h | 30 +++++++++++ TinySTL/main.cpp | 2 + 3 files changed, 135 insertions(+) create mode 100644 TinySTL/Test/DequeTest.cpp create mode 100644 TinySTL/Test/DequeTest.h diff --git a/TinySTL/Test/DequeTest.cpp b/TinySTL/Test/DequeTest.cpp new file mode 100644 index 0000000..817ff21 --- /dev/null +++ b/TinySTL/Test/DequeTest.cpp @@ -0,0 +1,103 @@ +#include "DequeTest.h" + +namespace TinySTL{ + namespace DequeTest{ + void testCase1(){ + stdDQ dq1(10, 0); + tsDQ dq2(10, 0); + assert(TinySTL::Test::container_equal(dq1, dq2)); + + int arr[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; + stdDQ dq3(std::begin(arr), std::end(arr)); + tsDQ dq4(std::begin(arr), std::end(arr)); + assert(TinySTL::Test::container_equal(dq3, dq4)); + + auto dq5(dq1); + auto dq6(dq2); + assert(TinySTL::Test::container_equal(dq5, dq6)); + + auto dq7 = dq3; + auto dq8 = dq4; + assert(TinySTL::Test::container_equal(dq7, dq8)); + + auto dq9 = std::move(dq7); + auto dq10 = std::move(dq8); + assert(TinySTL::Test::container_equal(dq9, dq10)); + } + void testCase2(){ + tsDQ dq1; + assert(dq1.empty()); + assert(dq1.size() == 0); + + tsDQ dq2(10, 0); + assert(!dq2.empty()); + assert(dq2.size() == 10); + } + void testCase3(){ + stdDQ dq1(10, "10"); + tsDQ dq2(10, "10"); + + dq1[0] = "0"; dq1[9] = "9"; + dq2[0] = "0"; dq2[9] = "9"; + + assert(dq1.front() == dq2.front()); + assert(dq1.back() == dq2.back()); + } + void testCase4(){ + stdDQ dq1; + tsDQ dq2; + + for (auto i = 0; i != 10; ++i){ + dq1.push_back(i); + dq2.push_back(i); + } + assert(TinySTL::Test::container_equal(dq1, dq2)); + + for (auto i = 10; i != 20; ++i){ + dq1.push_front(i); + dq2.push_front(i); + } + assert(TinySTL::Test::container_equal(dq1, dq2)); + + for (auto i = 0; i != 5; ++i){ + dq1.pop_back(); + dq2.pop_back(); + } + assert(TinySTL::Test::container_equal(dq1, dq2)); + + for (auto i = 0; i != 5; ++i){ + dq1.pop_front(); + dq2.pop_front(); + } + assert(TinySTL::Test::container_equal(dq1, dq2)); + } + void testCase5(){ + int arr[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; + tsDQ foo(arr, arr + 3), bar(arr + 3, arr + 10); + + assert(foo.size() == 3 && bar.size() == 7); + foo.swap(bar); + assert(foo.size() == 7 && bar.size() == 3); + TinySTL::swap(foo, bar); + assert(foo.size() == 3 && bar.size() == 7); + } + void testCase6(){ + int arr[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; + tsDQ foo1(arr, arr + 3), bar(arr + 3, arr + 10); + + assert(foo1 != bar); + auto foo2 = bar; + assert(foo2 == bar); + } + + + void testAllCases(){ + testCase1(); + testCase2(); + testCase3(); + testCase4(); + testCase5(); + testCase6(); + } + } +} \ No newline at end of file diff --git a/TinySTL/Test/DequeTest.h b/TinySTL/Test/DequeTest.h new file mode 100644 index 0000000..83f06b0 --- /dev/null +++ b/TinySTL/Test/DequeTest.h @@ -0,0 +1,30 @@ +#ifndef _DEQUE_TEST_H_ +#define _DEQUE_TEST_H_ + +#include "TestUtil.h" + +#include "../Deque.h" +#include + +#include +#include + +namespace TinySTL{ + namespace DequeTest{ + template + using stdDQ = std::deque < T > ; + template + using tsDQ = TinySTL::deque < T > ; + + void testCase1(); + void testCase2(); + void testCase3(); + void testCase4(); + void testCase5(); + void testCase6(); + + void testAllCases(); + } +} + +#endif \ No newline at end of file diff --git a/TinySTL/main.cpp b/TinySTL/main.cpp index f504ee1..8265a1e 100644 --- a/TinySTL/main.cpp +++ b/TinySTL/main.cpp @@ -6,6 +6,7 @@ #include "Test\AlgorithmTest.h" #include "Test\BitmapTest.h" #include "Test\CircularBufferTest.h" +#include "Test\DequeTest.h" #include "Test\PairTest.h" #include "Test\PriorityQueueTest.h" #include "Test\QueueTest.h" @@ -21,6 +22,7 @@ int main(){ TinySTL::AlgorithmTest::testAllCases(); TinySTL::BitmapTest::testAllCases(); TinySTL::CircularBufferTest::testAllCases(); + TinySTL::DequeTest::testAllCases(); TinySTL::PairTest::testAllCases(); TinySTL::PriorityQueueTest::testAllCases(); TinySTL::QueueTest::testAllCases();