diff --git a/MUtilities_VS2017.sln b/MUtilities_VS2017.sln index 17dcacf..37908e3 100644 --- a/MUtilities_VS2017.sln +++ b/MUtilities_VS2017.sln @@ -5,6 +5,8 @@ VisualStudioVersion = 15.0.26430.16 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MUtilities", "MUtilities_VS2017.vcxproj", "{55405FE1-149F-434C-9D72-4B64348D2A08}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MUtilitiesTest", "test\MUtilitiesTest_VS2017.vcxproj", "{B7BCA0A5-17AD-4F20-A42C-CD6FFBD55D89}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|x86 = Debug|x86 @@ -18,8 +20,17 @@ Global {55405FE1-149F-434C-9D72-4B64348D2A08}.Release_Static|x86.Build.0 = Release_Static|Win32 {55405FE1-149F-434C-9D72-4B64348D2A08}.Release|x86.ActiveCfg = Release|Win32 {55405FE1-149F-434C-9D72-4B64348D2A08}.Release|x86.Build.0 = Release|Win32 + {B7BCA0A5-17AD-4F20-A42C-CD6FFBD55D89}.Debug|x86.ActiveCfg = Debug|Win32 + {B7BCA0A5-17AD-4F20-A42C-CD6FFBD55D89}.Debug|x86.Build.0 = Debug|Win32 + {B7BCA0A5-17AD-4F20-A42C-CD6FFBD55D89}.Release_Static|x86.ActiveCfg = Release_Static|Win32 + {B7BCA0A5-17AD-4F20-A42C-CD6FFBD55D89}.Release_Static|x86.Build.0 = Release_Static|Win32 + {B7BCA0A5-17AD-4F20-A42C-CD6FFBD55D89}.Release|x86.ActiveCfg = Release|Win32 + {B7BCA0A5-17AD-4F20-A42C-CD6FFBD55D89}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {46D377DA-C6DC-44E6-9320-01A50F650EB9} + EndGlobalSection EndGlobal diff --git a/test/MUtilitiesTest_VS2017.vcxproj b/test/MUtilitiesTest_VS2017.vcxproj new file mode 100644 index 0000000..7954be1 --- /dev/null +++ b/test/MUtilitiesTest_VS2017.vcxproj @@ -0,0 +1,168 @@ + + + + + Debug + Win32 + + + Release_Static + Win32 + + + Release + Win32 + + + + + + + + + + + {55405fe1-149f-434c-9d72-4b64348d2a08} + + + + + + + {B7BCA0A5-17AD-4F20-A42C-CD6FFBD55D89} + Win32Proj + MUtilitiesTest_VS2017 + 8.1 + MUtilitiesTest + + + + Application + true + v141_xp + Unicode + + + Application + false + v141_xp + true + Unicode + + + Application + false + v141_xp + true + Unicode + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\obj\$(Platform)\$(Configuration)\$(ProjectName)\ + + + false + $(SolutionDir)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\obj\$(Platform)\$(Configuration)\$(ProjectName)\ + + + false + $(SolutionDir)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\obj\$(Platform)\$(Configuration)\$(ProjectName)\ + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;QT_GUI_LIB;QT_CORE_LIB;QT_THREAD_SUPPORT;QT_DEBUG;%(PreprocessorDefinitions) + $(SolutionDir)\include;$(QTDIR)\include;$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(SolutionDir)\..\Prerequisites\GoogleTest\include;%(AdditionalIncludeDirectories) + MultiThreadedDebugDLL + NoExtensions + + + Console + true + $(SolutionDir)\..\Prerequisites\Qt4\$(PlatformToolset)\Debug\lib;$(SolutionDir)\..\Prerequisites\GoogleTest\lib\$(PlatformToolset)\Debug;%(AdditionalLibraryDirectories) + notelemetry.obj;gtestd.lib;QtCored4.lib;QtGuid4.lib;%(AdditionalDependencies) + LinkVerboseLib + + + + + Level3 + + + Full + true + true + WIN32;NDEBUG;_CONSOLE;QT_GUI_LIB;QT_CORE_LIB;QT_THREAD_SUPPORT;QT_NO_DEBUG;%(PreprocessorDefinitions) + $(SolutionDir)\include;$(QTDIR)\include;$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(SolutionDir)\..\Prerequisites\GoogleTest\include;%(AdditionalIncludeDirectories) + MultiThreadedDLL + NoExtensions + false + AnySuitable + Speed + true + + + Console + true + true + true + $(SolutionDir)\..\Prerequisites\Qt4\$(PlatformToolset)\Shared\lib;$(SolutionDir)\..\Prerequisites\GoogleTest\lib\$(PlatformToolset)\Shared;%(AdditionalLibraryDirectories) + notelemetry.obj;gtest.lib;QtCore4.lib;QtGui4.lib;%(AdditionalDependencies) + LinkVerboseLib + + + + + Level3 + + + Full + true + true + WIN32;NDEBUG;_CONSOLE;MUTILS_STATIC_LIB;QT_GUI_LIB;QT_CORE_LIB;QT_THREAD_SUPPORT;QT_NODLL;QT_NO_DEBUG;%(PreprocessorDefinitions) + $(SolutionDir)\include;$(QTDIR)\include;$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(SolutionDir)\..\Prerequisites\GoogleTest\include;%(AdditionalIncludeDirectories) + MultiThreaded + NoExtensions + false + AnySuitable + Speed + true + + + Console + true + true + true + $(SolutionDir)\..\Prerequisites\Qt4\$(PlatformToolset)\Static\lib;$(SolutionDir)\..\Prerequisites\GoogleTest\lib\$(PlatformToolset)\Static;%(AdditionalLibraryDirectories) + notelemetry.obj;gtest.lib;QtCore.lib;QtGui.lib;Ws2_32.lib;Winmm.lib;Imm32.lib;PowrProf.lib;Version.lib;Psapi.lib;Sensapi.lib;%(AdditionalDependencies) + LinkVerboseLib + + + + + + \ No newline at end of file diff --git a/test/MUtilitiesTest_VS2017.vcxproj.filters b/test/MUtilitiesTest_VS2017.vcxproj.filters new file mode 100644 index 0000000..297923c --- /dev/null +++ b/test/MUtilitiesTest_VS2017.vcxproj.filters @@ -0,0 +1,36 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Header Files + + + \ No newline at end of file diff --git a/test/src/OSTest.cpp b/test/src/OSTest.cpp new file mode 100644 index 0000000..e1a72be --- /dev/null +++ b/test/src/OSTest.cpp @@ -0,0 +1,113 @@ +/////////////////////////////////////////////////////////////////////////////// +// MuldeR's Utilities for Qt +// Copyright (C) 2004-2019 LoRd_MuldeR +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +// +// http://www.gnu.org/licenses/lgpl-2.1.txt +////////////////////////////////////////////////////////////////////////////////// + +#include "MUtilsTest.h" + +//MUtils +#include + +//Qt +#include +#include + +//Win32 +#ifdef _WIN32 +#define WIN32_LEAN_AND_MEAN 1 +#include +#endif + +//=========================================================================== +// TESTBED CLASS +//=========================================================================== + +class OSTest : public Testbed +{ +protected: + virtual void SetUp() + { + } + + virtual void TearDown() + { + } +}; + +//=========================================================================== +// TEST METHODS +//=========================================================================== + + +static QString expandEnvVars(const wchar_t *text) +{ +#ifdef _WINDOWS_ + const DWORD size = ExpandEnvironmentStringsW(text, NULL, 0); + QVector buffer(size + 1); + const DWORD result = ExpandEnvironmentStringsW(text, buffer.data(), buffer.size()); + if ((result > 0U) || (result <= size)) + { + return MUTILS_QSTR(buffer.data()); + } + return QString(); +#else + #error "Function expandEnvVars() not implemented!" +#endif +} + +//----------------------------------------------------------------- +// KnownFolder +//----------------------------------------------------------------- + +#define TEST_KNOWN_FOLDER(X,Y) do \ +{ \ + const QString path = MUtils::OS::known_folder((MUtils::OS::##X)); \ + /*_putws(MUTILS_WCHR(path));*/ \ + ASSERT_FALSE(path.isEmpty()); \ + const QString expected = QDir::fromNativeSeparators(expandEnvVars((Y))); \ + ASSERT_STRCASEEQ(MUTILS_UTF8(path), MUTILS_UTF8(expected)); \ +} \ +while(0) + +TEST_F(OSTest, KnownFolder01) { TEST_KNOWN_FOLDER(FOLDER_PROFILE_USER, L"%USERPROFILE%"); } +TEST_F(OSTest, KnownFolder02) { TEST_KNOWN_FOLDER(FOLDER_PROFILE_PUBL, L"%PUBLIC%"); } +TEST_F(OSTest, KnownFolder03) { TEST_KNOWN_FOLDER(FOLDER_APPDATA_ROAM, L"%APPDATA%"); } +TEST_F(OSTest, KnownFolder04) { TEST_KNOWN_FOLDER(FOLDER_APPDATA_LOCA, L"%LOCALAPPDATA%"); } +TEST_F(OSTest, KnownFolder05) { TEST_KNOWN_FOLDER(FOLDER_DOCS_USER, L"%USERPROFILE%/Documents"); } +TEST_F(OSTest, KnownFolder06) { TEST_KNOWN_FOLDER(FOLDER_DOCS_PUBL, L"%PUBLIC%/Documents"); } +TEST_F(OSTest, KnownFolder07) { TEST_KNOWN_FOLDER(FOLDER_DESKTOP_USER, L"%USERPROFILE%/Desktop"); } +TEST_F(OSTest, KnownFolder08) { TEST_KNOWN_FOLDER(FOLDER_DESKTOP_PUBL, L"%PUBLIC%/Desktop"); } +TEST_F(OSTest, KnownFolder09) { TEST_KNOWN_FOLDER(FOLDER_PICTURES_USER, L"%USERPROFILE%/Pictures"); } +TEST_F(OSTest, KnownFolder10) { TEST_KNOWN_FOLDER(FOLDER_PICTURES_PUBL, L"%PUBLIC%/Pictures"); } +TEST_F(OSTest, KnownFolder11) { TEST_KNOWN_FOLDER(FOLDER_MUSIC_USER, L"%USERPROFILE%/Music"); } +TEST_F(OSTest, KnownFolder12) { TEST_KNOWN_FOLDER(FOLDER_MUSIC_PUBL, L"%PUBLIC%/Music"); } +TEST_F(OSTest, KnownFolder13) { TEST_KNOWN_FOLDER(FOLDER_VIDEO_USER, L"%USERPROFILE%/Videos"); } +TEST_F(OSTest, KnownFolder14) { TEST_KNOWN_FOLDER(FOLDER_VIDEO_PUBL, L"%PUBLIC%/Videos"); } +#ifdef _WIN64 +TEST_F(OSTest, KnownFolder15) { TEST_KNOWN_FOLDER(FOLDER_PROGRAMS_DEF, L"%ProgramFiles%"); } +TEST_F(OSTest, KnownFolder17) { TEST_KNOWN_FOLDER(FOLDER_PROGRAMS_X64, L"%ProgramW6432%"); } +#else +TEST_F(OSTest, KnownFolder15) { TEST_KNOWN_FOLDER(FOLDER_PROGRAMS_DEF, L"%ProgramFiles(x86)%"); } +#endif +TEST_F(OSTest, KnownFolder16) { TEST_KNOWN_FOLDER(FOLDER_PROGRAMS_X86, L"%ProgramFiles(x86)%"); } +TEST_F(OSTest, KnownFolder18) { TEST_KNOWN_FOLDER(FOLDER_SYSROOT, L"%SystemRoot%"); } +TEST_F(OSTest, KnownFolder19) { TEST_KNOWN_FOLDER(FOLDER_SYSTEM_DEF, L"%SystemRoot%/System32"); } +TEST_F(OSTest, KnownFolder20) { TEST_KNOWN_FOLDER(FOLDER_SYSTEM_X86, L"%SystemRoot%/SysWOW64"); } + +#undef TEST_KNOWN_FOLDER