1 /* 2 * PROJECT: ReactOS Setup Library - Unit-tests 3 * LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later) 4 * PURPOSE: Test for IsValidInstallDirectory 5 * COPYRIGHT: Copyright 2024 Hermès Bélusca-Maïto <hermes.belusca-maito@reactos.org> 6 */ 7 8 #include "precomp.h" 9 10 // 11 // FIXME: Temporary symbols defined to make linking work. 12 // They will be defined to something once INF file testing is implemented. 13 // 14 pSpInfCloseInfFile SpInfCloseInfFile = NULL; 15 pSpInfFindFirstLine SpInfFindFirstLine = NULL; 16 pSpInfFindNextLine SpInfFindNextLine = NULL; 17 pSpInfGetFieldCount SpInfGetFieldCount = NULL; 18 pSpInfGetBinaryField SpInfGetBinaryField = NULL; 19 pSpInfGetIntField SpInfGetIntField = NULL; 20 pSpInfGetMultiSzField SpInfGetMultiSzField = NULL; 21 pSpInfGetStringField SpInfGetStringField = NULL; 22 pSpInfGetField SpInfGetField = NULL; 23 pSpInfOpenInfFile SpInfOpenInfFile = NULL; 24 25 BOOLEAN IsUnattendedSetup = FALSE; 26 HANDLE ProcessHeap; 27 28 29 START_TEST(IsValidInstallDirectory) 30 { 31 static const struct 32 { 33 PCWSTR path; 34 BOOLEAN result; 35 } tests[] = 36 { 37 { L"", FALSE }, 38 { L" ", FALSE }, 39 { L"\\", FALSE }, 40 { L"\\\\", FALSE }, 41 { L".", FALSE }, 42 { L"..", FALSE }, 43 { L"...", FALSE }, 44 { L"....", FALSE }, 45 { L" WINNT", FALSE }, 46 { L"WINNT ", FALSE }, 47 { L".WINNT", FALSE }, 48 { L"..WINNT", FALSE }, 49 { L"W.INNT", FALSE }, 50 { L"WI.NNT", TRUE }, 51 { L"WIN.NT", TRUE }, 52 { L"WINNT.", TRUE }, 53 { L"WINNT..", FALSE }, 54 { L"WINNT. ", FALSE }, 55 { L"WINNT.e e", FALSE }, 56 { L"WIN^`NT", FALSE }, 57 58 { L"WINNT", TRUE }, 59 { L"\\WINNT", TRUE }, 60 { L"\\WINNT\\", TRUE }, 61 { L"\\WINNT\\.", FALSE }, 62 { L"WIN\\NT", TRUE }, 63 { L"WIN\\NT.", TRUE }, 64 { L"\\WIN\\NT\\", TRUE }, 65 { L"\\WIN\\NT.\\", TRUE }, 66 { L"\\WIN.\\NT52", TRUE }, 67 { L"\\WIN\\.\\NT52", FALSE }, 68 { L"\\WIN\\..\\NT52", FALSE }, 69 { L"\\WIN\\...\\NT52", FALSE }, 70 { L"\\WIN\\....\\NT52", FALSE }, 71 72 { L"win.nt.5", FALSE }, 73 { L"win.ntX5", FALSE }, 74 { L"winn.tX5", TRUE }, 75 { L"winnt.X5", TRUE }, 76 { L"winntX.5", TRUE }, 77 { L"winntX5.", TRUE }, 78 { L"filenamee.xte", FALSE }, 79 { L"filenamee.xt", FALSE }, 80 { L"filename.ext", TRUE }, 81 { L"file.ame.ext", FALSE }, 82 { L"filenam.eext", FALSE }, 83 84 { L"1 3 5 7 .abc", FALSE }, 85 { L"12345678. c", FALSE }, 86 { L"123456789.a", FALSE }, 87 { L"12345.abcd", FALSE }, 88 { L"12345.ab d", FALSE }, 89 { L".abc", FALSE }, 90 { L"12.abc.d", FALSE }, 91 { L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", FALSE }, 92 }; 93 94 #define BOOL_TO_STR(b) ((b) ? "TRUE" : "FALSE") 95 96 ProcessHeap = GetProcessHeap(); 97 98 UINT i; 99 for (i = 0; i < _countof(tests); ++i) 100 { 101 BOOLEAN ret = IsValidInstallDirectory(tests[i].path); 102 ok(ret == tests[i].result, 103 "Unexpected result for '%S', got %s, expected %s\n", 104 tests[i].path, BOOL_TO_STR(ret), BOOL_TO_STR(tests[i].result)); 105 } 106 107 #undef BOOL_TO_STR 108 } 109 110 /* EOF */ 111