完成unique_ptr测试
This commit is contained in:
@@ -45,6 +45,7 @@ TinySTL
|
||||
* pair:100%
|
||||
* list:100%
|
||||
* unordered_set:100%
|
||||
* unique_ptr:100%
|
||||
* STL Algorithms:
|
||||
* fill:100%
|
||||
* fill_n:100%
|
||||
@@ -101,6 +102,7 @@ TinySTL
|
||||
* unordered_set:100%
|
||||
* directed_graph:100%
|
||||
* trie tree:100%
|
||||
* unique_ptr:100%
|
||||
|
||||
#TinySTL性能测试:
|
||||
###测试环境: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\SuffixArrayTest.cpp" />
|
||||
<ClCompile Include="Test\TrieTreeTest.cpp" />
|
||||
<ClCompile Include="Test\UniquePtrTest.cpp" />
|
||||
<ClCompile Include="Test\Unordered_setTest.cpp" />
|
||||
<ClCompile Include="Test\VectorTest.cpp" />
|
||||
</ItemGroup>
|
||||
@@ -126,6 +127,7 @@
|
||||
<ClInclude Include="Graph.h" />
|
||||
<ClInclude Include="Iterator.h" />
|
||||
<ClInclude Include="List.h" />
|
||||
<ClInclude Include="Memory.h" />
|
||||
<ClInclude Include="Profiler\Profiler.h" />
|
||||
<ClInclude Include="Queue.h" />
|
||||
<ClInclude Include="ReverseIterator.h" />
|
||||
@@ -148,6 +150,7 @@
|
||||
<ClInclude Include="Test\SuffixArrayTest.h" />
|
||||
<ClInclude Include="Test\TestUtil.h" />
|
||||
<ClInclude Include="Test\TrieTreeTest.h" />
|
||||
<ClInclude Include="Test\UniquePtrTest.h" />
|
||||
<ClInclude Include="Test\Unordered_setTest.h" />
|
||||
<ClInclude Include="Test\VectorTest.h" />
|
||||
<ClInclude Include="TrieTree.h" />
|
||||
|
||||
@@ -96,6 +96,9 @@
|
||||
<ClCompile Include="Test\TrieTreeTest.cpp">
|
||||
<Filter>Test</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Test\UniquePtrTest.cpp">
|
||||
<Filter>Test</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="TypeTraits.h">
|
||||
@@ -254,6 +257,12 @@
|
||||
<ClInclude Include="Test\TrieTreeTest.h">
|
||||
<Filter>Test</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Memory.h">
|
||||
<Filter>头文件</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Test\UniquePtrTest.h">
|
||||
<Filter>Test</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="..\README.md" />
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
#include "Test\StringTest.h"
|
||||
#include "Test\SuffixArrayTest.h"
|
||||
#include "Test\TrieTreeTest.h"
|
||||
#include "Test\UniquePtrTest.h"
|
||||
#include "Test\Unordered_setTest.h"
|
||||
#include "Test\VectorTest.h"
|
||||
|
||||
@@ -39,6 +40,7 @@ int main(){
|
||||
TinySTL::StringTest::testAllCases();
|
||||
TinySTL::SuffixArrayTest::testAllCases();
|
||||
TinySTL::TrieTreeTest::testAllCases();
|
||||
TinySTL::UniquePtrTest::testAllCases();
|
||||
TinySTL::Unordered_setTest::testAllCases();
|
||||
TinySTL::VectorTest::testAllCases();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user