summaryrefslogtreecommitdiff
path: root/src/pal/tests/palsuite/file_io/CopyFileW/test2/test2.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/pal/tests/palsuite/file_io/CopyFileW/test2/test2.cpp')
-rw-r--r--src/pal/tests/palsuite/file_io/CopyFileW/test2/test2.cpp124
1 files changed, 124 insertions, 0 deletions
diff --git a/src/pal/tests/palsuite/file_io/CopyFileW/test2/test2.cpp b/src/pal/tests/palsuite/file_io/CopyFileW/test2/test2.cpp
new file mode 100644
index 0000000000..5380a181ca
--- /dev/null
+++ b/src/pal/tests/palsuite/file_io/CopyFileW/test2/test2.cpp
@@ -0,0 +1,124 @@
+// 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: test2.c
+**
+** Purpose: Tests the PAL implementation of the CopyFileW function
+** Attempt to copy a file to itself
+**
+**
+**===================================================================*/
+
+#include <palsuite.h>
+
+int __cdecl main(int argc, char *argv[])
+{
+ LPSTR szSrcExisting = "src_existing.tmp";
+ WCHAR* wcSource;
+ BOOL bRc = TRUE;
+ FILE* tempFile = NULL;
+ DWORD temp;
+ int retCode;
+
+ if (0 != PAL_Initialize(argc,argv))
+ {
+ return FAIL;
+ }
+
+ /* create the src_existing file */
+ tempFile = fopen(szSrcExisting, "w");
+ if (tempFile != NULL)
+ {
+ retCode = fputs("CopyFileA test file: src_existing.tmp ", tempFile);
+ if(retCode < 0)
+ {
+ Fail("CopyFileW: ERROR-> Couldn't write to %s with error "
+ "%u.\n", szSrcExisting, GetLastError());
+ }
+ retCode = fclose(tempFile);
+ if(retCode != 0)
+ {
+ Fail("CopyFileW: ERROR-> Couldn't close file: %s with error "
+ "%u.\n", szSrcExisting, GetLastError());
+ }
+ }
+ else
+ {
+ Fail("CopyFileW: ERROR-> Couldn't create %s.\n", szSrcExisting);
+ }
+
+ /* convert source string to wide character */
+ wcSource = convert(szSrcExisting);
+
+ /* Get file attributes of source */
+ temp = GetFileAttributes(szSrcExisting);
+ if (temp == -1)
+ {
+ free(wcSource);
+ Fail("CopyFileW: GetFileAttributes of source file "
+ "failed with error code %ld. \n",
+ GetLastError());
+ }
+
+ /* make sure a file can't copy to itself
+ first testing with IfFileExists flag set to true */
+ bRc = CopyFileW(wcSource,wcSource,TRUE);
+ if(bRc)
+ {
+ free(wcSource);
+ Fail("ERROR: Cannot copy a file to itself, %u",GetLastError());
+ }
+
+ /* try to get file attributes of desitnation */
+ if (GetFileAttributesA(szSrcExisting) == -1)
+ {
+ free(wcSource);
+ Fail("CopyFileW: GetFileAttributes of destination file "
+ "failed with error code %ld. \n",
+ GetLastError());
+ }
+ else
+ {
+ /* verify attributes of destination file to source file*/
+ if(temp != GetFileAttributes(szSrcExisting))
+ {
+ free(wcSource);
+ Fail("CopyFileW : The file attributes of the "
+ "destination file do not match the file "
+ "attributes of the source file.\n");
+ }
+ }
+
+ /* testing with IfFileExists flags set to false
+ should fail in Windows and pass in UNIX */
+ bRc = CopyFileW(wcSource,wcSource,FALSE);
+ free(wcSource);
+ if(bRc && (GetLastError() != ERROR_ALREADY_EXISTS))
+ {
+ Fail("ERROR: Cannot copy a file to itself, %u",GetLastError());
+ }
+
+ if (GetFileAttributesA(szSrcExisting) == -1)
+ {
+ Fail("CopyFileW: GetFileAttributes of destination file "
+ "failed with error code %ld. \n",
+ GetLastError());
+ }
+ else
+ {
+ /* verify attributes of destination file to source file*/
+
+ if(temp != GetFileAttributes(szSrcExisting))
+ {
+ Fail("CopyFileW : The file attributes of the "
+ "destination file do not match the file "
+ "attributes of the source file.\n");
+ }
+ }
+
+ PAL_Terminate();
+ return PASS;
+}