完成unique_ptr测试
This commit is contained in:
@@ -45,6 +45,7 @@ TinySTL
|
|||||||
* pair:100%
|
* pair:100%
|
||||||
* list:100%
|
* list:100%
|
||||||
* unordered_set:100%
|
* unordered_set:100%
|
||||||
|
* unique_ptr:100%
|
||||||
* STL Algorithms:
|
* STL Algorithms:
|
||||||
* fill:100%
|
* fill:100%
|
||||||
* fill_n:100%
|
* fill_n:100%
|
||||||
@@ -101,6 +102,7 @@ TinySTL
|
|||||||
* unordered_set:100%
|
* unordered_set:100%
|
||||||
* directed_graph:100%
|
* directed_graph:100%
|
||||||
* trie tree:100%
|
* trie tree:100%
|
||||||
|
* unique_ptr:100%
|
||||||
|
|
||||||
#TinySTL性能测试:
|
#TinySTL性能测试:
|
||||||
###测试环境:Windows 7 && VS2013 && release模式
|
###测试环境:Windows 7 && VS2013 && release模式
|
||||||
|
|||||||
66
TinySTL/Test/UniquePtrTest.cpp
Normal file
66
TinySTL/Test/UniquePtrTest.cpp
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
#include "UniquePtrTest.h"
|
||||||
|
|
||||||
|
#include "../String.h"
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
template<class T>
|
||||||
|
struct Del{
|
||||||
|
void operator()(T *p){ delete p; }
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace TinySTL{
|
||||||
|
namespace UniquePtrTest{
|
||||||
|
void testCase1(){
|
||||||
|
unique_ptr<int> up1;
|
||||||
|
assert(up1 == nullptr);
|
||||||
|
|
||||||
|
unique_ptr<int> up2(new int(5));
|
||||||
|
assert(up2 != nullptr);
|
||||||
|
assert(*up2 == 5);
|
||||||
|
|
||||||
|
unique_ptr<string, Del<string>> up3(new string("zouxiaohang"), Del<string>());
|
||||||
|
assert(up3 != nullptr);
|
||||||
|
assert(*up3 == "zouxiaohang");
|
||||||
|
|
||||||
|
auto up4(std::move(up2));
|
||||||
|
assert(*up4 == 5);
|
||||||
|
assert(up2 == nullptr);
|
||||||
|
|
||||||
|
unique_ptr<string, Del<string>> up5;
|
||||||
|
up5 = std::move(up3);
|
||||||
|
assert(*up5 == "zouxiaohang");
|
||||||
|
assert(up3 == nullptr);
|
||||||
|
|
||||||
|
auto up6 = make_unique<string>(6, 'z');
|
||||||
|
assert(*up6 == "zzzzzz");
|
||||||
|
}
|
||||||
|
void testCase2(){
|
||||||
|
auto up = make_unique<string>(10, '0');
|
||||||
|
up->append("111");
|
||||||
|
assert(*up == "0000000000111");
|
||||||
|
|
||||||
|
up.release();
|
||||||
|
assert(up == nullptr);
|
||||||
|
|
||||||
|
up.reset(new string("hello"));
|
||||||
|
assert(*up == "hello");
|
||||||
|
}
|
||||||
|
void testCase3(){
|
||||||
|
auto up1 = make_unique<string>(2, '0');
|
||||||
|
auto up2 = make_unique<string>(2, '1');
|
||||||
|
|
||||||
|
up1.swap(up2);
|
||||||
|
assert(*up1 == "11" && *up2 == "00");
|
||||||
|
|
||||||
|
swap(up1, up2);
|
||||||
|
assert(*up1 == "00" && *up2 == "11");
|
||||||
|
}
|
||||||
|
|
||||||
|
void testAllCases(){
|
||||||
|
testCase1();
|
||||||
|
testCase2();
|
||||||
|
testCase3();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
18
TinySTL/Test/UniquePtrTest.h
Normal file
18
TinySTL/Test/UniquePtrTest.h
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
#ifndef _UNIQUEPTR_TEST_H_
|
||||||
|
#define _UNIQUEPTR_TEST_H_
|
||||||
|
|
||||||
|
#include "TestUtil.h"
|
||||||
|
|
||||||
|
#include "../Memory.h"
|
||||||
|
|
||||||
|
#include <cassert>
|
||||||
|
|
||||||
|
namespace TinySTL{
|
||||||
|
namespace UniquePtrTest{
|
||||||
|
void testCase1();
|
||||||
|
|
||||||
|
void testAllCases();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -100,6 +100,7 @@
|
|||||||
<ClCompile Include="Test\StringTest.cpp" />
|
<ClCompile Include="Test\StringTest.cpp" />
|
||||||
<ClCompile Include="Test\SuffixArrayTest.cpp" />
|
<ClCompile Include="Test\SuffixArrayTest.cpp" />
|
||||||
<ClCompile Include="Test\TrieTreeTest.cpp" />
|
<ClCompile Include="Test\TrieTreeTest.cpp" />
|
||||||
|
<ClCompile Include="Test\UniquePtrTest.cpp" />
|
||||||
<ClCompile Include="Test\Unordered_setTest.cpp" />
|
<ClCompile Include="Test\Unordered_setTest.cpp" />
|
||||||
<ClCompile Include="Test\VectorTest.cpp" />
|
<ClCompile Include="Test\VectorTest.cpp" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
@@ -126,6 +127,7 @@
|
|||||||
<ClInclude Include="Graph.h" />
|
<ClInclude Include="Graph.h" />
|
||||||
<ClInclude Include="Iterator.h" />
|
<ClInclude Include="Iterator.h" />
|
||||||
<ClInclude Include="List.h" />
|
<ClInclude Include="List.h" />
|
||||||
|
<ClInclude Include="Memory.h" />
|
||||||
<ClInclude Include="Profiler\Profiler.h" />
|
<ClInclude Include="Profiler\Profiler.h" />
|
||||||
<ClInclude Include="Queue.h" />
|
<ClInclude Include="Queue.h" />
|
||||||
<ClInclude Include="ReverseIterator.h" />
|
<ClInclude Include="ReverseIterator.h" />
|
||||||
@@ -148,6 +150,7 @@
|
|||||||
<ClInclude Include="Test\SuffixArrayTest.h" />
|
<ClInclude Include="Test\SuffixArrayTest.h" />
|
||||||
<ClInclude Include="Test\TestUtil.h" />
|
<ClInclude Include="Test\TestUtil.h" />
|
||||||
<ClInclude Include="Test\TrieTreeTest.h" />
|
<ClInclude Include="Test\TrieTreeTest.h" />
|
||||||
|
<ClInclude Include="Test\UniquePtrTest.h" />
|
||||||
<ClInclude Include="Test\Unordered_setTest.h" />
|
<ClInclude Include="Test\Unordered_setTest.h" />
|
||||||
<ClInclude Include="Test\VectorTest.h" />
|
<ClInclude Include="Test\VectorTest.h" />
|
||||||
<ClInclude Include="TrieTree.h" />
|
<ClInclude Include="TrieTree.h" />
|
||||||
|
|||||||
@@ -96,6 +96,9 @@
|
|||||||
<ClCompile Include="Test\TrieTreeTest.cpp">
|
<ClCompile Include="Test\TrieTreeTest.cpp">
|
||||||
<Filter>Test</Filter>
|
<Filter>Test</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="Test\UniquePtrTest.cpp">
|
||||||
|
<Filter>Test</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="TypeTraits.h">
|
<ClInclude Include="TypeTraits.h">
|
||||||
@@ -254,6 +257,12 @@
|
|||||||
<ClInclude Include="Test\TrieTreeTest.h">
|
<ClInclude Include="Test\TrieTreeTest.h">
|
||||||
<Filter>Test</Filter>
|
<Filter>Test</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="Memory.h">
|
||||||
|
<Filter>头文件</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="Test\UniquePtrTest.h">
|
||||||
|
<Filter>Test</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="..\README.md" />
|
<None Include="..\README.md" />
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
#include "Test\StringTest.h"
|
#include "Test\StringTest.h"
|
||||||
#include "Test\SuffixArrayTest.h"
|
#include "Test\SuffixArrayTest.h"
|
||||||
#include "Test\TrieTreeTest.h"
|
#include "Test\TrieTreeTest.h"
|
||||||
|
#include "Test\UniquePtrTest.h"
|
||||||
#include "Test\Unordered_setTest.h"
|
#include "Test\Unordered_setTest.h"
|
||||||
#include "Test\VectorTest.h"
|
#include "Test\VectorTest.h"
|
||||||
|
|
||||||
@@ -39,6 +40,7 @@ int main(){
|
|||||||
TinySTL::StringTest::testAllCases();
|
TinySTL::StringTest::testAllCases();
|
||||||
TinySTL::SuffixArrayTest::testAllCases();
|
TinySTL::SuffixArrayTest::testAllCases();
|
||||||
TinySTL::TrieTreeTest::testAllCases();
|
TinySTL::TrieTreeTest::testAllCases();
|
||||||
|
TinySTL::UniquePtrTest::testAllCases();
|
||||||
TinySTL::Unordered_setTest::testAllCases();
|
TinySTL::Unordered_setTest::testAllCases();
|
||||||
TinySTL::VectorTest::testAllCases();
|
TinySTL::VectorTest::testAllCases();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user