OSDN Git Service

Updated copyright year.
[mutilities/MUtilities.git] / test / src / OSTest.cpp
1 ///////////////////////////////////////////////////////////////////////////////
2 // MuldeR's Utilities for Qt
3 // Copyright (C) 2004-2023 LoRd_MuldeR <MuldeR2@GMX.de>
4 //
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.
9 //
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.
14 //
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
18 //
19 // http://www.gnu.org/licenses/lgpl-2.1.txt
20 //////////////////////////////////////////////////////////////////////////////////
21
22 #include "MUtilsTest.h"
23
24 //MUtils
25 #include <MUtils/OSSupport.h>
26
27 //Qt
28 #include <QSet>
29 #include <QVector>
30
31 //Win32
32 #ifdef _WIN32
33 #define WIN32_LEAN_AND_MEAN 1
34 #include <Windows.h>
35 #endif
36
37 //===========================================================================
38 // TESTBED CLASS
39 //===========================================================================
40
41 class OSTest : public Testbed
42 {
43 protected:
44         virtual void SetUp()
45         {
46         }
47
48         virtual void TearDown()
49         {
50         }
51 };
52
53 //===========================================================================
54 // TEST METHODS
55 //===========================================================================
56
57
58 static QString expandEnvVars(const wchar_t *text)
59 {
60 #ifdef _WINDOWS_
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))
65         {
66                 return MUTILS_QSTR(buffer.data());
67         }
68         return QString();
69 #else
70         #error "Function expandEnvVars() not implemented!"
71 #endif
72 }
73
74 //-----------------------------------------------------------------
75 // KnownFolder
76 //-----------------------------------------------------------------
77
78 #define TEST_KNOWN_FOLDER(X,Y) do \
79 { \
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)); \
85 } \
86 while(0)
87
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");         }
102 #ifdef _WIN64
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%");          }
105 #else
106 TEST_F(OSTest, KnownFolder15) { TEST_KNOWN_FOLDER(FOLDER_PROGRAMS_DEF,  L"%ProgramFiles(x86)%");     }
107 #endif
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");   }
112
113 #undef TEST_KNOWN_FOLDER