完成unique_ptr测试

This commit is contained in:
邹晓航
2015-03-12 16:31:08 +08:00
parent c174e8abc2
commit 32fefc463e
6 changed files with 100 additions and 0 deletions

View File

@@ -45,6 +45,7 @@ TinySTL
* pair100%
* list100%
* unordered_set100%
* unique_ptr100%
* STL Algorithms:
* fill100%
* fill_n100%
@@ -101,6 +102,7 @@ TinySTL
* unordered_set100%
* directed_graph100%
* trie tree100%
* unique_ptr100%
#TinySTL性能测试:
###测试环境Windows 7 && VS2013 && release模式

View 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();
}
}
}

View 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

View File

@@ -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" />

View File

@@ -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" />

View File

@@ -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();