1 ///////////////////////////////////////////////////////////////////////////////
2 // MuldeR's Utilities for Qt
3 // Copyright (C) 2004-2019 LoRd_MuldeR <MuldeR2@GMX.de>
5 // This library is free software; you can redistribute it and/or
6 // modify it under the terms of the GNU Lesser General Public
7 // License as published by the Free Software Foundation; either
8 // version 2.1 of the License, or (at your option) any later version.
10 // This library is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 // Lesser General Public License for more details.
15 // You should have received a copy of the GNU Lesser General Public
16 // License along with this library; if not, write to the Free Software
17 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 // http://www.gnu.org/licenses/lgpl-2.1.txt
20 //////////////////////////////////////////////////////////////////////////////////
22 #include "MUtilsTest.h"
25 #include <MUtils/OSSupport.h>
33 #define WIN32_LEAN_AND_MEAN 1
37 //===========================================================================
39 //===========================================================================
41 class OSTest
: public Testbed
48 virtual void TearDown()
53 //===========================================================================
55 //===========================================================================
58 static QString
expandEnvVars(const wchar_t *text
)
61 const DWORD size
= ExpandEnvironmentStringsW(text
, NULL
, 0);
62 QVector
<wchar_t> buffer(size
+ 1);
63 const DWORD result
= ExpandEnvironmentStringsW(text
, buffer
.data(), buffer
.size());
64 if ((result
> 0U) || (result
<= size
))
66 return MUTILS_QSTR(buffer
.data());
70 #error "Function expandEnvVars() not implemented!"
74 //-----------------------------------------------------------------
76 //-----------------------------------------------------------------
78 #define TEST_KNOWN_FOLDER(X,Y) do \
80 const QString path = MUtils::OS::known_folder((MUtils::OS::##X)); \
81 /*_putws(MUTILS_WCHR(path));*/ \
82 ASSERT_FALSE(path.isEmpty()); \
83 const QString expected = QDir::fromNativeSeparators(expandEnvVars((Y))); \
84 ASSERT_STRCASEEQ(MUTILS_UTF8(path), MUTILS_UTF8(expected)); \
88 TEST_F(OSTest
, KnownFolder01
) { TEST_KNOWN_FOLDER(FOLDER_PROFILE_USER
, L
"%USERPROFILE%"); }
89 TEST_F(OSTest
, KnownFolder02
) { TEST_KNOWN_FOLDER(FOLDER_PROFILE_PUBL
, L
"%PUBLIC%"); }
90 TEST_F(OSTest
, KnownFolder03
) { TEST_KNOWN_FOLDER(FOLDER_APPDATA_ROAM
, L
"%APPDATA%"); }
91 TEST_F(OSTest
, KnownFolder04
) { TEST_KNOWN_FOLDER(FOLDER_APPDATA_LOCA
, L
"%LOCALAPPDATA%"); }
92 TEST_F(OSTest
, KnownFolder05
) { TEST_KNOWN_FOLDER(FOLDER_DOCS_USER
, L
"%USERPROFILE%/Documents"); }
93 TEST_F(OSTest
, KnownFolder06
) { TEST_KNOWN_FOLDER(FOLDER_DOCS_PUBL
, L
"%PUBLIC%/Documents"); }
94 TEST_F(OSTest
, KnownFolder07
) { TEST_KNOWN_FOLDER(FOLDER_DESKTOP_USER
, L
"%USERPROFILE%/Desktop"); }
95 TEST_F(OSTest
, KnownFolder08
) { TEST_KNOWN_FOLDER(FOLDER_DESKTOP_PUBL
, L
"%PUBLIC%/Desktop"); }
96 TEST_F(OSTest
, KnownFolder09
) { TEST_KNOWN_FOLDER(FOLDER_PICTURES_USER
, L
"%USERPROFILE%/Pictures"); }
97 TEST_F(OSTest
, KnownFolder10
) { TEST_KNOWN_FOLDER(FOLDER_PICTURES_PUBL
, L
"%PUBLIC%/Pictures"); }
98 TEST_F(OSTest
, KnownFolder11
) { TEST_KNOWN_FOLDER(FOLDER_MUSIC_USER
, L
"%USERPROFILE%/Music"); }
99 TEST_F(OSTest
, KnownFolder12
) { TEST_KNOWN_FOLDER(FOLDER_MUSIC_PUBL
, L
"%PUBLIC%/Music"); }
100 TEST_F(OSTest
, KnownFolder13
) { TEST_KNOWN_FOLDER(FOLDER_VIDEO_USER
, L
"%USERPROFILE%/Videos"); }
101 TEST_F(OSTest
, KnownFolder14
) { TEST_KNOWN_FOLDER(FOLDER_VIDEO_PUBL
, L
"%PUBLIC%/Videos"); }
103 TEST_F(OSTest
, KnownFolder15
) { TEST_KNOWN_FOLDER(FOLDER_PROGRAMS_DEF
, L
"%ProgramFiles%"); }
104 TEST_F(OSTest
, KnownFolder17
) { TEST_KNOWN_FOLDER(FOLDER_PROGRAMS_X64
, L
"%ProgramW6432%"); }
106 TEST_F(OSTest
, KnownFolder15
) { TEST_KNOWN_FOLDER(FOLDER_PROGRAMS_DEF
, L
"%ProgramFiles(x86)%"); }
108 TEST_F(OSTest
, KnownFolder16
) { TEST_KNOWN_FOLDER(FOLDER_PROGRAMS_X86
, L
"%ProgramFiles(x86)%"); }
109 TEST_F(OSTest
, KnownFolder18
) { TEST_KNOWN_FOLDER(FOLDER_SYSROOT
, L
"%SystemRoot%"); }
110 TEST_F(OSTest
, KnownFolder19
) { TEST_KNOWN_FOLDER(FOLDER_SYSTEM_DEF
, L
"%SystemRoot%/System32"); }
111 TEST_F(OSTest
, KnownFolder20
) { TEST_KNOWN_FOLDER(FOLDER_SYSTEM_X86
, L
"%SystemRoot%/SysWOW64"); }
113 #undef TEST_KNOWN_FOLDER