24 #include "testgamedemo.h"
27 #include "tests/asserts.h"
35 static GameDemo mkdemometa(QString author =
"Player", QString game =
"Game",
36 QDateTime time = QDateTime::fromMSecsSinceEpoch(0, Qt::UTC),
37 QString demopath =
"demo.lmp",
38 QString iwad =
"freedoom.wad", QList<PWad> wads = {})
50 bool TestGameDemoExportedName::executeTest()
52 auto withAuthor = [](QString name)
54 return QString(
"%1_Game_1970-01-01T000000Z.lmp").arg(name);
57 auto withGame = [](QString name)
59 return QString(
"Player_%1_1970-01-01T000000Z.lmp").arg(name);
64 T_ASSERT_EQUAL(
"Player_Game_1970-01-01T000000Z.lmp",
65 mkdemometa(
"Player",
"Game").exportedName());
68 T_ASSERT_EQUAL(
"Player_Game_0055-06-11T133700Z.lmp",
69 mkdemometa(
"Player",
"Game",
70 QDateTime(QDate(55, 6, 11), QTime(13, 37), Qt::UTC)).exportedName());
73 T_ASSERT_EQUAL(
"Player_Doom_2024-02-01T113721Z.lmp",
74 mkdemometa(
"Player",
"Doom",
75 QDateTime(QDate(2024, 2, 1), QTime(13, 37, 21), Qt::OffsetFromUTC, 2 * 60 * 60))
79 T_ASSERT_EQUAL(
"unknownplayer_unknowngame_1970-01-01T000000Z.lmp",
80 mkdemometa(
"",
"").exportedName());
83 T_ASSERT_EQUAL(
"unknownplayer_unknowngame_unknowntime.lmp",
84 mkdemometa(
"",
"", QDateTime()).exportedName());
88 T_ASSERT_EQUAL(withAuthor(
""), mkdemometa(
"/").exportedName());
89 T_ASSERT_EQUAL(withAuthor(
""), mkdemometa(
"\\").exportedName());
90 T_ASSERT_EQUAL(withAuthor(
""), mkdemometa(
".").exportedName());
91 T_ASSERT_EQUAL(withAuthor(
""), mkdemometa(
"/./...").exportedName());
92 T_ASSERT_EQUAL(withAuthor(
"mynameisleethx"), mkdemometa(
"$my:name+is!leet#h.x").exportedName());
93 T_ASSERT_EQUAL(withAuthor(
"CLANValid-1337"), mkdemometa(
"_CLAN_Valid-1337").exportedName());
94 T_ASSERT_EQUAL(withAuthor(
"CanIhazspace"), mkdemometa(
"Can I haz space").exportedName());
97 QString longname =
"IconOfDoomseeker";
98 while (longname.size() < GameDemo::MAX_AUTHOR_FILENAME_LEN + 1)
100 QString shortenedName = longname.left(GameDemo::MAX_AUTHOR_FILENAME_LEN);
101 T_ASSERT_EQUAL(withAuthor(shortenedName), mkdemometa(longname).exportedName());
105 T_ASSERT_EQUAL(withGame(
""), mkdemometa(
"Player",
"/").exportedName());
106 T_ASSERT_EQUAL(withGame(
""), mkdemometa(
"Player",
"\\").exportedName());
107 T_ASSERT_EQUAL(withGame(
""), mkdemometa(
"Player",
".").exportedName());
108 T_ASSERT_EQUAL(withGame(
""), mkdemometa(
"Player",
"/./...").exportedName());
109 T_ASSERT_EQUAL(withGame(
""), mkdemometa(
"Player",
" ").exportedName());
110 T_ASSERT_EQUAL(withGame(
"mynameisleethx"), mkdemometa(
"Player",
"$my:name+is!leet#h.x").exportedName());
111 T_ASSERT_EQUAL(withGame(
"CLANValid-1337"), mkdemometa(
"Player",
"_CLAN_Valid-1337").exportedName());
112 T_ASSERT_EQUAL(withGame(
"CanIhazspace"), mkdemometa(
"Player",
"Can I haz space").exportedName());
117 bool TestGameDemoImprintPath::executeTest()
119 auto imprint = [](QString path)
127 GameDemo demo = imprint(
"Emag_15.12.1997_15.16.17.lmp");
128 T_ASSERT_EQUAL(
"Emag", demo.
game);
129 T_ASSERT_DATETIME_EQUAL(QDateTime(QDate(1997, 12, 15), QTime(15, 16, 17)), demo.
time);
130 T_ASSERT_EQUAL(
"", demo.
author);
131 T_ASSERT_EQUAL(
"", demo.
iwad);
132 T_ASSERT_ISEMPTY(demo.
wads);
136 GameDemo demo = imprint(
"Emag_15.12.1997_15.16.17_freedoom.wad_av.wad_zvox.wad.lmp");
137 T_ASSERT_EQUAL(
"Emag", demo.
game);
138 T_ASSERT_DATETIME_EQUAL(QDateTime(QDate(1997, 12, 15), QTime(15, 16, 17)), demo.
time);
139 T_ASSERT_EQUAL(
"", demo.
author);
140 T_ASSERT_EQUAL(
"freedoom.wad", demo.
iwad);
141 T_ASSERT_SIZE(2, demo.
wads);
142 T_ASSERT_EQUAL(
"av.wad", demo.
wads[0].name());
143 T_ASSERT_FALSE(demo.
wads[0].isOptional());
144 T_ASSERT_EQUAL(
"zvox.wad", demo.
wads[1].name());
145 T_ASSERT_FALSE(demo.
wads[1].isOptional());
149 GameDemo demo = imprint(
"Emag_15.12.1997_15.16.17_free__doom.wad.lmp");
150 T_ASSERT_EQUAL(
"free_doom.wad", demo.
iwad);
154 GameDemo demo = imprint(
"Lepray/2023/Emag_1997-12-15T151617Z.lmp");
155 T_ASSERT_EQUAL(
"Emag", demo.
game);
156 T_ASSERT_DATETIME_EQUAL(QDateTime(QDate(1997, 12, 15), QTime(15, 16, 17), Qt::UTC), demo.
time);
158 T_ASSERT_EQUAL(
"Lepray", demo.
author);
159 T_ASSERT_EQUAL(
"", demo.
iwad);
160 T_ASSERT_ISEMPTY(demo.
wads);
164 GameDemo demo = imprint(
"Lepray_Emag_1997-12-15T151617Z.lmp");
165 T_ASSERT_EQUAL(
"Emag", demo.
game);
166 T_ASSERT_DATETIME_EQUAL(QDateTime(QDate(1997, 12, 15), QTime(15, 16, 17), Qt::UTC), demo.
time);
168 T_ASSERT_EQUAL(
"Lepray", demo.
author);
169 T_ASSERT_EQUAL(
"", demo.
iwad);
170 T_ASSERT_ISEMPTY(demo.
wads);
176 GameDemo demo = imprint(
"_1997-12-15T151617Z.lmp");
177 T_ASSERT_EQUAL(
"", demo.
game);
178 T_ASSERT_DATETIME_EQUAL(QDateTime(QDate(1997, 12, 15), QTime(15, 16, 17), Qt::UTC), demo.
time);
180 T_ASSERT_EQUAL(
"", demo.
author);
181 T_ASSERT_EQUAL(
"", demo.
iwad);
182 T_ASSERT_ISEMPTY(demo.
wads);
186 GameDemo demo = imprint(
"1997/Emag_1997-12-15T151617Z.lmp");
187 T_ASSERT_EQUAL(
"Emag", demo.
game);
188 T_ASSERT_DATETIME_EQUAL(QDateTime(QDate(1997, 12, 15), QTime(15, 16, 17), Qt::UTC), demo.
time);
190 T_ASSERT_EQUAL(
"", demo.
author);
191 T_ASSERT_EQUAL(
"", demo.
iwad);
192 T_ASSERT_ISEMPTY(demo.
wads);
196 GameDemo demo = imprint(
"Emga_1997-12-15T151617Z.lmp");
197 T_ASSERT_EQUAL(
"Emga", demo.
game);
198 T_ASSERT_DATETIME_EQUAL(QDateTime(QDate(1997, 12, 15), QTime(15, 16, 17), Qt::UTC), demo.
time);
200 T_ASSERT_EQUAL(
"", demo.
author);
201 T_ASSERT_EQUAL(
"", demo.
iwad);
202 T_ASSERT_ISEMPTY(demo.
wads);
207 GameDemo demo = imprint(
"watermelon.lmp");
208 T_ASSERT_EQUAL(
"", demo.
game);
209 T_ASSERT_FALSE(demo.
time.isValid());
210 T_ASSERT_EQUAL(
"", demo.
author);
211 T_ASSERT_EQUAL(
"", demo.
iwad);
212 T_ASSERT_ISEMPTY(demo.
wads);
218 bool TestGameDemoManagedName::executeTest()
220 auto withAuthor = [](QString name)
222 return QString(
"%1/1970/Game_1970-01-01T000000Z.lmp").arg(name);
225 auto withGame = [](QString name)
227 return QString(
"Player/1970/%1_1970-01-01T000000Z.lmp").arg(name);
232 T_ASSERT_EQUAL(
"Player/1970/Game_1970-01-01T000000Z.lmp",
233 mkdemometa(
"Player",
"Game").managedName());
236 T_ASSERT_EQUAL(
"Player/0055/Game_0055-06-11T133700Z.lmp",
237 mkdemometa(
"Player",
"Game",
238 QDateTime(QDate(55, 6, 11), QTime(13, 37), Qt::UTC)).managedName());
241 T_ASSERT_EQUAL(
"Player/2024/Doom_2024-02-01T113721Z.lmp",
242 mkdemometa(
"Player",
"Doom",
243 QDateTime(QDate(2024, 2, 1), QTime(13, 37, 21), Qt::OffsetFromUTC, 2 * 60 * 60))
247 T_ASSERT_EQUAL(
"_/1970/_1970-01-01T000000Z.lmp",
248 mkdemometa(
"",
"").managedName());
251 T_ASSERT_EQUAL(
"_/_/_unknown.lmp",
252 mkdemometa(
"",
"", QDateTime()).managedName());
256 T_ASSERT_EQUAL(withAuthor(
"_"), mkdemometa(
"/").managedName());
257 T_ASSERT_EQUAL(withAuthor(
"_"), mkdemometa(
"\\").managedName());
258 T_ASSERT_EQUAL(withAuthor(
"_"), mkdemometa(
".").managedName());
259 T_ASSERT_EQUAL(withAuthor(
"_"), mkdemometa(
"/./...").managedName());
260 T_ASSERT_EQUAL(withAuthor(
"_"), mkdemometa(
" ").managedName());
261 T_ASSERT_EQUAL(withAuthor(
"mynameisleethx"), mkdemometa(
"$my:name+is!leet#h.x").managedName());
262 T_ASSERT_EQUAL(withAuthor(
"CLANValid-1337"), mkdemometa(
"_CLAN_Valid-1337").managedName());
263 T_ASSERT_EQUAL(withAuthor(
"CanIhazspace"), mkdemometa(
"Can I haz space").managedName());
266 QString longname =
"IconOfDoomseeker";
267 while (longname.size() < GameDemo::MAX_AUTHOR_FILENAME_LEN + 1)
268 longname += longname;
269 QString shortenedName = longname.left(GameDemo::MAX_AUTHOR_FILENAME_LEN);
270 T_ASSERT_EQUAL(withAuthor(shortenedName), mkdemometa(longname).managedName());
274 T_ASSERT_EQUAL(withGame(
""), mkdemometa(
"Player",
"/").managedName());
275 T_ASSERT_EQUAL(withGame(
""), mkdemometa(
"Player",
"\\").managedName());
276 T_ASSERT_EQUAL(withGame(
""), mkdemometa(
"Player",
".").managedName());
277 T_ASSERT_EQUAL(withGame(
""), mkdemometa(
"Player",
"/./...").managedName());
278 T_ASSERT_EQUAL(withGame(
""), mkdemometa(
"Player",
" ").managedName());
279 T_ASSERT_EQUAL(withGame(
"mynameisleethx"), mkdemometa(
"Player",
"$my:name+is!leet#h.x").managedName());
280 T_ASSERT_EQUAL(withGame(
"CLANValid-1337"), mkdemometa(
"Player",
"_CLAN_Valid-1337").managedName());