diff options
Diffstat (limited to 'src/pal/tests/palsuite/c_runtime/llabs/test1/test1.cpp')
-rw-r--r-- | src/pal/tests/palsuite/c_runtime/llabs/test1/test1.cpp | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/src/pal/tests/palsuite/c_runtime/llabs/test1/test1.cpp b/src/pal/tests/palsuite/c_runtime/llabs/test1/test1.cpp new file mode 100644 index 0000000000..044e22f134 --- /dev/null +++ b/src/pal/tests/palsuite/c_runtime/llabs/test1/test1.cpp @@ -0,0 +1,65 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +/*===================================================================== +** +** Source: test1.c +** +** Purpose: Call llabs on a series of values -- negative, positive, +** zero, and the largest negative value of an __int64. Ensure that +** they are all changed properly to their absoulte value. +** +** +**===================================================================*/ + +#include <palsuite.h> + +struct testCase +{ + __int64 LongLongValue; + __int64 AbsoluteLongLongValue; +}; + +int __cdecl main(int argc, char **argv) +{ + + __int64 result=0; + int i=0; + + struct testCase testCases[] = + { + {1234, 1234}, + {-1234, 1234}, + {0, 0}, + {-9223372036854775807LL, 9223372036854775807LL}, /* Max value to abs */ + {9223372036854775807LL, 9223372036854775807LL} + }; + + if (0 != (PAL_Initialize(argc, argv))) + { + return FAIL; + } + + /* Loop through each case. Call llabs on each __int64 and ensure that + the resulting value is correct. + */ + + for(i = 0; i < sizeof(testCases) / sizeof(struct testCase); i++) + { + /* Absolute value on an __int64 */ + result = llabs(testCases[i].LongLongValue); + + if (testCases[i].AbsoluteLongLongValue != result) + { + Fail("ERROR: llabs took the absoulte value of '%d' to be '%d' " + "instead of %d.\n", + testCases[i].LongLongValue, + result, + testCases[i].AbsoluteLongLongValue); + } + } + + PAL_Terminate(); + return PASS; +} |