diff options
Diffstat (limited to 'EASTL/test/source/TestVectorSet.cpp')
-rw-r--r-- | EASTL/test/source/TestVectorSet.cpp | 170 |
1 files changed, 170 insertions, 0 deletions
diff --git a/EASTL/test/source/TestVectorSet.cpp b/EASTL/test/source/TestVectorSet.cpp new file mode 100644 index 0000000..067630f --- /dev/null +++ b/EASTL/test/source/TestVectorSet.cpp @@ -0,0 +1,170 @@ +///////////////////////////////////////////////////////////////////////////// +// Copyright (c) Electronic Arts Inc. All rights reserved. +///////////////////////////////////////////////////////////////////////////// + + + +#include "TestSet.h" +#include "EASTLTest.h" +#include <EASTL/vector_set.h> +#include <EASTL/vector_multiset.h> +#include <EASTL/vector.h> +#include <EASTL/deque.h> +#include <EABase/eabase.h> + +EA_DISABLE_ALL_VC_WARNINGS() +#ifndef EA_COMPILER_NO_STANDARD_CPP_LIBRARY + #include <set> +#endif +EA_RESTORE_ALL_VC_WARNINGS() + +using namespace eastl; + + +// Template instantations. +// These tell the compiler to compile all the functions for the given class. +template class eastl::vector_set<int>; +template class eastl::vector_multiset<float>; +template class eastl::vector_set<TestObject>; +template class eastl::vector_multiset<TestObject>; + + +/////////////////////////////////////////////////////////////////////////////// +// typedefs +// +typedef eastl::vector_set<int> VS1; +typedef eastl::vector_set<int, eastl::less<int>, EASTLAllocatorType, eastl::deque<int> > VS2; +typedef eastl::vector_set<TestObject> VS4; +typedef eastl::vector_set<TestObject, eastl::less<TestObject>, EASTLAllocatorType, eastl::deque<TestObject> > VS5; +typedef eastl::vector_multiset<int> VMS1; +typedef eastl::vector_multiset<int, eastl::less<int>, EASTLAllocatorType, eastl::deque<int> > VMS2; +typedef eastl::vector_multiset<TestObject> VMS4; +typedef eastl::vector_multiset<TestObject, eastl::less<TestObject>, EASTLAllocatorType, eastl::deque<TestObject> > VMS5; + +#ifndef EA_COMPILER_NO_STANDARD_CPP_LIBRARY + typedef std::set<int> VS3; + typedef std::set<TestObject> VS6; + typedef std::multiset<int> VMS3; + typedef std::multiset<TestObject> VMS6; +#endif +/////////////////////////////////////////////////////////////////////////////// + + +int TestVectorSet() +{ + int nErrorCount = 0; + + #ifndef EA_COMPILER_NO_STANDARD_CPP_LIBRARY + { // Test construction + nErrorCount += TestSetConstruction<VS1, VS3, false>(); + nErrorCount += TestSetConstruction<VS2, VS3, false>(); + nErrorCount += TestSetConstruction<VS4, VS6, false>(); + nErrorCount += TestSetConstruction<VS5, VS6, false>(); + + nErrorCount += TestSetConstruction<VMS1, VMS3, true>(); + nErrorCount += TestSetConstruction<VMS2, VMS3, true>(); + nErrorCount += TestSetConstruction<VMS4, VMS6, true>(); + nErrorCount += TestSetConstruction<VMS5, VMS6, true>(); + } + + + { // Test mutating functionality. + nErrorCount += TestSetMutation<VS1, VS3, false>(); + nErrorCount += TestSetMutation<VS2, VS3, false>(); + nErrorCount += TestSetMutation<VS4, VS6, false>(); + nErrorCount += TestSetMutation<VS5, VS6, false>(); + + nErrorCount += TestSetMutation<VMS1, VMS3, true>(); + nErrorCount += TestSetMutation<VMS2, VMS3, true>(); + nErrorCount += TestSetMutation<VMS4, VMS6, true>(); + nErrorCount += TestSetMutation<VMS5, VMS6, true>(); + } + #endif // EA_COMPILER_NO_STANDARD_CPP_LIBRARY + + + { // Test search functionality. + nErrorCount += TestSetSearch<VS1, false>(); + nErrorCount += TestSetSearch<VS2, false>(); + nErrorCount += TestSetSearch<VS4, false>(); + nErrorCount += TestSetSearch<VS5, false>(); + + nErrorCount += TestSetSearch<VMS1, true>(); + nErrorCount += TestSetSearch<VMS2, true>(); + nErrorCount += TestSetSearch<VMS4, true>(); + nErrorCount += TestSetSearch<VMS5, true>(); + } + + + { + // C++11 emplace and related functionality + nErrorCount += TestSetCpp11<VS4>(); + nErrorCount += TestSetCpp11<VS5>(); + + nErrorCount += TestMultisetCpp11<VMS4>(); + nErrorCount += TestMultisetCpp11<VMS5>(); + } + + + { + // insert at the upper bound of a range + VMS1 vms = {0}; + VERIFY(vms.insert(0) != vms.begin()); + } + + + { // Misc tests + { + // const key_compare& key_comp() const; + // key_compare& key_comp(); + VS2 vs; + const VS2 vsc; + + // ensure count can be called from a const object + const VS2::key_compare& kc = vsc.key_comp(); + vs.key_comp() = kc; + vsc.count(0); + } + + { + // ensure count can be called from a const object + const VMS1 vms; + vms.count(0); + } + } + + { // find_as predicate + { // vector_set + eastl::vector_set<string> vss = {"abc", "def", "ghi", "jklmnop", "qrstu", "vw", "x", "yz"}; + VERIFY(vss.find_as("GHI", TestStrCmpI_2()) != vss.end()); + } + + { // const vector_set + const eastl::vector_set<string> vss = {"abc", "def", "ghi", "jklmnop", "qrstu", "vw", "x", "yz"}; + VERIFY(vss.find_as("GHI", TestStrCmpI_2()) != vss.end()); + } + + { // vector_multiset + eastl::vector_multiset<string> vss = {"abc", "def", "ghi", "jklmnop", "qrstu", "vw", "x", "yz"}; + VERIFY(vss.find_as("GHI", TestStrCmpI_2()) != vss.end()); + } + + { // const vector_multiset + const eastl::vector_multiset<string> vss = {"abc", "def", "ghi", "jklmnop", "qrstu", "vw", "x", "yz"}; + VERIFY(vss.find_as("GHI", TestStrCmpI_2()) != vss.end()); + } + } + + return nErrorCount; +} + + + + + + + + + + + + |