diff options
author | Jiyoung Yun <jy910.yun@samsung.com> | 2016-11-23 19:09:09 +0900 |
---|---|---|
committer | Jiyoung Yun <jy910.yun@samsung.com> | 2016-11-23 19:09:09 +0900 |
commit | 4b4aad7217d3292650e77eec2cf4c198ea9c3b4b (patch) | |
tree | 98110734c91668dfdbb126fcc0e15ddbd93738ca /src/pal/tests/palsuite/miscellaneous/SetEnvironmentVariableW/test1/test.c | |
parent | fa45f57ed55137c75ac870356a1b8f76c84b229c (diff) | |
download | coreclr-4b4aad7217d3292650e77eec2cf4c198ea9c3b4b.tar.gz coreclr-4b4aad7217d3292650e77eec2cf4c198ea9c3b4b.tar.bz2 coreclr-4b4aad7217d3292650e77eec2cf4c198ea9c3b4b.zip |
Imported Upstream version 1.1.0upstream/1.1.0
Diffstat (limited to 'src/pal/tests/palsuite/miscellaneous/SetEnvironmentVariableW/test1/test.c')
-rw-r--r-- | src/pal/tests/palsuite/miscellaneous/SetEnvironmentVariableW/test1/test.c | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/src/pal/tests/palsuite/miscellaneous/SetEnvironmentVariableW/test1/test.c b/src/pal/tests/palsuite/miscellaneous/SetEnvironmentVariableW/test1/test.c new file mode 100644 index 0000000000..bddbba7940 --- /dev/null +++ b/src/pal/tests/palsuite/miscellaneous/SetEnvironmentVariableW/test1/test.c @@ -0,0 +1,142 @@ +// 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: test.c +** +** Purpose: +** Set an environment variable and check to ensure success was returned. Then +** get the environment variable and compare to the correct value. Also, check +** that calling the function again, resets the variable properly. And that +** calling with NULL deletes the variable. +** +** +**=========================================================*/ + +#define UNICODE +#define BUF_SIZE 128 + +#include <palsuite.h> + +/* Depends on GetEnvironmentVariable */ + +int __cdecl main(int argc, char *argv[]) +{ + + /* Define some buffers needed for the function */ + WCHAR VariableBuffer[] = {'P','A','L','T','E','S','T','\0'}; + WCHAR ValueBuffer[] = {'T','e','s','t','i','n','g','\0'}; + WCHAR SecondValueBuffer[] = {'S','e','c','o','n','d','T','e','s','t','\0'}; + WCHAR NewValue[BUF_SIZE]; + int SetResult = 0; + + /* + * Initialize the PAL and return FAILURE if this fails + */ + + if(0 != (PAL_Initialize(argc, argv))) + { + return FAIL; + } + + SetResult = SetEnvironmentVariable(VariableBuffer, + ValueBuffer); + + /* If result is 0, the SetEnviron function failed */ + if(SetResult == 0) + { + Fail("ERROR: SetEnvironmentVariable returned 0, which indicates that " + "it failed, even though it should have succeeded in setting the " + "variable PALTEST.\n"); + } + + + /* Grab the Environment variable we just set */ + if(GetEnvironmentVariable(VariableBuffer,NewValue,BUF_SIZE) <= 0) + { + Fail("ERROR: GetEnvironmentVariable returned 0 or less, which " + "indicates that no value was read in from the given variable."); + } + + /* Make sure that the value put into NewValue was indeed the environment + variable we set. + */ + + if(memcmp(NewValue,ValueBuffer,wcslen(ValueBuffer)*sizeof(WCHAR)+2) != 0) + { + Fail("ERROR: When retrieving the variable that was just set, a " + "difference was found. Instead of the value being '%s' it " + "was instead '%s'.\n",convertC(ValueBuffer),convertC(NewValue)); + } + + /* If we set the same environment variable with a different value, the + old value should be replaced. + */ + + SetResult = SetEnvironmentVariable(VariableBuffer, + SecondValueBuffer); + + /* If result is 0, the SetEnviron function failed */ + if(SetResult == 0) + { + Fail("ERROR: SetEnvironmentVariable returned 0, which indicates that " + "it failed, even though it should have succeeded in re-setting " + "the variable PALTEST.\n"); + } + + memset(NewValue,0,BUF_SIZE); + + /* Grab the Environment variable we just set */ + if(GetEnvironmentVariable(VariableBuffer,NewValue,BUF_SIZE) <= 0) + { + Fail("ERROR: GetEnvironmentVariable returned 0 or less, which " + "indicates that no value was read in from the given variable."); + } + + /* Make sure that the value put into NewValue was indeed the environment + variable we set. + */ + + if(memcmp(NewValue,SecondValueBuffer, + wcslen(SecondValueBuffer)*sizeof(WCHAR)+2) != 0) + { + Fail("ERROR: When retrieving the variable that was just set, a " + "difference was found. Instead of the value being '%s' it " + "was instead '%s'.\n", + convertC(SecondValueBuffer),convertC(NewValue)); + } + + /* Finally, set this variable with NULL, which should delete it from the + current environment. + */ + + SetResult = SetEnvironmentVariable(VariableBuffer, NULL); + + /* If result is 0, the SetEnviron function failed */ + if(SetResult == 0) + { + Fail("ERROR: SetEnvironmentVariable returned 0, which indicates that " + "it failed, even though it should have succeeded in deleting " + "the variable PALTEST.\n"); + } + + memset(NewValue,0,BUF_SIZE); + + /* Grab the Environment variable we just set, ensure that it's + empty now. + */ + if(GetEnvironmentVariable(VariableBuffer,NewValue,BUF_SIZE) != 0) + { + Fail("ERROR: GetEnvironmentVariable returned a non-zero value, " + "even though the environment variable which was checked should " + "have been empty."); + } + + PAL_Terminate(); + return PASS; +} + + + |