diff --git a/TinySTL/Test/BitmapTest.cpp b/TinySTL/Test/BitmapTest.cpp index 9755eba..eb4637c 100644 --- a/TinySTL/Test/BitmapTest.cpp +++ b/TinySTL/Test/BitmapTest.cpp @@ -1,94 +1,94 @@ -#include "BitmapTest.h" - -namespace TinySTL{ - namespace BitmapTest{ - void testCase1(){ - bitmap<1> bt1; - assert(bt1.size() == 8); - - bitmap<7> bt2; - assert(bt2.size() == 8); - - bitmap<127> bt3; - assert(bt3.size() == 128); - } - void testCase2(){ - bitmap<8> bt1, bt2; - bt1.set(); - cout << bt1 << endl; - bt1.reset(); - cout << bt1 << endl; - - bt2.set(0); bt2.set(2); bt2.set(4); - cout << bt2 << endl; - bt2.reset(0); bt2.reset(2); bt2.reset(4); - cout << bt2 << endl; - } - void testCase3(){ - bitmap<8> bt; - bt.flip(); - cout << bt << endl; - - bt.flip(0); - cout << bt << endl; - } - void testCase4(){ - bitmap<8> bt; - bt.set(); - assert(bt.count() == 8); - - bt.flip(); - assert(bt.count() == 0); - - bt.set(0); - assert(bt.count() == 1); - } - void testCase5(){ - bitmap<8> bt; - assert(!bt.test(0)); - - bt.set(0); - assert(bt.test(0)); - } - void testCase6(){ - bitmap<8> bt; - assert(!bt.any()); - assert(bt.none()); - assert(!bt.all()); - - bt.set(0); - assert(bt.any()); - assert(!bt.none()); - assert(!bt.all()); - - bt.set(); - assert(bt.any()); - assert(!bt.none()); - assert(bt.all()); - - bt.reset(); - assert(!bt.any()); - assert(bt.none()); - assert(!bt.all()); - } - void testCase7(){ - bitmap<8> bt; - bt.set(0); bt.set(2); bt.set(4); bt.set(6); - assert(bt.to_string() == TinySTL::string("10101010")); - } - } -} - -using namespace TinySTL::BitmapTest; -int main(){ - //testCase1(); - //testCase2(); - //testCase3(); - //testCase4(); - //testCase5(); - //testCase6(); - //testCase7(); - - system("pause"); - return 0; -} \ No newline at end of file +//#include "BitmapTest.h" +// +//namespace TinySTL{ +// namespace BitmapTest{ +// void testCase1(){ +// bitmap<1> bt1; +// assert(bt1.size() == 8); +// +// bitmap<7> bt2; +// assert(bt2.size() == 8); +// +// bitmap<127> bt3; +// assert(bt3.size() == 128); +// } +// void testCase2(){ +// bitmap<8> bt1, bt2; +// bt1.set(); +// cout << bt1 << endl; +// bt1.reset(); +// cout << bt1 << endl; +// +// bt2.set(0); bt2.set(2); bt2.set(4); +// cout << bt2 << endl; +// bt2.reset(0); bt2.reset(2); bt2.reset(4); +// cout << bt2 << endl; +// } +// void testCase3(){ +// bitmap<8> bt; +// bt.flip(); +// cout << bt << endl; +// +// bt.flip(0); +// cout << bt << endl; +// } +// void testCase4(){ +// bitmap<8> bt; +// bt.set(); +// assert(bt.count() == 8); +// +// bt.flip(); +// assert(bt.count() == 0); +// +// bt.set(0); +// assert(bt.count() == 1); +// } +// void testCase5(){ +// bitmap<8> bt; +// assert(!bt.test(0)); +// +// bt.set(0); +// assert(bt.test(0)); +// } +// void testCase6(){ +// bitmap<8> bt; +// assert(!bt.any()); +// assert(bt.none()); +// assert(!bt.all()); +// +// bt.set(0); +// assert(bt.any()); +// assert(!bt.none()); +// assert(!bt.all()); +// +// bt.set(); +// assert(bt.any()); +// assert(!bt.none()); +// assert(bt.all()); +// +// bt.reset(); +// assert(!bt.any()); +// assert(bt.none()); +// assert(!bt.all()); +// } +// void testCase7(){ +// bitmap<8> bt; +// bt.set(0); bt.set(2); bt.set(4); bt.set(6); +// assert(bt.to_string() == TinySTL::string("10101010")); +// } +// } +//} +// +//using namespace TinySTL::BitmapTest; +//int main(){ +// //testCase1(); +// //testCase2(); +// //testCase3(); +// //testCase4(); +// //testCase5(); +// //testCase6(); +// //testCase7(); +// +// system("pause"); +// return 0; +//} \ No newline at end of file diff --git a/TinySTL/Test/CircularBufferTest.cpp b/TinySTL/Test/CircularBufferTest.cpp index c0b7abe..100f76a 100644 --- a/TinySTL/Test/CircularBufferTest.cpp +++ b/TinySTL/Test/CircularBufferTest.cpp @@ -1,85 +1,85 @@ -#include "CircularBufferTest.h" - -namespace TinySTL{ - namespace CircularBufferTest{ - void testCase1(){ - tsCB cb1(10, 1); - for (auto i = 0; i != 10; ++i) - assert(cb1[i] == 1); - - int arr[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; - tsCB cb2(std::begin(arr), std::end(arr)); - for (auto i = 0; i != 10; ++i) - assert(cb2[i] == i); - - auto cb3(cb2); - assert(circular_buffer_equal(cb2, cb3)); - - auto cb4(std::move(cb2));//cb2 clear - assert(circular_buffer_equal(cb3, cb4)); - - auto cb5 = cb3; - assert(circular_buffer_equal(cb3, cb5)); - - auto cb6 = std::move(cb3);//cb3 clear - assert(circular_buffer_equal(cb5, cb6)); - } - void testCase2(){ - tsCB cb(1); - assert(cb.size() == 1); - cb.pop_front(); - assert(!cb.full()); - assert(cb.size() == 0); - assert(cb.empty()); - - cb.push_back(1), cb.push_back(2); - assert(cb.full()); - assert(!cb.empty()); - assert(cb.size() == 2); - } - void testCase3(){ - tsCB cb(3); - cb[0] = "one", cb[1] = "two", cb[2] = "three"; - - assert(*(cb.first()) == "one" && *(cb.last()) == "three"); - - assert(cb.front() == "one" && cb.back() == "three"); - } - void testCase4(){ - tsCB cb(1); - assert(cb.front() == std::string()); - - cb.push_back("zxh"); cb.push_back("jwl"); - assert(cb.back() == "jwl"); - cb.pop_front(); - assert(cb.front() == "zxh"); - } - void testCase5(){ - tsCB cb1(3), cb2(3); - assert(cb1 == cb2); - assert(!(cb1 != cb2)); - - cb1[0] = -1; - assert(!(cb1 == cb2)); - assert(cb1 != cb2); - } - void testCase6(){ - std::string arr[] = { "1", "2", "3" }; - tsCB cb(std::begin(arr), std::end(arr)); - std::cout << cb << std::endl; - } - } -} - -//using namespace TinySTL::CircularBufferTest; -//int main(){ -// testCase1(); -// testCase2(); -// testCase3(); -// testCase4(); -// testCase5(); -// testCase6(); +//#include "CircularBufferTest.h" // -// system("pause"); -// return 0; -//} \ No newline at end of file +//namespace TinySTL{ +// namespace CircularBufferTest{ +// void testCase1(){ +// tsCB cb1(10, 1); +// for (auto i = 0; i != 10; ++i) +// assert(cb1[i] == 1); +// +// int arr[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; +// tsCB cb2(std::begin(arr), std::end(arr)); +// for (auto i = 0; i != 10; ++i) +// assert(cb2[i] == i); +// +// auto cb3(cb2); +// assert(circular_buffer_equal(cb2, cb3)); +// +// auto cb4(std::move(cb2));//cb2 clear +// assert(circular_buffer_equal(cb3, cb4)); +// +// auto cb5 = cb3; +// assert(circular_buffer_equal(cb3, cb5)); +// +// auto cb6 = std::move(cb3);//cb3 clear +// assert(circular_buffer_equal(cb5, cb6)); +// } +// void testCase2(){ +// tsCB cb(1); +// assert(cb.size() == 1); +// cb.pop_front(); +// assert(!cb.full()); +// assert(cb.size() == 0); +// assert(cb.empty()); +// +// cb.push_back(1), cb.push_back(2); +// assert(cb.full()); +// assert(!cb.empty()); +// assert(cb.size() == 2); +// } +// void testCase3(){ +// tsCB cb(3); +// cb[0] = "one", cb[1] = "two", cb[2] = "three"; +// +// assert(*(cb.first()) == "one" && *(cb.last()) == "three"); +// +// assert(cb.front() == "one" && cb.back() == "three"); +// } +// void testCase4(){ +// tsCB cb(1); +// assert(cb.front() == std::string()); +// +// cb.push_back("zxh"); cb.push_back("jwl"); +// assert(cb.back() == "jwl"); +// cb.pop_front(); +// assert(cb.front() == "zxh"); +// } +// void testCase5(){ +// tsCB cb1(3), cb2(3); +// assert(cb1 == cb2); +// assert(!(cb1 != cb2)); +// +// cb1[0] = -1; +// assert(!(cb1 == cb2)); +// assert(cb1 != cb2); +// } +// void testCase6(){ +// std::string arr[] = { "1", "2", "3" }; +// tsCB cb(std::begin(arr), std::end(arr)); +// std::cout << cb << std::endl; +// } +// } +//} +// +////using namespace TinySTL::CircularBufferTest; +////int main(){ +//// testCase1(); +//// testCase2(); +//// testCase3(); +//// testCase4(); +//// testCase5(); +//// testCase6(); +//// +//// system("pause"); +//// return 0; +////} \ No newline at end of file diff --git a/TinySTL/Test/PairTest.cpp b/TinySTL/Test/PairTest.cpp index 540d4a0..2653372 100644 --- a/TinySTL/Test/PairTest.cpp +++ b/TinySTL/Test/PairTest.cpp @@ -1,64 +1,64 @@ -#include "PairTest.h" - -namespace TinySTL{ - namespace PairTest{ - template - static inline bool container_equal(const Container1& pair1, const Container2& pair2){ - return (pair1.first == pair2.first && pair1.second == pair2.second); - } - void testCase1(){ - stdPair p1(5, 5); - tsPair p2(5, 5); - assert(container_equal(p1, p2)); - } - void testCase2(){ - stdPair p1(stdPair(0, 0)); - tsPair p2(tsPair(0, 0)); - assert(container_equal(p1, p2)); - } - void testCase3(){ - stdPair temp1 = std::make_pair(std::string("zxh"), std::string("zxh")); - stdPair p1 = temp1; - - tsPair temp2 = TinySTL::make_pair(std::string("zxh"), std::string("zxh")); - tsPair p2 = temp2; - - assert(container_equal(p1, p2)); - } - void testCase4(){ - TinySTL::pair foo(10, 'z'); - TinySTL::pair bar(90, 'a'); - - //foo and bar are not equal - //foo is less than bar - //foo is less than or equal to bar - if (foo == bar) std::cout << "foo and bar are equal\n"; - if (foo != bar) std::cout << "foo and bar are not equal\n"; - if (foo< bar) std::cout << "foo is less than bar\n"; - if (foo> bar) std::cout << "foo is greater than bar\n"; - if (foo <= bar) std::cout << "foo is less than or equal to bar\n"; - if (foo >= bar) std::cout << "foo is greater than or equal to bar\n"; - } - void testCase5(){ - TinySTL::pair foo(10, 'z'); - TinySTL::pair bar(90, 'a'); - - foo.swap(bar); - - std::cout << "foo : (" << foo.first << ", " << foo.second << ")" << std::endl; - std::cout << "bar : (" << bar.first << ", " << bar.second << ")" << std::endl; - //TinySTL::Test::print_container(foo); - //TinySTL::Test::print_container(bar); - } - } -} -//using namespace TinySTL::PairTest; -//int main(){ -// testCase1(); -// testCase2(); -// testCase3(); -// testCase4(); -// testCase5(); -// system("pause"); -// return 0; -//} \ No newline at end of file +//#include "PairTest.h" +// +//namespace TinySTL{ +// namespace PairTest{ +// template +// static inline bool container_equal(const Container1& pair1, const Container2& pair2){ +// return (pair1.first == pair2.first && pair1.second == pair2.second); +// } +// void testCase1(){ +// stdPair p1(5, 5); +// tsPair p2(5, 5); +// assert(container_equal(p1, p2)); +// } +// void testCase2(){ +// stdPair p1(stdPair(0, 0)); +// tsPair p2(tsPair(0, 0)); +// assert(container_equal(p1, p2)); +// } +// void testCase3(){ +// stdPair temp1 = std::make_pair(std::string("zxh"), std::string("zxh")); +// stdPair p1 = temp1; +// +// tsPair temp2 = TinySTL::make_pair(std::string("zxh"), std::string("zxh")); +// tsPair p2 = temp2; +// +// assert(container_equal(p1, p2)); +// } +// void testCase4(){ +// TinySTL::pair foo(10, 'z'); +// TinySTL::pair bar(90, 'a'); +// +// //foo and bar are not equal +// //foo is less than bar +// //foo is less than or equal to bar +// if (foo == bar) std::cout << "foo and bar are equal\n"; +// if (foo != bar) std::cout << "foo and bar are not equal\n"; +// if (foo< bar) std::cout << "foo is less than bar\n"; +// if (foo> bar) std::cout << "foo is greater than bar\n"; +// if (foo <= bar) std::cout << "foo is less than or equal to bar\n"; +// if (foo >= bar) std::cout << "foo is greater than or equal to bar\n"; +// } +// void testCase5(){ +// TinySTL::pair foo(10, 'z'); +// TinySTL::pair bar(90, 'a'); +// +// foo.swap(bar); +// +// std::cout << "foo : (" << foo.first << ", " << foo.second << ")" << std::endl; +// std::cout << "bar : (" << bar.first << ", " << bar.second << ")" << std::endl; +// //TinySTL::Test::print_container(foo); +// //TinySTL::Test::print_container(bar); +// } +// } +//} +////using namespace TinySTL::PairTest; +////int main(){ +//// testCase1(); +//// testCase2(); +//// testCase3(); +//// testCase4(); +//// testCase5(); +//// system("pause"); +//// return 0; +////} \ No newline at end of file diff --git a/TinySTL/Test/PriorityQueueTest.cpp b/TinySTL/Test/PriorityQueueTest.cpp index 4b8c5a3..111caed 100644 --- a/TinySTL/Test/PriorityQueueTest.cpp +++ b/TinySTL/Test/PriorityQueueTest.cpp @@ -1,79 +1,79 @@ -#include "PriorityQueueTest.h" - -namespace TinySTL{ - namespace PriorityQueueTest{ - void testCase1(){ - int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -1, -2, -3 }; - stdPQ pq1(std::begin(arr), std::end(arr)); - tsPQ pq2(std::begin(arr), std::end(arr)); - - while (!pq1.empty() && !pq2.empty()){ - assert(pq1.top() == pq2.top()); - pq1.pop(); pq2.pop(); - } - assert(pq1.empty() && pq2.empty()); - } - void testCase2(){ - tsPQ pq; - assert(pq.empty()); - - pq.push("zxh"); - assert(!pq.empty()); - } - void testCase3(){ - tsPQ pq; - auto i = 1; - for (; i != 10; ++i){ - pq.push(i); - assert(pq.size() == i); - } - for (i = pq.size(); i != 0; --i){ - pq.pop(); - assert(pq.size() == (i - 1)); - } - } - void testCase4(){ - stdPQ pq1; - tsPQ pq2; - - pq1.push(30); - pq1.push(100); - pq1.push(25); - pq1.push(40); - - pq2.push(30); - pq2.push(100); - pq2.push(25); - pq2.push(40); - - while (!pq1.empty() && !pq2.empty()){ - assert(pq1.top() == pq2.top()); - pq1.pop(); - pq2.pop(); - } - } - void testCase5(){ - tsPQ foo, bar; - foo.push(15); foo.push(30); foo.push(10); - bar.push(101); bar.push(202); - - assert(foo.size() == 3 && bar.size() == 2); - foo.swap(bar); - assert(foo.size() == 2 && bar.size() == 3); - - TinySTL::swap(foo, bar); - assert(foo.size() == 3 && bar.size() == 2); - } - } -} - -//using namespace TinySTL::PriorityQueueTest; -//int main(){ -// testCase1(); -// testCase2(); -// testCase3(); -// testCase4(); -// testCase5(); -// system("pause"); -// return 0; -//} \ No newline at end of file +//#include "PriorityQueueTest.h" +// +//namespace TinySTL{ +// namespace PriorityQueueTest{ +// void testCase1(){ +// int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -1, -2, -3 }; +// stdPQ pq1(std::begin(arr), std::end(arr)); +// tsPQ pq2(std::begin(arr), std::end(arr)); +// +// while (!pq1.empty() && !pq2.empty()){ +// assert(pq1.top() == pq2.top()); +// pq1.pop(); pq2.pop(); +// } +// assert(pq1.empty() && pq2.empty()); +// } +// void testCase2(){ +// tsPQ pq; +// assert(pq.empty()); +// +// pq.push("zxh"); +// assert(!pq.empty()); +// } +// void testCase3(){ +// tsPQ pq; +// auto i = 1; +// for (; i != 10; ++i){ +// pq.push(i); +// assert(pq.size() == i); +// } +// for (i = pq.size(); i != 0; --i){ +// pq.pop(); +// assert(pq.size() == (i - 1)); +// } +// } +// void testCase4(){ +// stdPQ pq1; +// tsPQ pq2; +// +// pq1.push(30); +// pq1.push(100); +// pq1.push(25); +// pq1.push(40); +// +// pq2.push(30); +// pq2.push(100); +// pq2.push(25); +// pq2.push(40); +// +// while (!pq1.empty() && !pq2.empty()){ +// assert(pq1.top() == pq2.top()); +// pq1.pop(); +// pq2.pop(); +// } +// } +// void testCase5(){ +// tsPQ foo, bar; +// foo.push(15); foo.push(30); foo.push(10); +// bar.push(101); bar.push(202); +// +// assert(foo.size() == 3 && bar.size() == 2); +// foo.swap(bar); +// assert(foo.size() == 2 && bar.size() == 3); +// +// TinySTL::swap(foo, bar); +// assert(foo.size() == 3 && bar.size() == 2); +// } +// } +//} +// +////using namespace TinySTL::PriorityQueueTest; +////int main(){ +//// testCase1(); +//// testCase2(); +//// testCase3(); +//// testCase4(); +//// testCase5(); +//// system("pause"); +//// return 0; +////} \ No newline at end of file diff --git a/TinySTL/Test/QueueTest.cpp b/TinySTL/Test/QueueTest.cpp index b4d8222..d81f762 100644 --- a/TinySTL/Test/QueueTest.cpp +++ b/TinySTL/Test/QueueTest.cpp @@ -1,69 +1,69 @@ -#include "QueueTest.h" - -namespace TinySTL{ - namespace QueueTest{ - void testCase1(){ - stdQ q1; - tsQ q2; - - for (auto i = 0; i != 10; ++i){ - q1.push(i); - q2.push(i); - } - for (auto i = 0; i != 10; ++i){ - assert(q1.front() == q2.front()); - q1.pop(); - q2.pop(); - } - } - void testCase2(){ - tsQ q1; - for (auto i = 0; i != 10; ++i) - q1.push(i); - auto q2(q1); - assert(q1 == q2); - assert(!(q1 != q2)); - } - void testCase3(){ - tsQ q; - assert(q.empty()); - assert(q.size() == 0); - - q.push(10); - q.push(11); - assert(!q.empty()); - assert(q.size() == 2); - } - void testCase4(){ - tsQ q; - q.push("front"); - q.push("back"); - - assert(q.front() == "front"); - assert(q.back() == "back"); - } - void testCase5(){ - tsQ q1, q2; - - q1.push(1); q1.push(2); q1.push(3); - q2.push(1); q2.push(2); - - assert(q1.size() == 3 && q2.size() == 2); - q1.swap(q2); - assert(q1.size() == 2 && q2.size() == 3); - TinySTL::swap(q1, q2); - assert(q1.size() == 3 && q2.size() == 2); - } - } -} - -//using namespace TinySTL::QueueTest; -//int main(){ -// testCase1(); -// testCase2(); -// testCase3(); -// testCase4(); -// testCase5(); -// system("pause"); -// return 0; -//} \ No newline at end of file +//#include "QueueTest.h" +// +//namespace TinySTL{ +// namespace QueueTest{ +// void testCase1(){ +// stdQ q1; +// tsQ q2; +// +// for (auto i = 0; i != 10; ++i){ +// q1.push(i); +// q2.push(i); +// } +// for (auto i = 0; i != 10; ++i){ +// assert(q1.front() == q2.front()); +// q1.pop(); +// q2.pop(); +// } +// } +// void testCase2(){ +// tsQ q1; +// for (auto i = 0; i != 10; ++i) +// q1.push(i); +// auto q2(q1); +// assert(q1 == q2); +// assert(!(q1 != q2)); +// } +// void testCase3(){ +// tsQ q; +// assert(q.empty()); +// assert(q.size() == 0); +// +// q.push(10); +// q.push(11); +// assert(!q.empty()); +// assert(q.size() == 2); +// } +// void testCase4(){ +// tsQ q; +// q.push("front"); +// q.push("back"); +// +// assert(q.front() == "front"); +// assert(q.back() == "back"); +// } +// void testCase5(){ +// tsQ q1, q2; +// +// q1.push(1); q1.push(2); q1.push(3); +// q2.push(1); q2.push(2); +// +// assert(q1.size() == 3 && q2.size() == 2); +// q1.swap(q2); +// assert(q1.size() == 2 && q2.size() == 3); +// TinySTL::swap(q1, q2); +// assert(q1.size() == 3 && q2.size() == 2); +// } +// } +//} +// +////using namespace TinySTL::QueueTest; +////int main(){ +//// testCase1(); +//// testCase2(); +//// testCase3(); +//// testCase4(); +//// testCase5(); +//// system("pause"); +//// return 0; +////} \ No newline at end of file diff --git a/TinySTL/Test/StackTest.cpp b/TinySTL/Test/StackTest.cpp index 36a2cef..f1370ef 100644 --- a/TinySTL/Test/StackTest.cpp +++ b/TinySTL/Test/StackTest.cpp @@ -1,59 +1,59 @@ -#include "StackTest.h" - -namespace TinySTL{ - namespace StackTest{ - void testCase1(){ - stdSt st1; - tsSt st2; - - for (auto i = 0; i != 10; ++i){ - st1.push(i); - st2.push(i); - } - for (auto i = 0; i != 10; ++i){ - assert(st1.top() == st2.top()); - st1.pop(); - st2.pop(); - } - } - void testCase2(){ - tsSt st; - assert(st.empty()); - assert(st.size() == 0); - - st.push("one"); - st.push("two"); - assert(!st.empty()); - assert(st.size() == 2); - } - void testCase3(){ - tsSt st1; - for (auto i = 0; i != 5; ++i) - st1.push(i); - auto st2(st1); - assert(st1 == st2); - assert(!(st1 != st2)); - } - void testCase4(){ - tsSt st1, st2; - st1.push(1); st1.push(2); st1.push(3); - st2.push(1); st2.push(2); - assert(st1.size() == 3 && st2.size() == 2); - st1.swap(st2); - assert(st1.size() == 2 && st2.size() == 3); - TinySTL::swap(st1, st2); - assert(st1.size() == 3 && st2.size() == 2); - } - } -} - -//using namespace TinySTL::StackTest; -//int main(){ -// testCase1(); -// testCase2(); -// testCase3(); -// testCase4(); +//#include "StackTest.h" // -// system("pause"); -// return 0; -//} \ No newline at end of file +//namespace TinySTL{ +// namespace StackTest{ +// void testCase1(){ +// stdSt st1; +// tsSt st2; +// +// for (auto i = 0; i != 10; ++i){ +// st1.push(i); +// st2.push(i); +// } +// for (auto i = 0; i != 10; ++i){ +// assert(st1.top() == st2.top()); +// st1.pop(); +// st2.pop(); +// } +// } +// void testCase2(){ +// tsSt st; +// assert(st.empty()); +// assert(st.size() == 0); +// +// st.push("one"); +// st.push("two"); +// assert(!st.empty()); +// assert(st.size() == 2); +// } +// void testCase3(){ +// tsSt st1; +// for (auto i = 0; i != 5; ++i) +// st1.push(i); +// auto st2(st1); +// assert(st1 == st2); +// assert(!(st1 != st2)); +// } +// void testCase4(){ +// tsSt st1, st2; +// st1.push(1); st1.push(2); st1.push(3); +// st2.push(1); st2.push(2); +// assert(st1.size() == 3 && st2.size() == 2); +// st1.swap(st2); +// assert(st1.size() == 2 && st2.size() == 3); +// TinySTL::swap(st1, st2); +// assert(st1.size() == 3 && st2.size() == 2); +// } +// } +//} +// +////using namespace TinySTL::StackTest; +////int main(){ +//// testCase1(); +//// testCase2(); +//// testCase3(); +//// testCase4(); +//// +//// system("pause"); +//// return 0; +////} \ No newline at end of file diff --git a/TinySTL/Test/StringTest.cpp b/TinySTL/Test/StringTest.cpp index cb8a985..2bf5e86 100644 --- a/TinySTL/Test/StringTest.cpp +++ b/TinySTL/Test/StringTest.cpp @@ -1,484 +1,484 @@ -#include "StringTest.h" - -namespace TinySTL{ - namespace StringTest{ - - void testCase1(){ - const char *ptr = "hello world"; - - stdStr s1(ptr); - tsStr s2(ptr); - assert(TinySTL::Test::container_equal(s1, s2)); - - stdStr s3(ptr, 5); - tsStr s4(ptr, 5); - assert(TinySTL::Test::container_equal(s3, s4)); - - stdStr s5(10, 'z'); - tsStr s6(10, 'z'); - assert(TinySTL::Test::container_equal(s5, s6)); - - char arr[] = "zouxiaohang love cpp"; - stdStr s7(std::begin(arr), std::end(arr)); - tsStr s8(std::begin(arr), std::end(arr)); - assert(TinySTL::Test::container_equal(s7, s8)); - } - void testCase2(){ - stdStr temp1("hello, world"); - tsStr temp2("hello, world"); - - stdStr s1(temp1); - tsStr s2(temp2); - assert(TinySTL::Test::container_equal(s1, s2)); - - stdStr s3(std::move(s1)); - tsStr s4(std::move(s2)); - assert(TinySTL::Test::container_equal(s3, s4)); - - stdStr s5(temp1, 1); - tsStr s6(temp2, 1); - assert(TinySTL::Test::container_equal(s5, s6)); - - stdStr s7(temp1, 0, 5); - tsStr s8(temp2, 0, 5); - assert(TinySTL::Test::container_equal(s7, s8)); - } - void testCase3(){ - stdStr t1("hello, world"); - tsStr t2("hello, world"); - - stdStr s1; s1 = 'a'; - tsStr s2; s2 = 'a'; - assert(TinySTL::Test::container_equal(s1, s2)); - - stdStr s3; s3 = "hello"; - tsStr s4; s4 = "hello"; - assert(TinySTL::Test::container_equal(s3, s4)); - - stdStr s5; s5 = t1; - tsStr s6; s6 = t2; - assert(TinySTL::Test::container_equal(s5, s6)); - - stdStr s7; s7 = std::move(t1); - tsStr s8; s8 = std::move(t2); - assert(TinySTL::Test::container_equal(s7, s8)); - } - void testCase4(){ - tsStr str("Test string"); - for (tsStr::iterator it = str.begin(); it != str.end(); ++it) - std::cout << *it; - std::cout << '\n'; - for (tsStr::reverse_iterator it = str.rbegin(); it != str.rend(); ++it) - std::cout << *it; - std::cout << '\n'; - } - void testCase5(){ - tsStr s; - assert(s.size() == 0); - assert(s.length() == 0); - - s = "hello, world"; - assert(s.size() == 12); - assert(s.size() == 12); - } - void testCase6(){ - stdStr s1("hello, world"); - tsStr s2("hello, world"); - - s1.resize(5); - s2.resize(5); - assert(TinySTL::Test::container_equal(s1, s2)); - - s1.resize(20, 'z'); - s2.resize(20, 'z'); - assert(TinySTL::Test::container_equal(s1, s2)); - - s1.resize(6, 'a'); - s2.resize(6, 'a'); - assert(TinySTL::Test::container_equal(s1, s2)); - - s1.resize(100); - s2.resize(100); - assert(TinySTL::Test::container_equal(s1, s2)); - } - void testCase7(){ - tsStr s; - s.reserve(10); - assert(s.capacity() == 10); - } - void testCase8(){ - tsStr s; - assert(s.empty()); - - s = "hello, world"; - assert(!s.empty()); - - s.clear(); - assert(s.empty()); - } - void testCase9(){ - tsStr s; - s.resize(10); - for (auto i = 0; i != s.size(); ++i) - s[i] = 'a' + i; - TinySTL::Test::print_container(s); - - s.back() = 'Z'; - s.front() = 'A'; - TinySTL::Test::print_container(s); - } - void testCase10(){ - stdStr s1; - tsStr s2; - for (auto i = 0; i != 10; ++i){ - s1.push_back('a' + i); - s2.push_back('a' + i); - } - assert(TinySTL::Test::container_equal(s1, s2)); - } - void testCase11(){ - stdStr s1; - tsStr s2; - - s1.insert(s1.begin(), 'A'); - s2.insert(s2.begin(), 'A'); - assert(TinySTL::Test::container_equal(s1, s2)); - - s1.insert(s1.end(), 2, 'Z'); - s2.insert(s2.end(), 2, 'Z'); - assert(TinySTL::Test::container_equal(s1, s2)); - - size_t n = 2; - s1.insert(2, 10, '@'); - s2.insert(2, 10, '@'); - assert(TinySTL::Test::container_equal(s1, s2)); - - s1.insert(0, "hello, world"); - s2.insert(0, "hello, world"); - assert(TinySTL::Test::container_equal(s1, s2)); - - s1.insert(s1.size() - 1, "zouxiaohang", 3); - s2.insert(s2.size() - 1, "zouxiaohang", 3); - assert(TinySTL::Test::container_equal(s1, s2)); - - stdStr s3; - tsStr s4; - - s3.insert(s3.begin(), s1.begin(), s1.end()); - s4.insert(s4.begin(), s2.begin(), s2.end()); - assert(TinySTL::Test::container_equal(s3, s4)); - - s3.insert(1, s1); - s4.insert(1, s2); - assert(TinySTL::Test::container_equal(s3, s4)); - - stdStr t1("zouxiaoHANG"); - tsStr t2("zouxiaoHANG"); - s3.insert(s3.size(), t1, 7, t1.size() - 7); - s4.insert(s4.size(), t2, 7, t2.size() - 7); - assert(TinySTL::Test::container_equal(s3, s4)); - } - void testCase12(){ - stdStr s1; - tsStr s2; - - s1.append(stdStr("abc")); - s2.append(tsStr("abc")); - assert(TinySTL::Test::container_equal(s1, s2)); - - s1.append(stdStr("123456789"), 1, 3); - s2.append(tsStr("123456789"), 1, 3); - assert(TinySTL::Test::container_equal(s1, s2)); - - s1.append("hello"); - s2.append("hello"); - assert(TinySTL::Test::container_equal(s1, s2)); - - s1.append("world", 0, 5); - s2.append("world", 0, 5); - assert(TinySTL::Test::container_equal(s1, s2)); - - s1.append(10, 'A'); - s2.append(10, 'A'); - assert(TinySTL::Test::container_equal(s1, s2)); - - stdStr s3; s3.append(s1.begin(), s1.end()); - tsStr s4; s4.append(s2.begin(), s2.end()); - assert(TinySTL::Test::container_equal(s3, s4)); - } - void testCase13(){ - stdStr s1; - tsStr s2; - - s1 += 'A'; - s2 += 'A'; - assert(TinySTL::Test::container_equal(s1, s2)); - - s1 += "hello"; - s2 += "hello"; - assert(TinySTL::Test::container_equal(s1, s2)); - - s1 += stdStr("world"); - s2 += tsStr("world"); - assert(TinySTL::Test::container_equal(s1, s2)); - } - void testCase14(){ - stdStr s1("hello world"); - tsStr s2("hello world"); - - s1.pop_back(); - s2.pop_back(); - assert(TinySTL::Test::container_equal(s1, s2)); - } - void testCase15(){ - stdStr s1("hello world"); - tsStr s2("hello world"); - - s1.erase(s1.begin() + 1); - s2.erase(s2.begin() + 1); - assert(TinySTL::Test::container_equal(s1, s2)); - - s1.erase(2, s1.size() - 4); - s2.erase(2, s2.size() - 4); - assert(TinySTL::Test::container_equal(s1, s2)); - - s1.erase(s1.begin(), s1.end()); - s2.erase(s2.begin(), s2.end()); - assert(TinySTL::Test::container_equal(s1, s2)); - } - void testCase16(){ - stdStr s1("zouxiaohang"), t1("I Love C++"); - tsStr s2("zouxiaohang"), t2("I Love C++"); - - s1.replace(0, 3, t1); - s2.replace(0, 3, t2); - assert(TinySTL::Test::container_equal(s1, s2)); - - s1.replace(s1.begin(), s1.begin() + s1.size() / 2, t1); - s2.replace(s2.begin(), s2.begin() + s2.size() / 2, t2); - assert(TinySTL::Test::container_equal(s1, s2)); - - s1.replace(0, s1.size(), t1, 0, t1.size()); - s2.replace(0, s2.size(), t2, 0, t2.size()); - assert(TinySTL::Test::container_equal(s1, s2)); - - s1.replace(0, s1.size(), "123456789"); - s2.replace(0, s2.size(), "123456789"); - assert(TinySTL::Test::container_equal(s1, s2)); - - s1.replace(s1.begin(), s1.end(), stdStr("hubei")); - s2.replace(s2.begin(), s2.end(), tsStr("hubei")); - assert(TinySTL::Test::container_equal(s1, s2)); - - s1.replace(0, s1.size(), "wuhan", 5); - s2.replace(0, s2.size(), "wuhan", 5); - assert(TinySTL::Test::container_equal(s1, s2)); - - s1.replace(s1.begin(), s1.end(), "hongshanqu", 10); - s2.replace(s2.begin(), s2.end(), "hongshanqu", 10); - assert(TinySTL::Test::container_equal(s1, s2)); - - s1.replace(0, s1.size(), 10, 'Z'); - s2.replace(0, s2.size(), 10, 'Z'); - assert(TinySTL::Test::container_equal(s1, s2)); - - s1.replace(s1.begin(), s1.end(), 10, 'A'); - s2.replace(s2.begin(), s2.end(), 10, 'A'); - assert(TinySTL::Test::container_equal(s1, s2)); - - s1.replace(s1.begin(), s1.end(), t1.begin(), t1.end()); - s2.replace(s2.begin(), s2.end(), t2.begin(), t2.end()); - assert(TinySTL::Test::container_equal(s1, s2)); - } - void testCase17(){ - tsStr buyer("money"); - tsStr seller("goods"); - - seller.swap(buyer); - TinySTL::Test::print_container(buyer, "buyer"); - TinySTL::Test::print_container(seller, "seller"); - } - void testCase18(){ - char buffer[20]; - tsStr str("Test string..."); - std::size_t length = str.copy(buffer, 6, 5); - buffer[length] = '\0'; - std::cout << "buffer contains: " << buffer << '\n'; - } - void testCase19(){ - tsStr str("There are two needles in this haystack with needles."); - tsStr str2("needle"); - - auto found = str.find(str2); - assert(found == 14); - - found = str.find("needles are small", found + 1, 6); - assert(found == 44); - - found = str.find(tsStr("wuhan")); - assert(found == tsStr::npos); - - found = str.find("haystack"); - assert(found == 30); - - found = str.find('.'); - assert(found == 51); - - str.replace(str.find(str2), str2.length(), "preposition"); - assert(TinySTL::Test::container_equal(str, - tsStr("There are two prepositions in this haystack with needles."))); - } - void testCase20(){ - tsStr str("The sixth sick sheik's sixth sheep's sick."); - tsStr key("sixth"); - - auto found = str.rfind(key); - assert(found == 23); - - found = str.rfind(key, 24); - assert(found == 23); - - found = str.rfind('.'); - assert(found == str.size() - 1); - - found = str.rfind("The"); - assert(found == 0); - - found = str.rfind("sick111", 10, 4); - assert(found == 10); - } - void testCase21(){ - tsStr str("Please, replace the vowels in this sentence by asterisks."); - tsStr key("aeiou"); - const char *arr = "aeiou"; - - auto found = str.find_first_of(arr); - assert(found == 2); - - found = str.find_first_of(arr, found + 1); - assert(found == 3); - - found = str.find_first_of(arr, found + 1, 1); - assert(found == 12); - - found = str.find_first_of(key, found + 1); - assert(found == 14); - - found = str.find_first_of('v', found + 1); - assert(found == 20); - } - void testCase22(){ - tsStr str("1234567890098765432112345678900"); - - auto found = str.find_last_of('6'); - assert(found == 25); - - found = str.find_last_of('6', found - 1); - assert(found == 14); - - found = str.find_last_of("01", 11, 2); - assert(found == 10); - - found = str.find_last_of(tsStr("#1"), 19); - assert(found == 19); - } - void testCase23(){ - tsStr str("look for non-alphabetic characters..."); - - auto found = str.find_first_not_of("abcdefghijklmnopqrstuvwxyz "); - assert(found == 12); - } - void testCase24(){ - tsStr str("12345678900987654321"); - - auto found = str.find_last_not_of("023456789", str.size() - 2); - assert(found == 0); - } - void testCase25(){ - tsStr str = "We think in generalities, but we live in details."; - - auto s = str.substr(3, 5); - assert(TinySTL::Test::container_equal(s, tsStr("think"))); - } - void testCase26(){ - tsStr str1("green apple"); - tsStr str2("red apple"); - - assert(str1.compare(str2) != 0); - assert(str1.compare(6, 5, "apple") == 0); - assert(str2.compare(str2.size() - 5, 5, "apple") == 0); - assert(str1.compare(6, 5, str2, 4, 5) == 0); - } - void testCase27(){ - tsStr firstlevel("com"); - tsStr secondlevel("cplusplus"); - tsStr scheme("http://"); - - auto hostname = "www." + secondlevel + '.' + firstlevel; - auto url = scheme + hostname; - - assert(TinySTL::Test::container_equal(url, tsStr("http://www.cplusplus.com"))); - } - void testCase28(){ - tsStr foo = "alpha"; - tsStr bar = "beta"; - - assert(!(foo == bar)); - assert(foo != bar); - assert(foo < bar); - assert(!(foo > bar)); - assert(foo <= bar); - assert(!(foo >= bar)); - } - void testCase29(){ - tsStr name; - - std::cout << "Please, enter your name: "; - std::cin >> name; - std::cout << "Hello, " << name << "!\n"; - } - void testCase30(){ - tsStr name; - - std::cout << "Please, enter your full name: "; - TinySTL::getline(std::cin, name); - std::cout << "Hello, " << name << "!\n"; - } - } -} - -//using namespace TinySTL::StringTest; -//int main(){ -// //testCase1(); -// //testCase2(); -// //testCase3(); -// //testCase4(); -// //testCase5(); -// //testCase6(); -// //testCase7(); -// //testCase8(); -// //testCase9(); -// //testCase10(); -// //testCase11(); -// //testCase12(); -// //testCase13(); -// //testCase14(); -// //testCase15(); -// //testCase16(); -// //testCase17(); -// //testCase18(); -// //testCase19(); -// //testCase20(); -// //testCase21(); -// //testCase22(); -// //testCase23(); -// //testCase24(); -// //testCase25(); -// //testCase26(); -// //testCase27(); -// //testCase28(); -// //testCase29(); -// //testCase30(); -// system("pause"); -// return 0; -//} \ No newline at end of file +//#include "StringTest.h" +// +//namespace TinySTL{ +// namespace StringTest{ +// +// void testCase1(){ +// const char *ptr = "hello world"; +// +// stdStr s1(ptr); +// tsStr s2(ptr); +// assert(TinySTL::Test::container_equal(s1, s2)); +// +// stdStr s3(ptr, 5); +// tsStr s4(ptr, 5); +// assert(TinySTL::Test::container_equal(s3, s4)); +// +// stdStr s5(10, 'z'); +// tsStr s6(10, 'z'); +// assert(TinySTL::Test::container_equal(s5, s6)); +// +// char arr[] = "zouxiaohang love cpp"; +// stdStr s7(std::begin(arr), std::end(arr)); +// tsStr s8(std::begin(arr), std::end(arr)); +// assert(TinySTL::Test::container_equal(s7, s8)); +// } +// void testCase2(){ +// stdStr temp1("hello, world"); +// tsStr temp2("hello, world"); +// +// stdStr s1(temp1); +// tsStr s2(temp2); +// assert(TinySTL::Test::container_equal(s1, s2)); +// +// stdStr s3(std::move(s1)); +// tsStr s4(std::move(s2)); +// assert(TinySTL::Test::container_equal(s3, s4)); +// +// stdStr s5(temp1, 1); +// tsStr s6(temp2, 1); +// assert(TinySTL::Test::container_equal(s5, s6)); +// +// stdStr s7(temp1, 0, 5); +// tsStr s8(temp2, 0, 5); +// assert(TinySTL::Test::container_equal(s7, s8)); +// } +// void testCase3(){ +// stdStr t1("hello, world"); +// tsStr t2("hello, world"); +// +// stdStr s1; s1 = 'a'; +// tsStr s2; s2 = 'a'; +// assert(TinySTL::Test::container_equal(s1, s2)); +// +// stdStr s3; s3 = "hello"; +// tsStr s4; s4 = "hello"; +// assert(TinySTL::Test::container_equal(s3, s4)); +// +// stdStr s5; s5 = t1; +// tsStr s6; s6 = t2; +// assert(TinySTL::Test::container_equal(s5, s6)); +// +// stdStr s7; s7 = std::move(t1); +// tsStr s8; s8 = std::move(t2); +// assert(TinySTL::Test::container_equal(s7, s8)); +// } +// void testCase4(){ +// tsStr str("Test string"); +// for (tsStr::iterator it = str.begin(); it != str.end(); ++it) +// std::cout << *it; +// std::cout << '\n'; +// for (tsStr::reverse_iterator it = str.rbegin(); it != str.rend(); ++it) +// std::cout << *it; +// std::cout << '\n'; +// } +// void testCase5(){ +// tsStr s; +// assert(s.size() == 0); +// assert(s.length() == 0); +// +// s = "hello, world"; +// assert(s.size() == 12); +// assert(s.size() == 12); +// } +// void testCase6(){ +// stdStr s1("hello, world"); +// tsStr s2("hello, world"); +// +// s1.resize(5); +// s2.resize(5); +// assert(TinySTL::Test::container_equal(s1, s2)); +// +// s1.resize(20, 'z'); +// s2.resize(20, 'z'); +// assert(TinySTL::Test::container_equal(s1, s2)); +// +// s1.resize(6, 'a'); +// s2.resize(6, 'a'); +// assert(TinySTL::Test::container_equal(s1, s2)); +// +// s1.resize(100); +// s2.resize(100); +// assert(TinySTL::Test::container_equal(s1, s2)); +// } +// void testCase7(){ +// tsStr s; +// s.reserve(10); +// assert(s.capacity() == 10); +// } +// void testCase8(){ +// tsStr s; +// assert(s.empty()); +// +// s = "hello, world"; +// assert(!s.empty()); +// +// s.clear(); +// assert(s.empty()); +// } +// void testCase9(){ +// tsStr s; +// s.resize(10); +// for (auto i = 0; i != s.size(); ++i) +// s[i] = 'a' + i; +// TinySTL::Test::print_container(s); +// +// s.back() = 'Z'; +// s.front() = 'A'; +// TinySTL::Test::print_container(s); +// } +// void testCase10(){ +// stdStr s1; +// tsStr s2; +// for (auto i = 0; i != 10; ++i){ +// s1.push_back('a' + i); +// s2.push_back('a' + i); +// } +// assert(TinySTL::Test::container_equal(s1, s2)); +// } +// void testCase11(){ +// stdStr s1; +// tsStr s2; +// +// s1.insert(s1.begin(), 'A'); +// s2.insert(s2.begin(), 'A'); +// assert(TinySTL::Test::container_equal(s1, s2)); +// +// s1.insert(s1.end(), 2, 'Z'); +// s2.insert(s2.end(), 2, 'Z'); +// assert(TinySTL::Test::container_equal(s1, s2)); +// +// size_t n = 2; +// s1.insert(2, 10, '@'); +// s2.insert(2, 10, '@'); +// assert(TinySTL::Test::container_equal(s1, s2)); +// +// s1.insert(0, "hello, world"); +// s2.insert(0, "hello, world"); +// assert(TinySTL::Test::container_equal(s1, s2)); +// +// s1.insert(s1.size() - 1, "zouxiaohang", 3); +// s2.insert(s2.size() - 1, "zouxiaohang", 3); +// assert(TinySTL::Test::container_equal(s1, s2)); +// +// stdStr s3; +// tsStr s4; +// +// s3.insert(s3.begin(), s1.begin(), s1.end()); +// s4.insert(s4.begin(), s2.begin(), s2.end()); +// assert(TinySTL::Test::container_equal(s3, s4)); +// +// s3.insert(1, s1); +// s4.insert(1, s2); +// assert(TinySTL::Test::container_equal(s3, s4)); +// +// stdStr t1("zouxiaoHANG"); +// tsStr t2("zouxiaoHANG"); +// s3.insert(s3.size(), t1, 7, t1.size() - 7); +// s4.insert(s4.size(), t2, 7, t2.size() - 7); +// assert(TinySTL::Test::container_equal(s3, s4)); +// } +// void testCase12(){ +// stdStr s1; +// tsStr s2; +// +// s1.append(stdStr("abc")); +// s2.append(tsStr("abc")); +// assert(TinySTL::Test::container_equal(s1, s2)); +// +// s1.append(stdStr("123456789"), 1, 3); +// s2.append(tsStr("123456789"), 1, 3); +// assert(TinySTL::Test::container_equal(s1, s2)); +// +// s1.append("hello"); +// s2.append("hello"); +// assert(TinySTL::Test::container_equal(s1, s2)); +// +// s1.append("world", 0, 5); +// s2.append("world", 0, 5); +// assert(TinySTL::Test::container_equal(s1, s2)); +// +// s1.append(10, 'A'); +// s2.append(10, 'A'); +// assert(TinySTL::Test::container_equal(s1, s2)); +// +// stdStr s3; s3.append(s1.begin(), s1.end()); +// tsStr s4; s4.append(s2.begin(), s2.end()); +// assert(TinySTL::Test::container_equal(s3, s4)); +// } +// void testCase13(){ +// stdStr s1; +// tsStr s2; +// +// s1 += 'A'; +// s2 += 'A'; +// assert(TinySTL::Test::container_equal(s1, s2)); +// +// s1 += "hello"; +// s2 += "hello"; +// assert(TinySTL::Test::container_equal(s1, s2)); +// +// s1 += stdStr("world"); +// s2 += tsStr("world"); +// assert(TinySTL::Test::container_equal(s1, s2)); +// } +// void testCase14(){ +// stdStr s1("hello world"); +// tsStr s2("hello world"); +// +// s1.pop_back(); +// s2.pop_back(); +// assert(TinySTL::Test::container_equal(s1, s2)); +// } +// void testCase15(){ +// stdStr s1("hello world"); +// tsStr s2("hello world"); +// +// s1.erase(s1.begin() + 1); +// s2.erase(s2.begin() + 1); +// assert(TinySTL::Test::container_equal(s1, s2)); +// +// s1.erase(2, s1.size() - 4); +// s2.erase(2, s2.size() - 4); +// assert(TinySTL::Test::container_equal(s1, s2)); +// +// s1.erase(s1.begin(), s1.end()); +// s2.erase(s2.begin(), s2.end()); +// assert(TinySTL::Test::container_equal(s1, s2)); +// } +// void testCase16(){ +// stdStr s1("zouxiaohang"), t1("I Love C++"); +// tsStr s2("zouxiaohang"), t2("I Love C++"); +// +// s1.replace(0, 3, t1); +// s2.replace(0, 3, t2); +// assert(TinySTL::Test::container_equal(s1, s2)); +// +// s1.replace(s1.begin(), s1.begin() + s1.size() / 2, t1); +// s2.replace(s2.begin(), s2.begin() + s2.size() / 2, t2); +// assert(TinySTL::Test::container_equal(s1, s2)); +// +// s1.replace(0, s1.size(), t1, 0, t1.size()); +// s2.replace(0, s2.size(), t2, 0, t2.size()); +// assert(TinySTL::Test::container_equal(s1, s2)); +// +// s1.replace(0, s1.size(), "123456789"); +// s2.replace(0, s2.size(), "123456789"); +// assert(TinySTL::Test::container_equal(s1, s2)); +// +// s1.replace(s1.begin(), s1.end(), stdStr("hubei")); +// s2.replace(s2.begin(), s2.end(), tsStr("hubei")); +// assert(TinySTL::Test::container_equal(s1, s2)); +// +// s1.replace(0, s1.size(), "wuhan", 5); +// s2.replace(0, s2.size(), "wuhan", 5); +// assert(TinySTL::Test::container_equal(s1, s2)); +// +// s1.replace(s1.begin(), s1.end(), "hongshanqu", 10); +// s2.replace(s2.begin(), s2.end(), "hongshanqu", 10); +// assert(TinySTL::Test::container_equal(s1, s2)); +// +// s1.replace(0, s1.size(), 10, 'Z'); +// s2.replace(0, s2.size(), 10, 'Z'); +// assert(TinySTL::Test::container_equal(s1, s2)); +// +// s1.replace(s1.begin(), s1.end(), 10, 'A'); +// s2.replace(s2.begin(), s2.end(), 10, 'A'); +// assert(TinySTL::Test::container_equal(s1, s2)); +// +// s1.replace(s1.begin(), s1.end(), t1.begin(), t1.end()); +// s2.replace(s2.begin(), s2.end(), t2.begin(), t2.end()); +// assert(TinySTL::Test::container_equal(s1, s2)); +// } +// void testCase17(){ +// tsStr buyer("money"); +// tsStr seller("goods"); +// +// seller.swap(buyer); +// TinySTL::Test::print_container(buyer, "buyer"); +// TinySTL::Test::print_container(seller, "seller"); +// } +// void testCase18(){ +// char buffer[20]; +// tsStr str("Test string..."); +// std::size_t length = str.copy(buffer, 6, 5); +// buffer[length] = '\0'; +// std::cout << "buffer contains: " << buffer << '\n'; +// } +// void testCase19(){ +// tsStr str("There are two needles in this haystack with needles."); +// tsStr str2("needle"); +// +// auto found = str.find(str2); +// assert(found == 14); +// +// found = str.find("needles are small", found + 1, 6); +// assert(found == 44); +// +// found = str.find(tsStr("wuhan")); +// assert(found == tsStr::npos); +// +// found = str.find("haystack"); +// assert(found == 30); +// +// found = str.find('.'); +// assert(found == 51); +// +// str.replace(str.find(str2), str2.length(), "preposition"); +// assert(TinySTL::Test::container_equal(str, +// tsStr("There are two prepositions in this haystack with needles."))); +// } +// void testCase20(){ +// tsStr str("The sixth sick sheik's sixth sheep's sick."); +// tsStr key("sixth"); +// +// auto found = str.rfind(key); +// assert(found == 23); +// +// found = str.rfind(key, 24); +// assert(found == 23); +// +// found = str.rfind('.'); +// assert(found == str.size() - 1); +// +// found = str.rfind("The"); +// assert(found == 0); +// +// found = str.rfind("sick111", 10, 4); +// assert(found == 10); +// } +// void testCase21(){ +// tsStr str("Please, replace the vowels in this sentence by asterisks."); +// tsStr key("aeiou"); +// const char *arr = "aeiou"; +// +// auto found = str.find_first_of(arr); +// assert(found == 2); +// +// found = str.find_first_of(arr, found + 1); +// assert(found == 3); +// +// found = str.find_first_of(arr, found + 1, 1); +// assert(found == 12); +// +// found = str.find_first_of(key, found + 1); +// assert(found == 14); +// +// found = str.find_first_of('v', found + 1); +// assert(found == 20); +// } +// void testCase22(){ +// tsStr str("1234567890098765432112345678900"); +// +// auto found = str.find_last_of('6'); +// assert(found == 25); +// +// found = str.find_last_of('6', found - 1); +// assert(found == 14); +// +// found = str.find_last_of("01", 11, 2); +// assert(found == 10); +// +// found = str.find_last_of(tsStr("#1"), 19); +// assert(found == 19); +// } +// void testCase23(){ +// tsStr str("look for non-alphabetic characters..."); +// +// auto found = str.find_first_not_of("abcdefghijklmnopqrstuvwxyz "); +// assert(found == 12); +// } +// void testCase24(){ +// tsStr str("12345678900987654321"); +// +// auto found = str.find_last_not_of("023456789", str.size() - 2); +// assert(found == 0); +// } +// void testCase25(){ +// tsStr str = "We think in generalities, but we live in details."; +// +// auto s = str.substr(3, 5); +// assert(TinySTL::Test::container_equal(s, tsStr("think"))); +// } +// void testCase26(){ +// tsStr str1("green apple"); +// tsStr str2("red apple"); +// +// assert(str1.compare(str2) != 0); +// assert(str1.compare(6, 5, "apple") == 0); +// assert(str2.compare(str2.size() - 5, 5, "apple") == 0); +// assert(str1.compare(6, 5, str2, 4, 5) == 0); +// } +// void testCase27(){ +// tsStr firstlevel("com"); +// tsStr secondlevel("cplusplus"); +// tsStr scheme("http://"); +// +// auto hostname = "www." + secondlevel + '.' + firstlevel; +// auto url = scheme + hostname; +// +// assert(TinySTL::Test::container_equal(url, tsStr("http://www.cplusplus.com"))); +// } +// void testCase28(){ +// tsStr foo = "alpha"; +// tsStr bar = "beta"; +// +// assert(!(foo == bar)); +// assert(foo != bar); +// assert(foo < bar); +// assert(!(foo > bar)); +// assert(foo <= bar); +// assert(!(foo >= bar)); +// } +// void testCase29(){ +// tsStr name; +// +// std::cout << "Please, enter your name: "; +// std::cin >> name; +// std::cout << "Hello, " << name << "!\n"; +// } +// void testCase30(){ +// tsStr name; +// +// std::cout << "Please, enter your full name: "; +// TinySTL::getline(std::cin, name); +// std::cout << "Hello, " << name << "!\n"; +// } +// } +//} +// +////using namespace TinySTL::StringTest; +////int main(){ +//// testCase1(); +//// testCase2(); +//// testCase3(); +//// testCase4(); +//// testCase5(); +//// testCase6(); +//// testCase7(); +//// testCase8(); +//// testCase9(); +//// testCase10(); +//// testCase11(); +//// testCase12(); +//// testCase13(); +//// testCase14(); +//// testCase15(); +//// testCase16(); +//// testCase17(); +//// testCase18(); +//// testCase19(); +//// testCase20(); +//// testCase21(); +//// testCase22(); +//// testCase23(); +//// testCase24(); +//// testCase25(); +//// testCase26(); +//// testCase27(); +//// testCase28(); +//// testCase29(); +//// testCase30(); +//// system("pause"); +//// return 0; +////} \ No newline at end of file diff --git a/TinySTL/Test/SuffixArrayTest.cpp b/TinySTL/Test/SuffixArrayTest.cpp index fa1bc59..3aa486c 100644 --- a/TinySTL/Test/SuffixArrayTest.cpp +++ b/TinySTL/Test/SuffixArrayTest.cpp @@ -1,32 +1,32 @@ -#include "SuffixArrayTest.h" - -namespace TinySTL{ - namespace SuffixArrayTest{ - void testCase(){ - //char arr[] = { 'a', 'a', 'b', 'a', 'a', 'a', 'a', 'b' }; - std::string str("aabaaaab"); - - //TinySTL::suffix_array sa(arr, 8); - TinySTL::suffix_array sa(str.data(), str.size()); - auto sa1 = sa.suffixArray(); - auto sa2 = TinySTL::suffix_array::array_type{3, 4, 5, 0, 6, 1, 7, 2}; - assert(TinySTL::Test::container_equal(sa1, sa2)); - - auto ra1 = sa.rankArray(); - auto ra2 = TinySTL::suffix_array::array_type{ 3, 5, 7, 0, 1, 2, 4, 6 }; - assert(TinySTL::Test::container_equal(ra1, ra2)); - - auto ha1 = sa.heightArray(); - auto ha2 = TinySTL::suffix_array::array_type{ 3, 2, 3, 1, 2, 0, 1 }; - assert(TinySTL::Test::container_equal(ha1, ha2)); - } - } -} - -//using namespace TinySTL::SuffixArrayTest; -//int main(){ -// testCase(); +//#include "SuffixArrayTest.h" // -// system("pause"); -// return 0; -//} \ No newline at end of file +//namespace TinySTL{ +// namespace SuffixArrayTest{ +// void testCase(){ +// //char arr[] = { 'a', 'a', 'b', 'a', 'a', 'a', 'a', 'b' }; +// std::string str("aabaaaab"); +// +// //TinySTL::suffix_array sa(arr, 8); +// TinySTL::suffix_array sa(str.data(), str.size()); +// auto sa1 = sa.suffixArray(); +// auto sa2 = TinySTL::suffix_array::array_type{3, 4, 5, 0, 6, 1, 7, 2}; +// assert(TinySTL::Test::container_equal(sa1, sa2)); +// +// auto ra1 = sa.rankArray(); +// auto ra2 = TinySTL::suffix_array::array_type{ 3, 5, 7, 0, 1, 2, 4, 6 }; +// assert(TinySTL::Test::container_equal(ra1, ra2)); +// +// auto ha1 = sa.heightArray(); +// auto ha2 = TinySTL::suffix_array::array_type{ 3, 2, 3, 1, 2, 0, 1 }; +// assert(TinySTL::Test::container_equal(ha1, ha2)); +// } +// } +//} +// +////using namespace TinySTL::SuffixArrayTest; +////int main(){ +//// testCase(); +//// +//// system("pause"); +//// return 0; +////} \ No newline at end of file diff --git a/TinySTL/Test/VectorTest.cpp b/TinySTL/Test/VectorTest.cpp index 52e3403..7e89c1e 100644 --- a/TinySTL/Test/VectorTest.cpp +++ b/TinySTL/Test/VectorTest.cpp @@ -1,208 +1,208 @@ -#include "VectorTest.h" - -namespace TinySTL{ - namespace VectorTest{ - - void testCase1(){ - stdVec v1(10, "zxh"); - tsVec v2(10, "zxh"); - assert(TinySTL::Test::container_equal(v1, v2)); - - stdVec v3(10); - tsVec v4(10); - assert(TinySTL::Test::container_equal(v3, v4)); - - std::array arr = { "abc", "def", "ghi" }; - stdVec v5(std::begin(arr), std::end(arr)); - tsVec v6(std::begin(arr), std::end(arr)); - assert(TinySTL::Test::container_equal(v5, v6)); - } - void testCase2(){ - stdVec temp1(10, 0); - tsVec temp2(10, 0); - - auto v1(temp1); - auto v2(temp2); - assert(TinySTL::Test::container_equal(v1, v2)); - - auto v3(std::move(temp1)); - auto v4(std::move(temp2)); - assert(TinySTL::Test::container_equal(v3, v4)); - - auto v5 = v1; - auto v6 = v2; - assert(TinySTL::Test::container_equal(v5, v6)); - - auto v7 = std::move(v3); - auto v8 = std::move(v4); - assert(TinySTL::Test::container_equal(v7, v8)); - } - void testCase3(){ - tsVec v1, v2; - for (int i = 0; i != 100; ++i){ - v1.push_back(i); - v2.push_back(i); - } - - assert(v1 == v2); - assert(!(v1 != v2)); - } - void testCase4(){ - tsVec myvector; - for (int i = 1; i <= 5; i++) myvector.push_back(i); - - std::cout << "myvector contains:"; - for (tsVec::iterator it = myvector.begin(); it != myvector.end(); ++it) - std::cout << ' ' << *it; - std::cout << '\n'; - - std::cout << "myvector contains:"; - for (tsVec::const_iterator it = myvector.cbegin(); it != myvector.cend(); ++it) - std::cout << ' ' << *it; - std::cout << '\n'; - } - void testCase5(){ - tsVec myvector(5); // 5 default-constructed ints - int i = 0; - tsVec::reverse_iterator rit = myvector.rbegin(); - for (; rit != myvector.rend(); ++rit) - *rit = ++i; - - std::cout << "myvector contains:"; - for (tsVec::iterator it = myvector.begin(); it != myvector.end(); ++it) - std::cout << ' ' << *it; - std::cout << '\n'; - std::cout << "myvector contains(reverse order):"; - for (tsVec::reverse_iterator it = myvector.rbegin(); it != myvector.rend(); ++it) - std::cout << ' ' << *it; - std::cout << '\n'; - } - void testCase6(){ - tsVec v(11, 0); - assert(v.size() == 11); - - v.resize(5); - assert(v.size() == 5); - - v.resize(20); - assert(v.size() == 20); - } - void testCase7(){ - tsVec v; - v.reserve(20); - assert(v.capacity() == 20); - } - void testCase8(){ - stdVec v1(10); - tsVec v2(10); - for (unsigned i = 0; i < 10; i++){ - v1[i] = i; - v2[i] = i; - } - assert(TinySTL::Test::container_equal(v1, v2)); - - v1.front() = 99; - v2.front() = 99; - v1.back() = 100; - v2.back() = 100; - - assert(TinySTL::Test::container_equal(v1, v2)); - } - void testCase9(){ - stdVec v1(5); - tsVec v2(5); - - auto p1 = v1.data(); - auto p2 = v2.data(); - *p1 = 10; ++p1; *p1 = 20; p1[2] = 100; - *p2 = 10; ++p2; *p2 = 20; p2[2] = 100; - - assert(TinySTL::Test::container_equal(v1, v2)); - } - void testCase10(){ - tsVec foo(3, 100); // three ints with a value of 100 - tsVec bar(5, 200); // five ints with a value of 200 - - TinySTL::Test::print_container(foo, "foo"); - TinySTL::Test::print_container(bar, "bar"); - foo.swap(bar); - TinySTL::Test::print_container(foo, "foo"); - TinySTL::Test::print_container(bar, "bar"); - } - void testCase11(){ - stdVec v1; - tsVec v2; - - v1.push_back("hello "); v1.push_back("world"); - v2.push_back("hello "); v2.push_back("world"); - assert(TinySTL::Test::container_equal(v1, v2)); - - v1.pop_back(); - v2.pop_back(); - assert(TinySTL::Test::container_equal(v1, v2)); - } - void testCase12(){ - stdVec v1; - tsVec v2; - - v1.insert(v1.begin(), 0); - v2.insert(v2.begin(), 0); - assert(TinySTL::Test::container_equal(v1, v2)); - - v1.insert(v1.end(), 1); - v2.insert(v2.end(), 1); - assert(TinySTL::Test::container_equal(v1, v2)); - - v1.insert(v1.begin() + v1.size() / 2, 10, 0); - v2.insert(v2.begin() + v2.size() / 2, 10, 0); - assert(TinySTL::Test::container_equal(v1, v2)); - - int arr[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; - v1.insert(v1.end(), std::begin(arr), std::end(arr)); - v2.insert(v2.end(), std::begin(arr), std::end(arr)); - assert(TinySTL::Test::container_equal(v1, v2)); - } - void testCase13(){ - stdVec v1; - tsVec v2; - for (int i = 1; i <= 10; i++) { - v1.push_back(i); - v2.push_back(i); - } - v1.erase(v1.begin() + 5); - v2.erase(v2.begin() + 5); - assert(TinySTL::Test::container_equal(v1, v2)); - - v1.erase(v1.begin(), v1.begin() + 3); - v2.erase(v2.begin(), v2.begin() + 3); - assert(TinySTL::Test::container_equal(v1, v2)); - } - void testCase14(){ - tsVec foo(3, 100); - tsVec bar(2, 200); - - assert(!(foo == bar)); - assert(foo != bar); - } - } -} - -//using namespace TinySTL::VectorTest; -//int main(){ -// //testCase1(); -// //testCase2(); -// //testCase3(); -// //testCase4(); -// //testCase5(); -// //testCase6(); -// //testCase7(); -// //testCase8(); -// //testCase9(); -// //testCase10(); -// //testCase11(); -// //testCase12(); -// //testCase13(); -// //testCase14(); -// system("pause"); -// return 0; -//} \ No newline at end of file +//#include "VectorTest.h" +// +//namespace TinySTL{ +// namespace VectorTest{ +// +// void testCase1(){ +// stdVec v1(10, "zxh"); +// tsVec v2(10, "zxh"); +// assert(TinySTL::Test::container_equal(v1, v2)); +// +// stdVec v3(10); +// tsVec v4(10); +// assert(TinySTL::Test::container_equal(v3, v4)); +// +// std::array arr = { "abc", "def", "ghi" }; +// stdVec v5(std::begin(arr), std::end(arr)); +// tsVec v6(std::begin(arr), std::end(arr)); +// assert(TinySTL::Test::container_equal(v5, v6)); +// } +// void testCase2(){ +// stdVec temp1(10, 0); +// tsVec temp2(10, 0); +// +// auto v1(temp1); +// auto v2(temp2); +// assert(TinySTL::Test::container_equal(v1, v2)); +// +// auto v3(std::move(temp1)); +// auto v4(std::move(temp2)); +// assert(TinySTL::Test::container_equal(v3, v4)); +// +// auto v5 = v1; +// auto v6 = v2; +// assert(TinySTL::Test::container_equal(v5, v6)); +// +// auto v7 = std::move(v3); +// auto v8 = std::move(v4); +// assert(TinySTL::Test::container_equal(v7, v8)); +// } +// void testCase3(){ +// tsVec v1, v2; +// for (int i = 0; i != 100; ++i){ +// v1.push_back(i); +// v2.push_back(i); +// } +// +// assert(v1 == v2); +// assert(!(v1 != v2)); +// } +// void testCase4(){ +// tsVec myvector; +// for (int i = 1; i <= 5; i++) myvector.push_back(i); +// +// std::cout << "myvector contains:"; +// for (tsVec::iterator it = myvector.begin(); it != myvector.end(); ++it) +// std::cout << ' ' << *it; +// std::cout << '\n'; +// +// std::cout << "myvector contains:"; +// for (tsVec::const_iterator it = myvector.cbegin(); it != myvector.cend(); ++it) +// std::cout << ' ' << *it; +// std::cout << '\n'; +// } +// void testCase5(){ +// tsVec myvector(5); // 5 default-constructed ints +// int i = 0; +// tsVec::reverse_iterator rit = myvector.rbegin(); +// for (; rit != myvector.rend(); ++rit) +// *rit = ++i; +// +// std::cout << "myvector contains:"; +// for (tsVec::iterator it = myvector.begin(); it != myvector.end(); ++it) +// std::cout << ' ' << *it; +// std::cout << '\n'; +// std::cout << "myvector contains(reverse order):"; +// for (tsVec::reverse_iterator it = myvector.rbegin(); it != myvector.rend(); ++it) +// std::cout << ' ' << *it; +// std::cout << '\n'; +// } +// void testCase6(){ +// tsVec v(11, 0); +// assert(v.size() == 11); +// +// v.resize(5); +// assert(v.size() == 5); +// +// v.resize(20); +// assert(v.size() == 20); +// } +// void testCase7(){ +// tsVec v; +// v.reserve(20); +// assert(v.capacity() == 20); +// } +// void testCase8(){ +// stdVec v1(10); +// tsVec v2(10); +// for (unsigned i = 0; i < 10; i++){ +// v1[i] = i; +// v2[i] = i; +// } +// assert(TinySTL::Test::container_equal(v1, v2)); +// +// v1.front() = 99; +// v2.front() = 99; +// v1.back() = 100; +// v2.back() = 100; +// +// assert(TinySTL::Test::container_equal(v1, v2)); +// } +// void testCase9(){ +// stdVec v1(5); +// tsVec v2(5); +// +// auto p1 = v1.data(); +// auto p2 = v2.data(); +// *p1 = 10; ++p1; *p1 = 20; p1[2] = 100; +// *p2 = 10; ++p2; *p2 = 20; p2[2] = 100; +// +// assert(TinySTL::Test::container_equal(v1, v2)); +// } +// void testCase10(){ +// tsVec foo(3, 100); // three ints with a value of 100 +// tsVec bar(5, 200); // five ints with a value of 200 +// +// TinySTL::Test::print_container(foo, "foo"); +// TinySTL::Test::print_container(bar, "bar"); +// foo.swap(bar); +// TinySTL::Test::print_container(foo, "foo"); +// TinySTL::Test::print_container(bar, "bar"); +// } +// void testCase11(){ +// stdVec v1; +// tsVec v2; +// +// v1.push_back("hello "); v1.push_back("world"); +// v2.push_back("hello "); v2.push_back("world"); +// assert(TinySTL::Test::container_equal(v1, v2)); +// +// v1.pop_back(); +// v2.pop_back(); +// assert(TinySTL::Test::container_equal(v1, v2)); +// } +// void testCase12(){ +// stdVec v1; +// tsVec v2; +// +// v1.insert(v1.begin(), 0); +// v2.insert(v2.begin(), 0); +// assert(TinySTL::Test::container_equal(v1, v2)); +// +// v1.insert(v1.end(), 1); +// v2.insert(v2.end(), 1); +// assert(TinySTL::Test::container_equal(v1, v2)); +// +// v1.insert(v1.begin() + v1.size() / 2, 10, 0); +// v2.insert(v2.begin() + v2.size() / 2, 10, 0); +// assert(TinySTL::Test::container_equal(v1, v2)); +// +// int arr[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; +// v1.insert(v1.end(), std::begin(arr), std::end(arr)); +// v2.insert(v2.end(), std::begin(arr), std::end(arr)); +// assert(TinySTL::Test::container_equal(v1, v2)); +// } +// void testCase13(){ +// stdVec v1; +// tsVec v2; +// for (int i = 1; i <= 10; i++) { +// v1.push_back(i); +// v2.push_back(i); +// } +// v1.erase(v1.begin() + 5); +// v2.erase(v2.begin() + 5); +// assert(TinySTL::Test::container_equal(v1, v2)); +// +// v1.erase(v1.begin(), v1.begin() + 3); +// v2.erase(v2.begin(), v2.begin() + 3); +// assert(TinySTL::Test::container_equal(v1, v2)); +// } +// void testCase14(){ +// tsVec foo(3, 100); +// tsVec bar(2, 200); +// +// assert(!(foo == bar)); +// assert(foo != bar); +// } +// } +//} +// +////using namespace TinySTL::VectorTest; +////int main(){ +//// //testCase1(); +//// //testCase2(); +//// //testCase3(); +//// //testCase4(); +//// //testCase5(); +//// //testCase6(); +//// //testCase7(); +//// //testCase8(); +//// //testCase9(); +//// //testCase10(); +//// //testCase11(); +//// //testCase12(); +//// //testCase13(); +//// //testCase14(); +//// system("pause"); +//// return 0; +////} \ No newline at end of file