///////////////////////////////////////////////////////////////////////////// // Copyright (c) Electronic Arts Inc. All rights reserved. ///////////////////////////////////////////////////////////////////////////// #include "EASTLTest.h" #include struct NonNumericType { NonNumericType(int value) : mValue(value){} bool operator==(int value) const { return mValue == value; } int mValue; // This exists for the purpose of allowing the type to act like a number and allow the test logic below to work. }; /////////////////////////////////////////////////////////////////////////////// // TestNumericLimits // int TestNumericLimits() { int nErrorCount = 0; // To consider: Some day when we get more time, make a big table-driven set of // expected results to all member variables and function calls. // Test a type that is not numeric,. EATEST_VERIFY(!eastl::numeric_limits::is_bounded); EATEST_VERIFY( eastl::numeric_limits::max() == 0); EATEST_VERIFY(!eastl::numeric_limits::is_bounded); EATEST_VERIFY( eastl::numeric_limits::max() == 0); EATEST_VERIFY(!eastl::numeric_limits::is_bounded); EATEST_VERIFY( eastl::numeric_limits::max() == 0); EATEST_VERIFY(!eastl::numeric_limits::is_bounded); EATEST_VERIFY( eastl::numeric_limits::max() == 0); // Test bool in all const-volatile variants. EATEST_VERIFY(eastl::numeric_limits::is_bounded); EATEST_VERIFY(eastl::numeric_limits::max() != 0); EATEST_VERIFY(eastl::numeric_limits::is_bounded); EATEST_VERIFY(eastl::numeric_limits::max() != 0); EATEST_VERIFY(eastl::numeric_limits::is_bounded); EATEST_VERIFY(eastl::numeric_limits::max() != 0); EATEST_VERIFY(eastl::numeric_limits::is_bounded); EATEST_VERIFY(eastl::numeric_limits::max() != 0); // Do basic tests of the remaining types. EATEST_VERIFY(eastl::numeric_limits::is_bounded); EATEST_VERIFY(eastl::numeric_limits::max() != 0); EATEST_VERIFY(eastl::numeric_limits::is_bounded); EATEST_VERIFY(eastl::numeric_limits::max() != 0); EATEST_VERIFY(eastl::numeric_limits::is_bounded); EATEST_VERIFY(eastl::numeric_limits::max() != 0); EATEST_VERIFY(eastl::numeric_limits::is_bounded); EATEST_VERIFY(eastl::numeric_limits::max() != 0); EATEST_VERIFY(eastl::numeric_limits::is_bounded); EATEST_VERIFY(eastl::numeric_limits::max() != 0); EATEST_VERIFY(eastl::numeric_limits::is_bounded); EATEST_VERIFY(eastl::numeric_limits::max() != 0); EATEST_VERIFY(eastl::numeric_limits::is_bounded); EATEST_VERIFY(eastl::numeric_limits::max() != 0); EATEST_VERIFY(eastl::numeric_limits::is_bounded); EATEST_VERIFY(eastl::numeric_limits::max() != 0); EATEST_VERIFY(eastl::numeric_limits::is_bounded); EATEST_VERIFY(eastl::numeric_limits::max() != 0); EATEST_VERIFY(eastl::numeric_limits::is_bounded); EATEST_VERIFY(eastl::numeric_limits::max() != 0); EATEST_VERIFY(eastl::numeric_limits::is_bounded); EATEST_VERIFY(eastl::numeric_limits::max() != 0); EATEST_VERIFY(eastl::numeric_limits::is_bounded); EATEST_VERIFY(eastl::numeric_limits::max() != 0); EATEST_VERIFY(eastl::numeric_limits::is_bounded); EATEST_VERIFY(eastl::numeric_limits::max() != 0); EATEST_VERIFY(eastl::numeric_limits::is_bounded); EATEST_VERIFY(eastl::numeric_limits::max() != 0); EATEST_VERIFY(eastl::numeric_limits::is_bounded); EATEST_VERIFY(eastl::numeric_limits::max() != 0); EATEST_VERIFY(eastl::numeric_limits::is_bounded); EATEST_VERIFY(eastl::numeric_limits::max() != 0); EATEST_VERIFY(eastl::numeric_limits::is_bounded); EATEST_VERIFY(eastl::numeric_limits::max() != 0); // We don't yet have a generic global way to identify what the name of the supported 128 bit type is. // We just happen to know that for gcc/clang it is __int128. #if (EA_COMPILER_INTMAX_SIZE >= 16) && (defined(EA_COMPILER_GNUC) || defined(EA_COMPILER_CLANG)) // If __int128_t/__uint128_t is supported... EATEST_VERIFY(eastl::numeric_limits<__uint128_t>::is_bounded); EATEST_VERIFY(eastl::numeric_limits<__uint128_t>::max() != 0); EATEST_VERIFY(eastl::numeric_limits<__int128_t>::is_bounded); EATEST_VERIFY(eastl::numeric_limits<__int128_t>::max() != 0); #endif // Test sized types. EATEST_VERIFY(eastl::numeric_limits::is_bounded); EATEST_VERIFY(eastl::numeric_limits::max() != 0); EATEST_VERIFY(eastl::numeric_limits::is_bounded); EATEST_VERIFY(eastl::numeric_limits::max() != 0); EATEST_VERIFY(eastl::numeric_limits::is_bounded); EATEST_VERIFY(eastl::numeric_limits::max() != 0); EATEST_VERIFY(eastl::numeric_limits::is_bounded); EATEST_VERIFY(eastl::numeric_limits::max() != 0); EATEST_VERIFY(eastl::numeric_limits::is_bounded); EATEST_VERIFY(eastl::numeric_limits::max() != 0); EATEST_VERIFY(eastl::numeric_limits::is_bounded); EATEST_VERIFY(eastl::numeric_limits::max() != 0); EATEST_VERIFY(eastl::numeric_limits::is_bounded); EATEST_VERIFY(eastl::numeric_limits::max() != 0); EATEST_VERIFY(eastl::numeric_limits::is_bounded); EATEST_VERIFY(eastl::numeric_limits::max() != 0); return nErrorCount; }