mirror of
				https://github.com/winfsp/winfsp.git
				synced 2025-10-30 19:48:38 -05:00 
			
		
		
		
	launcher: path transform language
This commit is contained in:
		
							
								
								
									
										112
									
								
								tst/winfsp-tests/launcher-ptrans-test.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										112
									
								
								tst/winfsp-tests/launcher-ptrans-test.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,112 @@ | ||||
| /** | ||||
|  * @file launcher-ptrans-test.c | ||||
|  * | ||||
|  * @copyright 2015-2019 Bill Zissimopoulos | ||||
|  */ | ||||
| /* | ||||
|  * This file is part of WinFsp. | ||||
|  * | ||||
|  * You can redistribute it and/or modify it under the terms of the GNU | ||||
|  * General Public License version 3 as published by the Free Software | ||||
|  * Foundation. | ||||
|  * | ||||
|  * Licensees holding a valid commercial license may use this software | ||||
|  * in accordance with the commercial license agreement provided in | ||||
|  * conjunction with the software.  The terms and conditions of any such | ||||
|  * commercial license agreement shall govern, supersede, and render | ||||
|  * ineffective any application of the GPLv3 license to this software, | ||||
|  * notwithstanding of any reference thereto in the software or | ||||
|  * associated repository. | ||||
|  */ | ||||
|  | ||||
| #include <winfsp/launch.h> | ||||
| #include <tlib/testsuite.h> | ||||
|  | ||||
| #include "winfsp-tests.h" | ||||
|  | ||||
| #include <launcher/ptrans.c> | ||||
|  | ||||
| static void launcher_ptrans_test(void) | ||||
| { | ||||
|     PWSTR ipaths[] = | ||||
|     { | ||||
|         L"", 0, | ||||
|         L"\\foo\\bar", 0, | ||||
|         L"", L"", | ||||
|         L"\\foo\\bar", L"", | ||||
|         L"\\foo\\bar", L"/", | ||||
|         L"\\foo\\bar", L"/_", | ||||
|         L"\\foo\\bar", L"/_1", | ||||
|         L"\\foo\\bar", L"\\_", | ||||
|         L"\\foo\\bar", L"\\_A", | ||||
|         L"\\foo\\bar", L"/a", | ||||
|         L"\\foo\\bar", L"/b", | ||||
|         L"\\foo\\bar", L"/c", | ||||
|         L"\\foo\\bar", L"/d", | ||||
|         L"\\foo\\bar", L"/a:b", | ||||
|         L"\\foo\\bar", L"/a:b&c!d", | ||||
|         L"\\foo\\bar", L"/b:a", | ||||
|         L"\\foo\\bar", L"/d!c&b:a", | ||||
|         L"\\foo\\bar", L"/a:_", | ||||
|         L"\\foo\\bar", L"/b:_", | ||||
|         L"\\foo\\bar", L"/c:_", | ||||
|         L"\\foo\\bar\\baz", L"/b:_", | ||||
|         L"\\foo\\bar\\baz\\bag", L"/b:_", | ||||
|         L"\\foo\\bar\\baz", L"/b:/_", | ||||
|         L"\\foo\\bar\\baz\\bag", L"/b:/_", | ||||
|         L"\\foo\\bar\\baz\\bag", L"/a:_:b:_", | ||||
|         L"\\foo\\bar\\baz\\bag", L"/_:_", | ||||
|     }; | ||||
|     PWSTR opaths[] = | ||||
|     { | ||||
|         L"", | ||||
|         L"\\foo\\bar", | ||||
|         L"", | ||||
|         L"", | ||||
|         L"", | ||||
|         L"/foo/bar", | ||||
|         L"/foo/bar", | ||||
|         L"\\\\foo\\\\bar", | ||||
|         L"\\\\foo\\\\bar", | ||||
|         L"foo", | ||||
|         L"bar", | ||||
|         L"", | ||||
|         L"", | ||||
|         L"foo:bar", | ||||
|         L"foo:bar&!", | ||||
|         L"bar:foo", | ||||
|         L"!&bar:foo", | ||||
|         L"foo:bar", | ||||
|         L"bar:", | ||||
|         L":", | ||||
|         L"bar:baz", | ||||
|         L"bar:baz/bag", | ||||
|         L"bar:/baz", | ||||
|         L"bar:/baz/bag", | ||||
|         L"foo:bar/baz/bag:bar:baz/bag", | ||||
|         L"/foo/bar/baz/bag:/foo/bar/baz/bag", | ||||
|     }; | ||||
|  | ||||
|     for (size_t i = 0; sizeof ipaths / (sizeof ipaths[0] * 2) > i; i++) | ||||
|     { | ||||
|         WCHAR Buf[1024]; | ||||
|         ULONG Length; | ||||
|         PWSTR Dest; | ||||
|  | ||||
|         Length = (ULONG)(UINT_PTR)PathTransform(0, ipaths[2 * i + 0], ipaths[2 * i + 1]); | ||||
|         ASSERT(Length == wcslen(opaths[i]) * sizeof(WCHAR)); | ||||
|  | ||||
|         Dest = PathTransform(Buf, ipaths[2 * i + 0], ipaths[2 * i + 1]); | ||||
|         *Dest = L'\0'; | ||||
|         ASSERT(Dest == Buf + wcslen(opaths[i])); | ||||
|         ASSERT(0 == wcscmp(Buf, opaths[i])); | ||||
|     } | ||||
| } | ||||
|  | ||||
| void launcher_ptrans_tests(void) | ||||
| { | ||||
|     if (OptExternal) | ||||
|         return; | ||||
|  | ||||
|     TEST_OPT(launcher_ptrans_test); | ||||
| } | ||||
		Reference in New Issue
	
	Block a user