summaryrefslogtreecommitdiffstats
path: root/xbmc/utils/test/TestDatabaseUtils.cpp
diff options
context:
space:
mode:
authormanuel <manuel@mausz.at>2020-10-19 00:52:24 +0200
committermanuel <manuel@mausz.at>2020-10-19 00:52:24 +0200
commitbe933ef2241d79558f91796cc5b3a161f72ebf9c (patch)
treefe3ab2f130e20c99001f2d7a81d610c78c96a3f4 /xbmc/utils/test/TestDatabaseUtils.cpp
parent5f8335c1e49ce108ef3481863833c98efa00411b (diff)
downloadkodi-pvr-build-be933ef2241d79558f91796cc5b3a161f72ebf9c.tar.gz
kodi-pvr-build-be933ef2241d79558f91796cc5b3a161f72ebf9c.tar.bz2
kodi-pvr-build-be933ef2241d79558f91796cc5b3a161f72ebf9c.zip
sync with upstream
Diffstat (limited to 'xbmc/utils/test/TestDatabaseUtils.cpp')
-rw-r--r--xbmc/utils/test/TestDatabaseUtils.cpp1376
1 files changed, 1376 insertions, 0 deletions
diff --git a/xbmc/utils/test/TestDatabaseUtils.cpp b/xbmc/utils/test/TestDatabaseUtils.cpp
new file mode 100644
index 0000000..41e20bd
--- /dev/null
+++ b/xbmc/utils/test/TestDatabaseUtils.cpp
@@ -0,0 +1,1376 @@
1/*
2 * Copyright (C) 2005-2018 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
7 */
8
9#include "dbwrappers/qry_dat.h"
10#include "music/MusicDatabase.h"
11#include "utils/DatabaseUtils.h"
12#include "utils/StringUtils.h"
13#include "utils/Variant.h"
14#include "video/VideoDatabase.h"
15
16#include <gtest/gtest.h>
17
18class TestDatabaseUtilsHelper
19{
20public:
21 TestDatabaseUtilsHelper()
22 {
23 album_idAlbum = CMusicDatabase::album_idAlbum;
24 album_strAlbum = CMusicDatabase::album_strAlbum;
25 album_strArtists = CMusicDatabase::album_strArtists;
26 album_strGenres = CMusicDatabase::album_strGenres;
27 album_strMoods = CMusicDatabase::album_strMoods;
28 album_strReleaseDate = CMusicDatabase::album_strReleaseDate;
29 album_strOrigReleaseDate = CMusicDatabase::album_strOrigReleaseDate;
30 album_strStyles = CMusicDatabase::album_strStyles;
31 album_strThemes = CMusicDatabase::album_strThemes;
32 album_strReview = CMusicDatabase::album_strReview;
33 album_strLabel = CMusicDatabase::album_strLabel;
34 album_strType = CMusicDatabase::album_strType;
35 album_fRating = CMusicDatabase::album_fRating;
36 album_iVotes = CMusicDatabase::album_iVotes;
37 album_iUserrating = CMusicDatabase::album_iUserrating;
38 album_dtDateAdded = CMusicDatabase::album_dateAdded;
39
40 song_idSong = CMusicDatabase::song_idSong;
41 song_strTitle = CMusicDatabase::song_strTitle;
42 song_iTrack = CMusicDatabase::song_iTrack;
43 song_iDuration = CMusicDatabase::song_iDuration;
44 song_strReleaseDate = CMusicDatabase::song_strReleaseDate;
45 song_strOrigReleaseDate = CMusicDatabase::song_strOrigReleaseDate;
46 song_strFileName = CMusicDatabase::song_strFileName;
47 song_iTimesPlayed = CMusicDatabase::song_iTimesPlayed;
48 song_iStartOffset = CMusicDatabase::song_iStartOffset;
49 song_iEndOffset = CMusicDatabase::song_iEndOffset;
50 song_lastplayed = CMusicDatabase::song_lastplayed;
51 song_rating = CMusicDatabase::song_rating;
52 song_votes = CMusicDatabase::song_votes;
53 song_userrating = CMusicDatabase::song_userrating;
54 song_comment = CMusicDatabase::song_comment;
55 song_strAlbum = CMusicDatabase::song_strAlbum;
56 song_strPath = CMusicDatabase::song_strPath;
57 song_strGenres = CMusicDatabase::song_strGenres;
58 song_strArtists = CMusicDatabase::song_strArtists;
59 }
60
61 int album_idAlbum;
62 int album_strAlbum;
63 int album_strArtists;
64 int album_strGenres;
65 int album_strMoods;
66 int album_strReleaseDate;
67 int album_strOrigReleaseDate;
68 int album_strStyles;
69 int album_strThemes;
70 int album_strReview;
71 int album_strLabel;
72 int album_strType;
73 int album_fRating;
74 int album_iVotes;
75 int album_iUserrating;
76 int album_dtDateAdded;
77
78 int song_idSong;
79 int song_strTitle;
80 int song_iTrack;
81 int song_iDuration;
82 int song_strReleaseDate;
83 int song_strOrigReleaseDate;
84 int song_strFileName;
85 int song_iTimesPlayed;
86 int song_iStartOffset;
87 int song_iEndOffset;
88 int song_lastplayed;
89 int song_rating;
90 int song_votes;
91 int song_userrating;
92 int song_comment;
93 int song_strAlbum;
94 int song_strPath;
95 int song_strGenres;
96 int song_strArtists;
97};
98
99TEST(TestDatabaseUtils, GetField_None)
100{
101 std::string refstr, varstr;
102
103 refstr = "";
104 varstr = DatabaseUtils::GetField(FieldNone, MediaTypeNone,
105 DatabaseQueryPartSelect);
106 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
107
108 varstr = DatabaseUtils::GetField(FieldNone, MediaTypeMovie,
109 DatabaseQueryPartSelect);
110 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
111}
112
113TEST(TestDatabaseUtils, GetField_MediaTypeAlbum)
114{
115 std::string refstr, varstr;
116
117 refstr = "albumview.idAlbum";
118 varstr = DatabaseUtils::GetField(FieldId, MediaTypeAlbum,
119 DatabaseQueryPartSelect);
120 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
121
122 refstr = "albumview.strAlbum";
123 varstr = DatabaseUtils::GetField(FieldAlbum, MediaTypeAlbum,
124 DatabaseQueryPartSelect);
125 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
126
127 refstr = "albumview.strArtists";
128 varstr = DatabaseUtils::GetField(FieldArtist, MediaTypeAlbum,
129 DatabaseQueryPartSelect);
130 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
131
132 refstr = "albumview.strArtists";
133 varstr = DatabaseUtils::GetField(FieldAlbumArtist, MediaTypeAlbum,
134 DatabaseQueryPartSelect);
135 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
136
137 refstr = "albumview.strGenres";
138 varstr = DatabaseUtils::GetField(FieldGenre, MediaTypeAlbum,
139 DatabaseQueryPartSelect);
140 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
141
142 refstr = "albumview.strReleaseDate";
143 varstr = DatabaseUtils::GetField(FieldYear, MediaTypeAlbum,
144 DatabaseQueryPartSelect);
145 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
146
147refstr = "albumview.strOrigReleaseDate";
148 varstr = DatabaseUtils::GetField(FieldOrigYear, MediaTypeAlbum,
149 DatabaseQueryPartSelect);
150 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
151
152 refstr = "albumview.strMoods";
153 varstr = DatabaseUtils::GetField(FieldMoods, MediaTypeAlbum,
154 DatabaseQueryPartSelect);
155 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
156
157 refstr = "albumview.strStyles";
158 varstr = DatabaseUtils::GetField(FieldStyles, MediaTypeAlbum,
159 DatabaseQueryPartSelect);
160 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
161
162 refstr = "albumview.strThemes";
163 varstr = DatabaseUtils::GetField(FieldThemes, MediaTypeAlbum,
164 DatabaseQueryPartSelect);
165 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
166
167 refstr = "albumview.strReview";
168 varstr = DatabaseUtils::GetField(FieldReview, MediaTypeAlbum,
169 DatabaseQueryPartSelect);
170 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
171
172 refstr = "albumview.strLabel";
173 varstr = DatabaseUtils::GetField(FieldMusicLabel, MediaTypeAlbum,
174 DatabaseQueryPartSelect);
175 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
176
177 refstr = "albumview.strType";
178 varstr = DatabaseUtils::GetField(FieldAlbumType, MediaTypeAlbum,
179 DatabaseQueryPartSelect);
180 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
181
182 refstr = "albumview.fRating";
183 varstr = DatabaseUtils::GetField(FieldRating, MediaTypeAlbum,
184 DatabaseQueryPartSelect);
185 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
186
187 refstr = "albumview.iVotes";
188 varstr = DatabaseUtils::GetField(FieldVotes, MediaTypeAlbum,
189 DatabaseQueryPartSelect);
190 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
191
192 refstr = "albumview.iUserrating";
193 varstr = DatabaseUtils::GetField(FieldUserRating, MediaTypeAlbum,
194 DatabaseQueryPartSelect);
195 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
196
197 refstr = "albumview.dateAdded";
198 varstr = DatabaseUtils::GetField(FieldDateAdded, MediaTypeAlbum,
199 DatabaseQueryPartSelect);
200 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
201
202 refstr = "";
203 varstr = DatabaseUtils::GetField(FieldNone, MediaTypeAlbum,
204 DatabaseQueryPartSelect);
205 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
206
207 refstr = "albumview.strAlbum";
208 varstr = DatabaseUtils::GetField(FieldAlbum, MediaTypeAlbum,
209 DatabaseQueryPartWhere);
210 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
211
212 varstr = DatabaseUtils::GetField(FieldAlbum, MediaTypeAlbum,
213 DatabaseQueryPartOrderBy);
214 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
215}
216
217TEST(TestDatabaseUtils, GetField_MediaTypeSong)
218{
219 std::string refstr, varstr;
220
221 refstr = "songview.idSong";
222 varstr = DatabaseUtils::GetField(FieldId, MediaTypeSong,
223 DatabaseQueryPartSelect);
224 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
225
226 refstr = "songview.strTitle";
227 varstr = DatabaseUtils::GetField(FieldTitle, MediaTypeSong,
228 DatabaseQueryPartSelect);
229 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
230
231 refstr = "songview.iTrack";
232 varstr = DatabaseUtils::GetField(FieldTrackNumber, MediaTypeSong,
233 DatabaseQueryPartSelect);
234 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
235
236 refstr = "songview.iDuration";
237 varstr = DatabaseUtils::GetField(FieldTime, MediaTypeSong,
238 DatabaseQueryPartSelect);
239 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
240
241 refstr = "songview.strFilename";
242 varstr = DatabaseUtils::GetField(FieldFilename, MediaTypeSong,
243 DatabaseQueryPartSelect);
244 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
245
246 refstr = "songview.iTimesPlayed";
247 varstr = DatabaseUtils::GetField(FieldPlaycount, MediaTypeSong,
248 DatabaseQueryPartSelect);
249 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
250
251 refstr = "songview.iStartOffset";
252 varstr = DatabaseUtils::GetField(FieldStartOffset, MediaTypeSong,
253 DatabaseQueryPartSelect);
254 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
255
256 refstr = "songview.iEndOffset";
257 varstr = DatabaseUtils::GetField(FieldEndOffset, MediaTypeSong,
258 DatabaseQueryPartSelect);
259 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
260
261 refstr = "songview.lastPlayed";
262 varstr = DatabaseUtils::GetField(FieldLastPlayed, MediaTypeSong,
263 DatabaseQueryPartSelect);
264 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
265
266 refstr = "songview.rating";
267 varstr = DatabaseUtils::GetField(FieldRating, MediaTypeSong,
268 DatabaseQueryPartSelect);
269 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
270
271 refstr = "songview.votes";
272 varstr = DatabaseUtils::GetField(FieldVotes, MediaTypeSong,
273 DatabaseQueryPartSelect);
274 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
275
276 refstr = "songview.userrating";
277 varstr = DatabaseUtils::GetField(FieldUserRating, MediaTypeSong,
278 DatabaseQueryPartSelect);
279 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
280
281 refstr = "songview.comment";
282 varstr = DatabaseUtils::GetField(FieldComment, MediaTypeSong,
283 DatabaseQueryPartSelect);
284 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
285
286 refstr = "songview.strReleaseDate";
287 varstr = DatabaseUtils::GetField(FieldYear, MediaTypeSong,
288 DatabaseQueryPartSelect);
289 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
290
291 refstr = "songview.strOrigReleaseDate";
292 varstr = DatabaseUtils::GetField(FieldOrigYear, MediaTypeSong,
293 DatabaseQueryPartSelect);
294 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
295
296 refstr = "songview.strAlbum";
297 varstr = DatabaseUtils::GetField(FieldAlbum, MediaTypeSong,
298 DatabaseQueryPartSelect);
299 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
300
301 refstr = "songview.strPath";
302 varstr = DatabaseUtils::GetField(FieldPath, MediaTypeSong,
303 DatabaseQueryPartSelect);
304 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
305
306 refstr = "songview.strArtists";
307 varstr = DatabaseUtils::GetField(FieldArtist, MediaTypeSong,
308 DatabaseQueryPartSelect);
309 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
310
311 refstr = "songview.strArtists";
312 varstr = DatabaseUtils::GetField(FieldAlbumArtist, MediaTypeSong,
313 DatabaseQueryPartSelect);
314 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
315
316 refstr = "songview.strGenres";
317 varstr = DatabaseUtils::GetField(FieldGenre, MediaTypeSong,
318 DatabaseQueryPartSelect);
319 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
320
321 refstr = "songview.dateAdded";
322 varstr = DatabaseUtils::GetField(FieldDateAdded, MediaTypeSong,
323 DatabaseQueryPartSelect);
324 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
325
326 refstr = "songview.strPath";
327 varstr = DatabaseUtils::GetField(FieldPath, MediaTypeSong,
328 DatabaseQueryPartWhere);
329 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
330
331 varstr = DatabaseUtils::GetField(FieldPath, MediaTypeSong,
332 DatabaseQueryPartOrderBy);
333 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
334}
335
336TEST(TestDatabaseUtils, GetField_MediaTypeMusicVideo)
337{
338 std::string refstr, varstr;
339
340 refstr = "musicvideo_view.idMVideo";
341 varstr = DatabaseUtils::GetField(FieldId, MediaTypeMusicVideo,
342 DatabaseQueryPartSelect);
343 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
344
345 refstr = StringUtils::Format("musicvideo_view.c%02d",VIDEODB_ID_MUSICVIDEO_TITLE);
346 varstr = DatabaseUtils::GetField(FieldTitle, MediaTypeMusicVideo,
347 DatabaseQueryPartSelect);
348 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
349
350 refstr = StringUtils::Format("musicvideo_view.c%02d",VIDEODB_ID_MUSICVIDEO_RUNTIME);
351 varstr = DatabaseUtils::GetField(FieldTime, MediaTypeMusicVideo,
352 DatabaseQueryPartSelect);
353 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
354
355 refstr = StringUtils::Format("musicvideo_view.c%02d",VIDEODB_ID_MUSICVIDEO_DIRECTOR);
356 varstr = DatabaseUtils::GetField(FieldDirector, MediaTypeMusicVideo,
357 DatabaseQueryPartSelect);
358 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
359
360 refstr = StringUtils::Format("musicvideo_view.c%02d",VIDEODB_ID_MUSICVIDEO_STUDIOS);
361 varstr = DatabaseUtils::GetField(FieldStudio, MediaTypeMusicVideo,
362 DatabaseQueryPartSelect);
363 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
364
365 refstr = StringUtils::Format("musicvideo_view.c%02d",VIDEODB_ID_MUSICVIDEO_PLOT);
366 varstr = DatabaseUtils::GetField(FieldPlot, MediaTypeMusicVideo,
367 DatabaseQueryPartSelect);
368 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
369
370 refstr = StringUtils::Format("musicvideo_view.c%02d",VIDEODB_ID_MUSICVIDEO_ALBUM);
371 varstr = DatabaseUtils::GetField(FieldAlbum, MediaTypeMusicVideo,
372 DatabaseQueryPartSelect);
373 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
374
375 refstr = StringUtils::Format("musicvideo_view.c%02d",VIDEODB_ID_MUSICVIDEO_ARTIST);
376 varstr = DatabaseUtils::GetField(FieldArtist, MediaTypeMusicVideo,
377 DatabaseQueryPartSelect);
378 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
379
380 refstr = StringUtils::Format("musicvideo_view.c%02d",VIDEODB_ID_MUSICVIDEO_GENRE);
381 varstr = DatabaseUtils::GetField(FieldGenre, MediaTypeMusicVideo,
382 DatabaseQueryPartSelect);
383 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
384
385 refstr = StringUtils::Format("musicvideo_view.c%02d",VIDEODB_ID_MUSICVIDEO_TRACK);
386 varstr = DatabaseUtils::GetField(FieldTrackNumber, MediaTypeMusicVideo,
387 DatabaseQueryPartSelect);
388 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
389
390 refstr = "musicvideo_view.strFilename";
391 varstr = DatabaseUtils::GetField(FieldFilename, MediaTypeMusicVideo,
392 DatabaseQueryPartSelect);
393 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
394
395 refstr = "musicvideo_view.strPath";
396 varstr = DatabaseUtils::GetField(FieldPath, MediaTypeMusicVideo,
397 DatabaseQueryPartSelect);
398 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
399
400 refstr = "musicvideo_view.playCount";
401 varstr = DatabaseUtils::GetField(FieldPlaycount, MediaTypeMusicVideo,
402 DatabaseQueryPartSelect);
403 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
404
405 refstr = "musicvideo_view.lastPlayed";
406 varstr = DatabaseUtils::GetField(FieldLastPlayed, MediaTypeMusicVideo,
407 DatabaseQueryPartSelect);
408 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
409
410 refstr = "musicvideo_view.dateAdded";
411 varstr = DatabaseUtils::GetField(FieldDateAdded, MediaTypeMusicVideo,
412 DatabaseQueryPartSelect);
413 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
414
415 refstr = "";
416 varstr = DatabaseUtils::GetField(FieldVideoResolution, MediaTypeMusicVideo,
417 DatabaseQueryPartSelect);
418 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
419
420 refstr = "musicvideo_view.strPath";
421 varstr = DatabaseUtils::GetField(FieldPath, MediaTypeMusicVideo,
422 DatabaseQueryPartWhere);
423 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
424
425 refstr = "musicvideo_view.strPath";
426 varstr = DatabaseUtils::GetField(FieldPath, MediaTypeMusicVideo,
427 DatabaseQueryPartOrderBy);
428 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
429
430 refstr = "musicvideo_view.userrating";
431 varstr = DatabaseUtils::GetField(FieldUserRating, MediaTypeMusicVideo,
432 DatabaseQueryPartSelect);
433 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
434}
435
436TEST(TestDatabaseUtils, GetField_MediaTypeMovie)
437{
438 std::string refstr, varstr;
439
440 refstr = "movie_view.idMovie";
441 varstr = DatabaseUtils::GetField(FieldId, MediaTypeMovie,
442 DatabaseQueryPartSelect);
443 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
444
445 refstr = StringUtils::Format("movie_view.c%02d", VIDEODB_ID_TITLE);
446 varstr = DatabaseUtils::GetField(FieldTitle, MediaTypeMovie,
447 DatabaseQueryPartSelect);
448 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
449
450 refstr = StringUtils::Format("CASE WHEN length(movie_view.c%02d) > 0 THEN movie_view.c%02d "
451 "ELSE movie_view.c%02d END", VIDEODB_ID_SORTTITLE,
452 VIDEODB_ID_SORTTITLE, VIDEODB_ID_TITLE);
453 varstr = DatabaseUtils::GetField(FieldTitle, MediaTypeMovie,
454 DatabaseQueryPartOrderBy);
455 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
456
457 refstr = StringUtils::Format("movie_view.c%02d", VIDEODB_ID_PLOT);
458 varstr = DatabaseUtils::GetField(FieldPlot, MediaTypeMovie,
459 DatabaseQueryPartSelect);
460 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
461
462 refstr = StringUtils::Format("movie_view.c%02d", VIDEODB_ID_PLOTOUTLINE);
463 varstr = DatabaseUtils::GetField(FieldPlotOutline, MediaTypeMovie,
464 DatabaseQueryPartSelect);
465 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
466
467 refstr = StringUtils::Format("movie_view.c%02d", VIDEODB_ID_TAGLINE);
468 varstr = DatabaseUtils::GetField(FieldTagline, MediaTypeMovie,
469 DatabaseQueryPartSelect);
470 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
471
472 refstr = "movie_view.votes";
473 varstr = DatabaseUtils::GetField(FieldVotes, MediaTypeMovie,
474 DatabaseQueryPartSelect);
475 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
476
477 refstr = "movie_view.rating";
478 varstr = DatabaseUtils::GetField(FieldRating, MediaTypeMovie,
479 DatabaseQueryPartSelect);
480 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
481
482 refstr = StringUtils::Format("movie_view.c%02d", VIDEODB_ID_CREDITS);
483 varstr = DatabaseUtils::GetField(FieldWriter, MediaTypeMovie,
484 DatabaseQueryPartSelect);
485 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
486
487 refstr = StringUtils::Format("movie_view.c%02d", VIDEODB_ID_SORTTITLE);
488 varstr = DatabaseUtils::GetField(FieldSortTitle, MediaTypeMovie,
489 DatabaseQueryPartSelect);
490 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
491
492 refstr = StringUtils::Format("movie_view.c%02d", VIDEODB_ID_RUNTIME);
493 varstr = DatabaseUtils::GetField(FieldTime, MediaTypeMovie,
494 DatabaseQueryPartSelect);
495 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
496
497 refstr = StringUtils::Format("movie_view.c%02d", VIDEODB_ID_MPAA);
498 varstr = DatabaseUtils::GetField(FieldMPAA, MediaTypeMovie,
499 DatabaseQueryPartSelect);
500 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
501
502 refstr = StringUtils::Format("movie_view.c%02d", VIDEODB_ID_TOP250);
503 varstr = DatabaseUtils::GetField(FieldTop250, MediaTypeMovie,
504 DatabaseQueryPartSelect);
505 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
506
507 refstr = StringUtils::Format("movie_view.c%02d", VIDEODB_ID_GENRE);
508 varstr = DatabaseUtils::GetField(FieldGenre, MediaTypeMovie,
509 DatabaseQueryPartSelect);
510 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
511
512 refstr = StringUtils::Format("movie_view.c%02d", VIDEODB_ID_DIRECTOR);
513 varstr = DatabaseUtils::GetField(FieldDirector, MediaTypeMovie,
514 DatabaseQueryPartSelect);
515 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
516
517 refstr = StringUtils::Format("movie_view.c%02d", VIDEODB_ID_STUDIOS);
518 varstr = DatabaseUtils::GetField(FieldStudio, MediaTypeMovie,
519 DatabaseQueryPartSelect);
520 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
521
522 refstr = StringUtils::Format("movie_view.c%02d", VIDEODB_ID_TRAILER);
523 varstr = DatabaseUtils::GetField(FieldTrailer, MediaTypeMovie,
524 DatabaseQueryPartSelect);
525 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
526
527 refstr = StringUtils::Format("movie_view.c%02d", VIDEODB_ID_COUNTRY);
528 varstr = DatabaseUtils::GetField(FieldCountry, MediaTypeMovie,
529 DatabaseQueryPartSelect);
530 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
531
532 refstr = "movie_view.strFilename";
533 varstr = DatabaseUtils::GetField(FieldFilename, MediaTypeMovie,
534 DatabaseQueryPartSelect);
535 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
536
537 refstr = "movie_view.strPath";
538 varstr = DatabaseUtils::GetField(FieldPath, MediaTypeMovie,
539 DatabaseQueryPartSelect);
540 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
541
542 refstr = "movie_view.playCount";
543 varstr = DatabaseUtils::GetField(FieldPlaycount, MediaTypeMovie,
544 DatabaseQueryPartSelect);
545 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
546
547 refstr = "movie_view.lastPlayed";
548 varstr = DatabaseUtils::GetField(FieldLastPlayed, MediaTypeMovie,
549 DatabaseQueryPartSelect);
550 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
551
552 refstr = "movie_view.dateAdded";
553 varstr = DatabaseUtils::GetField(FieldDateAdded, MediaTypeMovie,
554 DatabaseQueryPartSelect);
555 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
556
557 refstr = "movie_view.userrating";
558 varstr = DatabaseUtils::GetField(FieldUserRating, MediaTypeMovie,
559 DatabaseQueryPartSelect);
560 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
561
562 refstr = "";
563 varstr = DatabaseUtils::GetField(FieldRandom, MediaTypeMovie,
564 DatabaseQueryPartSelect);
565 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
566}
567
568TEST(TestDatabaseUtils, GetField_MediaTypeTvShow)
569{
570 std::string refstr, varstr;
571
572 refstr = "tvshow_view.idShow";
573 varstr = DatabaseUtils::GetField(FieldId, MediaTypeTvShow,
574 DatabaseQueryPartSelect);
575 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
576
577 refstr = StringUtils::Format("CASE WHEN length(tvshow_view.c%02d) > 0 THEN tvshow_view.c%02d "
578 "ELSE tvshow_view.c%02d END", VIDEODB_ID_TV_SORTTITLE,
579 VIDEODB_ID_TV_SORTTITLE, VIDEODB_ID_TV_TITLE);
580 varstr = DatabaseUtils::GetField(FieldTitle, MediaTypeTvShow,
581 DatabaseQueryPartOrderBy);
582 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
583
584 refstr = StringUtils::Format("tvshow_view.c%02d", VIDEODB_ID_TV_TITLE);
585 varstr = DatabaseUtils::GetField(FieldTitle, MediaTypeTvShow,
586 DatabaseQueryPartSelect);
587 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
588
589 refstr = StringUtils::Format("tvshow_view.c%02d", VIDEODB_ID_TV_PLOT);
590 varstr = DatabaseUtils::GetField(FieldPlot, MediaTypeTvShow,
591 DatabaseQueryPartSelect);
592 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
593
594 refstr = StringUtils::Format("tvshow_view.c%02d", VIDEODB_ID_TV_STATUS);
595 varstr = DatabaseUtils::GetField(FieldTvShowStatus, MediaTypeTvShow,
596 DatabaseQueryPartSelect);
597 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
598
599 refstr = "tvshow_view.votes";
600 varstr = DatabaseUtils::GetField(FieldVotes, MediaTypeTvShow,
601 DatabaseQueryPartSelect);
602 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
603
604 refstr = "tvshow_view.rating";
605 varstr = DatabaseUtils::GetField(FieldRating, MediaTypeTvShow,
606 DatabaseQueryPartSelect);
607 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
608
609 refstr = StringUtils::Format("tvshow_view.c%02d", VIDEODB_ID_TV_PREMIERED);
610 varstr = DatabaseUtils::GetField(FieldYear, MediaTypeTvShow,
611 DatabaseQueryPartSelect);
612 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
613
614 refstr = StringUtils::Format("tvshow_view.c%02d", VIDEODB_ID_TV_GENRE);
615 varstr = DatabaseUtils::GetField(FieldGenre, MediaTypeTvShow,
616 DatabaseQueryPartSelect);
617 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
618
619 refstr = StringUtils::Format("tvshow_view.c%02d", VIDEODB_ID_TV_MPAA);
620 varstr = DatabaseUtils::GetField(FieldMPAA, MediaTypeTvShow,
621 DatabaseQueryPartSelect);
622 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
623
624 refstr = StringUtils::Format("tvshow_view.c%02d", VIDEODB_ID_TV_STUDIOS);
625 varstr = DatabaseUtils::GetField(FieldStudio, MediaTypeTvShow,
626 DatabaseQueryPartSelect);
627 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
628
629 refstr = StringUtils::Format("tvshow_view.c%02d", VIDEODB_ID_TV_SORTTITLE);
630 varstr = DatabaseUtils::GetField(FieldSortTitle, MediaTypeTvShow,
631 DatabaseQueryPartSelect);
632 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
633
634 refstr = "tvshow_view.strPath";
635 varstr = DatabaseUtils::GetField(FieldPath, MediaTypeTvShow,
636 DatabaseQueryPartSelect);
637 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
638
639 refstr = "tvshow_view.dateAdded";
640 varstr = DatabaseUtils::GetField(FieldDateAdded, MediaTypeTvShow,
641 DatabaseQueryPartSelect);
642 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
643
644 refstr = "tvshow_view.totalSeasons";
645 varstr = DatabaseUtils::GetField(FieldSeason, MediaTypeTvShow,
646 DatabaseQueryPartSelect);
647 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
648
649 refstr = "tvshow_view.totalCount";
650 varstr = DatabaseUtils::GetField(FieldNumberOfEpisodes, MediaTypeTvShow,
651 DatabaseQueryPartSelect);
652 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
653
654 refstr = "tvshow_view.watchedcount";
655 varstr = DatabaseUtils::GetField(FieldNumberOfWatchedEpisodes,
656 MediaTypeTvShow, DatabaseQueryPartSelect);
657 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
658
659 refstr = "tvshow_view.userrating";
660 varstr = DatabaseUtils::GetField(FieldUserRating, MediaTypeTvShow,
661 DatabaseQueryPartSelect);
662 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
663
664 refstr = "";
665 varstr = DatabaseUtils::GetField(FieldRandom, MediaTypeTvShow,
666 DatabaseQueryPartSelect);
667 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
668}
669
670TEST(TestDatabaseUtils, GetField_MediaTypeEpisode)
671{
672 std::string refstr, varstr;
673
674 refstr = "episode_view.idEpisode";
675 varstr = DatabaseUtils::GetField(FieldId, MediaTypeEpisode,
676 DatabaseQueryPartSelect);
677 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
678
679 refstr = StringUtils::Format("episode_view.c%02d", VIDEODB_ID_EPISODE_TITLE);
680 varstr = DatabaseUtils::GetField(FieldTitle, MediaTypeEpisode,
681 DatabaseQueryPartSelect);
682 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
683
684 refstr = StringUtils::Format("episode_view.c%02d", VIDEODB_ID_EPISODE_PLOT);
685 varstr = DatabaseUtils::GetField(FieldPlot, MediaTypeEpisode,
686 DatabaseQueryPartSelect);
687 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
688
689 refstr = "episode_view.votes";
690 varstr = DatabaseUtils::GetField(FieldVotes, MediaTypeEpisode,
691 DatabaseQueryPartSelect);
692 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
693
694 refstr = "episode_view.rating";
695 varstr = DatabaseUtils::GetField(FieldRating, MediaTypeEpisode,
696 DatabaseQueryPartSelect);
697 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
698
699 refstr = StringUtils::Format("episode_view.c%02d", VIDEODB_ID_EPISODE_CREDITS);
700 varstr = DatabaseUtils::GetField(FieldWriter, MediaTypeEpisode,
701 DatabaseQueryPartSelect);
702 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
703
704 refstr = StringUtils::Format("episode_view.c%02d", VIDEODB_ID_EPISODE_AIRED);
705 varstr = DatabaseUtils::GetField(FieldAirDate, MediaTypeEpisode,
706 DatabaseQueryPartSelect);
707 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
708
709 refstr = StringUtils::Format("episode_view.c%02d", VIDEODB_ID_EPISODE_RUNTIME);
710 varstr = DatabaseUtils::GetField(FieldTime, MediaTypeEpisode,
711 DatabaseQueryPartSelect);
712 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
713
714 refstr = StringUtils::Format("episode_view.c%02d", VIDEODB_ID_EPISODE_DIRECTOR);
715 varstr = DatabaseUtils::GetField(FieldDirector, MediaTypeEpisode,
716 DatabaseQueryPartSelect);
717 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
718
719 refstr = StringUtils::Format("episode_view.c%02d", VIDEODB_ID_EPISODE_SEASON);
720 varstr = DatabaseUtils::GetField(FieldSeason, MediaTypeEpisode,
721 DatabaseQueryPartSelect);
722 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
723
724 refstr = StringUtils::Format("episode_view.c%02d", VIDEODB_ID_EPISODE_EPISODE);
725 varstr = DatabaseUtils::GetField(FieldEpisodeNumber, MediaTypeEpisode,
726 DatabaseQueryPartSelect);
727 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
728
729 refstr = "episode_view.strFilename";
730 varstr = DatabaseUtils::GetField(FieldFilename, MediaTypeEpisode,
731 DatabaseQueryPartSelect);
732 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
733
734 refstr = "episode_view.strPath";
735 varstr = DatabaseUtils::GetField(FieldPath, MediaTypeEpisode,
736 DatabaseQueryPartSelect);
737 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
738
739 refstr = "episode_view.playCount";
740 varstr = DatabaseUtils::GetField(FieldPlaycount, MediaTypeEpisode,
741 DatabaseQueryPartSelect);
742 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
743
744 refstr = "episode_view.lastPlayed";
745 varstr = DatabaseUtils::GetField(FieldLastPlayed, MediaTypeEpisode,
746 DatabaseQueryPartSelect);
747 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
748
749 refstr = "episode_view.dateAdded";
750 varstr = DatabaseUtils::GetField(FieldDateAdded, MediaTypeEpisode,
751 DatabaseQueryPartSelect);
752 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
753
754 refstr = "episode_view.strTitle";
755 varstr = DatabaseUtils::GetField(FieldTvShowTitle, MediaTypeEpisode,
756 DatabaseQueryPartSelect);
757 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
758
759 refstr = "episode_view.premiered";
760 varstr = DatabaseUtils::GetField(FieldYear, MediaTypeEpisode,
761 DatabaseQueryPartSelect);
762 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
763
764 refstr = "episode_view.mpaa";
765 varstr = DatabaseUtils::GetField(FieldMPAA, MediaTypeEpisode,
766 DatabaseQueryPartSelect);
767 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
768
769 refstr = "episode_view.strStudio";
770 varstr = DatabaseUtils::GetField(FieldStudio, MediaTypeEpisode,
771 DatabaseQueryPartSelect);
772 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
773
774 refstr = "episode_view.userrating";
775 varstr = DatabaseUtils::GetField(FieldUserRating, MediaTypeEpisode,
776 DatabaseQueryPartSelect);
777 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
778
779 refstr = "";
780 varstr = DatabaseUtils::GetField(FieldRandom, MediaTypeEpisode,
781 DatabaseQueryPartSelect);
782 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
783}
784
785TEST(TestDatabaseUtils, GetField_FieldRandom)
786{
787 std::string refstr, varstr;
788
789 refstr = "";
790 varstr = DatabaseUtils::GetField(FieldRandom, MediaTypeEpisode,
791 DatabaseQueryPartSelect);
792 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
793
794 refstr = "";
795 varstr = DatabaseUtils::GetField(FieldRandom, MediaTypeEpisode,
796 DatabaseQueryPartWhere);
797 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
798
799 refstr = "RANDOM()";
800 varstr = DatabaseUtils::GetField(FieldRandom, MediaTypeEpisode,
801 DatabaseQueryPartOrderBy);
802 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
803}
804
805TEST(TestDatabaseUtils, GetFieldIndex_None)
806{
807 int refindex, varindex;
808
809 refindex = -1;
810 varindex = DatabaseUtils::GetFieldIndex(FieldRandom, MediaTypeNone);
811 EXPECT_EQ(refindex, varindex);
812
813 varindex = DatabaseUtils::GetFieldIndex(FieldNone, MediaTypeAlbum);
814 EXPECT_EQ(refindex, varindex);
815}
816
817//! @todo Should enums in CMusicDatabase be made public instead?
818TEST(TestDatabaseUtils, GetFieldIndex_MediaTypeAlbum)
819{
820 int refindex, varindex;
821 TestDatabaseUtilsHelper a;
822
823 refindex = a.album_idAlbum;
824 varindex = DatabaseUtils::GetFieldIndex(FieldId, MediaTypeAlbum);
825 EXPECT_EQ(refindex, varindex);
826
827 refindex = a.album_strAlbum;
828 varindex = DatabaseUtils::GetFieldIndex(FieldAlbum, MediaTypeAlbum);
829 EXPECT_EQ(refindex, varindex);
830
831 refindex = a.album_strArtists;
832 varindex = DatabaseUtils::GetFieldIndex(FieldArtist, MediaTypeAlbum);
833 EXPECT_EQ(refindex, varindex);
834
835 refindex = a.album_strArtists;
836 varindex = DatabaseUtils::GetFieldIndex(FieldAlbumArtist, MediaTypeAlbum);
837 EXPECT_EQ(refindex, varindex);
838
839 refindex = a.album_strGenres;
840 varindex = DatabaseUtils::GetFieldIndex(FieldGenre, MediaTypeAlbum);
841 EXPECT_EQ(refindex, varindex);
842
843 refindex = a.album_strReleaseDate;
844 varindex = DatabaseUtils::GetFieldIndex(FieldYear, MediaTypeAlbum);
845 EXPECT_EQ(refindex, varindex);
846
847 refindex = a.album_strOrigReleaseDate;
848 varindex = DatabaseUtils::GetFieldIndex(FieldOrigYear, MediaTypeAlbum);
849 EXPECT_EQ(refindex, varindex);
850
851 refindex = a.album_strMoods;
852 varindex = DatabaseUtils::GetFieldIndex(FieldMoods, MediaTypeAlbum);
853 EXPECT_EQ(refindex, varindex);
854
855 refindex = a.album_strStyles;
856 varindex = DatabaseUtils::GetFieldIndex(FieldStyles, MediaTypeAlbum);
857 EXPECT_EQ(refindex, varindex);
858
859 refindex = a.album_strThemes;
860 varindex = DatabaseUtils::GetFieldIndex(FieldThemes, MediaTypeAlbum);
861 EXPECT_EQ(refindex, varindex);
862
863 refindex = a.album_strReview;
864 varindex = DatabaseUtils::GetFieldIndex(FieldReview, MediaTypeAlbum);
865 EXPECT_EQ(refindex, varindex);
866
867 refindex = a.album_strLabel;
868 varindex = DatabaseUtils::GetFieldIndex(FieldMusicLabel, MediaTypeAlbum);
869 EXPECT_EQ(refindex, varindex);
870
871 refindex = a.album_strType;
872 varindex = DatabaseUtils::GetFieldIndex(FieldAlbumType, MediaTypeAlbum);
873 EXPECT_EQ(refindex, varindex);
874
875 refindex = a.album_fRating;
876 varindex = DatabaseUtils::GetFieldIndex(FieldRating, MediaTypeAlbum);
877 EXPECT_EQ(refindex, varindex);
878
879 refindex = a.album_dtDateAdded;
880 varindex = DatabaseUtils::GetFieldIndex(FieldDateAdded, MediaTypeAlbum);
881 EXPECT_EQ(refindex, varindex);
882
883 refindex = -1;
884 varindex = DatabaseUtils::GetFieldIndex(FieldRandom, MediaTypeAlbum);
885 EXPECT_EQ(refindex, varindex);
886}
887
888TEST(TestDatabaseUtils, GetFieldIndex_MediaTypeSong)
889{
890 int refindex, varindex;
891 TestDatabaseUtilsHelper a;
892
893 refindex = a.song_idSong;
894 varindex = DatabaseUtils::GetFieldIndex(FieldId, MediaTypeSong);
895 EXPECT_EQ(refindex, varindex);
896
897 refindex = a.song_strTitle;
898 varindex = DatabaseUtils::GetFieldIndex(FieldTitle, MediaTypeSong);
899 EXPECT_EQ(refindex, varindex);
900
901 refindex = a.song_iTrack;
902 varindex = DatabaseUtils::GetFieldIndex(FieldTrackNumber, MediaTypeSong);
903 EXPECT_EQ(refindex, varindex);
904
905 refindex = a.song_iDuration;
906 varindex = DatabaseUtils::GetFieldIndex(FieldTime, MediaTypeSong);
907 EXPECT_EQ(refindex, varindex);
908
909 refindex = a.song_strReleaseDate;
910 varindex = DatabaseUtils::GetFieldIndex(FieldYear, MediaTypeSong);
911 EXPECT_EQ(refindex, varindex);
912
913 refindex = a.song_strFileName;
914 varindex = DatabaseUtils::GetFieldIndex(FieldFilename, MediaTypeSong);
915 EXPECT_EQ(refindex, varindex);
916
917 refindex = a.song_iTimesPlayed;
918 varindex = DatabaseUtils::GetFieldIndex(FieldPlaycount, MediaTypeSong);
919 EXPECT_EQ(refindex, varindex);
920
921 refindex = a.song_iStartOffset;
922 varindex = DatabaseUtils::GetFieldIndex(FieldStartOffset, MediaTypeSong);
923 EXPECT_EQ(refindex, varindex);
924
925 refindex = a.song_iEndOffset;
926 varindex = DatabaseUtils::GetFieldIndex(FieldEndOffset, MediaTypeSong);
927 EXPECT_EQ(refindex, varindex);
928
929 refindex = a.song_lastplayed;
930 varindex = DatabaseUtils::GetFieldIndex(FieldLastPlayed, MediaTypeSong);
931 EXPECT_EQ(refindex, varindex);
932
933 refindex = a.song_rating;
934 varindex = DatabaseUtils::GetFieldIndex(FieldRating, MediaTypeSong);
935 EXPECT_EQ(refindex, varindex);
936
937 refindex = a.song_votes;
938 varindex = DatabaseUtils::GetFieldIndex(FieldVotes, MediaTypeSong);
939 EXPECT_EQ(refindex, varindex);
940
941 refindex = a.song_userrating;
942 varindex = DatabaseUtils::GetFieldIndex(FieldUserRating, MediaTypeSong);
943 EXPECT_EQ(refindex, varindex);
944
945 refindex = a.song_comment;
946 varindex = DatabaseUtils::GetFieldIndex(FieldComment, MediaTypeSong);
947 EXPECT_EQ(refindex, varindex);
948
949 refindex = a.song_strAlbum;
950 varindex = DatabaseUtils::GetFieldIndex(FieldAlbum, MediaTypeSong);
951 EXPECT_EQ(refindex, varindex);
952
953 refindex = a.song_strPath;
954 varindex = DatabaseUtils::GetFieldIndex(FieldPath, MediaTypeSong);
955 EXPECT_EQ(refindex, varindex);
956
957 refindex = a.song_strArtists;
958 varindex = DatabaseUtils::GetFieldIndex(FieldArtist, MediaTypeSong);
959 EXPECT_EQ(refindex, varindex);
960
961 refindex = a.song_strGenres;
962 varindex = DatabaseUtils::GetFieldIndex(FieldGenre, MediaTypeSong);
963 EXPECT_EQ(refindex, varindex);
964
965 refindex = -1;
966 varindex = DatabaseUtils::GetFieldIndex(FieldRandom, MediaTypeSong);
967 EXPECT_EQ(refindex, varindex);
968}
969
970TEST(TestDatabaseUtils, GetFieldIndex_MediaTypeMusicVideo)
971{
972 int refindex, varindex;
973
974 refindex = 0;
975 varindex = DatabaseUtils::GetFieldIndex(FieldId, MediaTypeMusicVideo);
976 EXPECT_EQ(refindex, varindex);
977
978 refindex = VIDEODB_ID_MUSICVIDEO_TITLE + 2;
979 varindex = DatabaseUtils::GetFieldIndex(FieldTitle, MediaTypeMusicVideo);
980 EXPECT_EQ(refindex, varindex);
981
982 refindex = VIDEODB_ID_MUSICVIDEO_RUNTIME + 2;
983 varindex = DatabaseUtils::GetFieldIndex(FieldTime, MediaTypeMusicVideo);
984 EXPECT_EQ(refindex, varindex);
985
986 refindex = VIDEODB_ID_MUSICVIDEO_DIRECTOR + 2;
987 varindex = DatabaseUtils::GetFieldIndex(FieldDirector, MediaTypeMusicVideo);
988 EXPECT_EQ(refindex, varindex);
989
990 refindex = VIDEODB_ID_MUSICVIDEO_STUDIOS + 2;
991 varindex = DatabaseUtils::GetFieldIndex(FieldStudio, MediaTypeMusicVideo);
992 EXPECT_EQ(refindex, varindex);
993
994 refindex = VIDEODB_ID_MUSICVIDEO_PLOT + 2;
995 varindex = DatabaseUtils::GetFieldIndex(FieldPlot, MediaTypeMusicVideo);
996 EXPECT_EQ(refindex, varindex);
997
998 refindex = VIDEODB_ID_MUSICVIDEO_ALBUM + 2;
999 varindex = DatabaseUtils::GetFieldIndex(FieldAlbum, MediaTypeMusicVideo);
1000 EXPECT_EQ(refindex, varindex);
1001
1002 refindex = VIDEODB_ID_MUSICVIDEO_ARTIST + 2;
1003 varindex = DatabaseUtils::GetFieldIndex(FieldArtist, MediaTypeMusicVideo);
1004 EXPECT_EQ(refindex, varindex);
1005
1006 refindex = VIDEODB_ID_MUSICVIDEO_GENRE + 2;
1007 varindex = DatabaseUtils::GetFieldIndex(FieldGenre, MediaTypeMusicVideo);
1008 EXPECT_EQ(refindex, varindex);
1009
1010 refindex = VIDEODB_ID_MUSICVIDEO_TRACK + 2;
1011 varindex = DatabaseUtils::GetFieldIndex(FieldTrackNumber, MediaTypeMusicVideo);
1012 EXPECT_EQ(refindex, varindex);
1013
1014 refindex = VIDEODB_DETAILS_MUSICVIDEO_FILE;
1015 varindex = DatabaseUtils::GetFieldIndex(FieldFilename, MediaTypeMusicVideo);
1016 EXPECT_EQ(refindex, varindex);
1017
1018 refindex = VIDEODB_DETAILS_MUSICVIDEO_PATH;
1019 varindex = DatabaseUtils::GetFieldIndex(FieldPath, MediaTypeMusicVideo);
1020 EXPECT_EQ(refindex, varindex);
1021
1022 refindex = VIDEODB_DETAILS_MUSICVIDEO_PLAYCOUNT;
1023 varindex = DatabaseUtils::GetFieldIndex(FieldPlaycount, MediaTypeMusicVideo);
1024 EXPECT_EQ(refindex, varindex);
1025
1026 refindex = VIDEODB_DETAILS_MUSICVIDEO_LASTPLAYED;
1027 varindex = DatabaseUtils::GetFieldIndex(FieldLastPlayed, MediaTypeMusicVideo);
1028 EXPECT_EQ(refindex, varindex);
1029
1030 refindex = VIDEODB_DETAILS_MUSICVIDEO_DATEADDED;
1031 varindex = DatabaseUtils::GetFieldIndex(FieldDateAdded, MediaTypeMusicVideo);
1032 EXPECT_EQ(refindex, varindex);
1033
1034 refindex = VIDEODB_DETAILS_MUSICVIDEO_USER_RATING;
1035 varindex = DatabaseUtils::GetFieldIndex(FieldUserRating, MediaTypeMusicVideo);
1036 EXPECT_EQ(refindex, varindex);
1037
1038 refindex = VIDEODB_DETAILS_MUSICVIDEO_PREMIERED;
1039 varindex = DatabaseUtils::GetFieldIndex(FieldYear, MediaTypeMusicVideo);
1040 EXPECT_EQ(refindex, varindex);
1041
1042 refindex = -1;
1043 varindex = DatabaseUtils::GetFieldIndex(FieldRandom, MediaTypeMusicVideo);
1044 EXPECT_EQ(refindex, varindex);
1045}
1046
1047TEST(TestDatabaseUtils, GetFieldIndex_MediaTypeMovie)
1048{
1049 int refindex, varindex;
1050
1051 refindex = 0;
1052 varindex = DatabaseUtils::GetFieldIndex(FieldId, MediaTypeMovie);
1053 EXPECT_EQ(refindex, varindex);
1054
1055 refindex = VIDEODB_ID_TITLE + 2;
1056 varindex = DatabaseUtils::GetFieldIndex(FieldTitle, MediaTypeMovie);
1057 EXPECT_EQ(refindex, varindex);
1058
1059 refindex = VIDEODB_ID_SORTTITLE + 2;
1060 varindex = DatabaseUtils::GetFieldIndex(FieldSortTitle, MediaTypeMovie);
1061 EXPECT_EQ(refindex, varindex);
1062
1063 refindex = VIDEODB_ID_PLOT + 2;
1064 varindex = DatabaseUtils::GetFieldIndex(FieldPlot, MediaTypeMovie);
1065 EXPECT_EQ(refindex, varindex);
1066
1067 refindex = VIDEODB_ID_PLOTOUTLINE + 2;
1068 varindex = DatabaseUtils::GetFieldIndex(FieldPlotOutline, MediaTypeMovie);
1069 EXPECT_EQ(refindex, varindex);
1070
1071 refindex = VIDEODB_ID_TAGLINE + 2;
1072 varindex = DatabaseUtils::GetFieldIndex(FieldTagline, MediaTypeMovie);
1073 EXPECT_EQ(refindex, varindex);
1074
1075 refindex = VIDEODB_ID_CREDITS + 2;
1076 varindex = DatabaseUtils::GetFieldIndex(FieldWriter, MediaTypeMovie);
1077 EXPECT_EQ(refindex, varindex);
1078
1079 refindex = VIDEODB_ID_RUNTIME + 2;
1080 varindex = DatabaseUtils::GetFieldIndex(FieldTime, MediaTypeMovie);
1081 EXPECT_EQ(refindex, varindex);
1082
1083 refindex = VIDEODB_ID_MPAA + 2;
1084 varindex = DatabaseUtils::GetFieldIndex(FieldMPAA, MediaTypeMovie);
1085 EXPECT_EQ(refindex, varindex);
1086
1087 refindex = VIDEODB_ID_TOP250 + 2;
1088 varindex = DatabaseUtils::GetFieldIndex(FieldTop250, MediaTypeMovie);
1089 EXPECT_EQ(refindex, varindex);
1090
1091 refindex = VIDEODB_ID_GENRE + 2;
1092 varindex = DatabaseUtils::GetFieldIndex(FieldGenre, MediaTypeMovie);
1093 EXPECT_EQ(refindex, varindex);
1094
1095 refindex = VIDEODB_ID_DIRECTOR + 2;
1096 varindex = DatabaseUtils::GetFieldIndex(FieldDirector, MediaTypeMovie);
1097 EXPECT_EQ(refindex, varindex);
1098
1099 refindex = VIDEODB_ID_STUDIOS + 2;
1100 varindex = DatabaseUtils::GetFieldIndex(FieldStudio, MediaTypeMovie);
1101 EXPECT_EQ(refindex, varindex);
1102
1103 refindex = VIDEODB_ID_TRAILER + 2;
1104 varindex = DatabaseUtils::GetFieldIndex(FieldTrailer, MediaTypeMovie);
1105 EXPECT_EQ(refindex, varindex);
1106
1107 refindex = VIDEODB_ID_COUNTRY + 2;
1108 varindex = DatabaseUtils::GetFieldIndex(FieldCountry, MediaTypeMovie);
1109 EXPECT_EQ(refindex, varindex);
1110
1111 refindex = VIDEODB_DETAILS_MOVIE_FILE + 2;
1112 varindex = DatabaseUtils::GetFieldIndex(FieldFilename, MediaTypeMovie);
1113 EXPECT_EQ(refindex, varindex);
1114
1115 refindex = VIDEODB_DETAILS_MOVIE_PATH;
1116 varindex = DatabaseUtils::GetFieldIndex(FieldPath, MediaTypeMovie);
1117 EXPECT_EQ(refindex, varindex);
1118
1119 refindex = VIDEODB_DETAILS_MOVIE_PLAYCOUNT;
1120 varindex = DatabaseUtils::GetFieldIndex(FieldPlaycount, MediaTypeMovie);
1121 EXPECT_EQ(refindex, varindex);
1122
1123 refindex = VIDEODB_DETAILS_MOVIE_LASTPLAYED;
1124 varindex = DatabaseUtils::GetFieldIndex(FieldLastPlayed, MediaTypeMovie);
1125 EXPECT_EQ(refindex, varindex);
1126
1127 refindex = VIDEODB_DETAILS_MOVIE_DATEADDED;
1128 varindex = DatabaseUtils::GetFieldIndex(FieldDateAdded, MediaTypeMovie);
1129 EXPECT_EQ(refindex, varindex);
1130
1131 refindex = VIDEODB_DETAILS_MOVIE_USER_RATING;
1132 varindex = DatabaseUtils::GetFieldIndex(FieldUserRating, MediaTypeMovie);
1133 EXPECT_EQ(refindex, varindex);
1134
1135 refindex = VIDEODB_DETAILS_MOVIE_VOTES;
1136 varindex = DatabaseUtils::GetFieldIndex(FieldVotes, MediaTypeMovie);
1137 EXPECT_EQ(refindex, varindex);
1138
1139 refindex = VIDEODB_DETAILS_MOVIE_RATING;
1140 varindex = DatabaseUtils::GetFieldIndex(FieldRating, MediaTypeMovie);
1141 EXPECT_EQ(refindex, varindex);
1142
1143 refindex = VIDEODB_DETAILS_MOVIE_PREMIERED;
1144 varindex = DatabaseUtils::GetFieldIndex(FieldYear, MediaTypeMovie);
1145 EXPECT_EQ(refindex, varindex);
1146
1147 refindex = -1;
1148 varindex = DatabaseUtils::GetFieldIndex(FieldRandom, MediaTypeMovie);
1149 EXPECT_EQ(refindex, varindex);
1150}
1151
1152TEST(TestDatabaseUtils, GetFieldIndex_MediaTypeTvShow)
1153{
1154 int refindex, varindex;
1155
1156 refindex = 0;
1157 varindex = DatabaseUtils::GetFieldIndex(FieldId, MediaTypeTvShow);
1158 EXPECT_EQ(refindex, varindex);
1159
1160 refindex = VIDEODB_ID_TV_TITLE + 1;
1161 varindex = DatabaseUtils::GetFieldIndex(FieldTitle, MediaTypeTvShow);
1162 EXPECT_EQ(refindex, varindex);
1163
1164 refindex = VIDEODB_ID_TV_SORTTITLE + 1;
1165 varindex = DatabaseUtils::GetFieldIndex(FieldSortTitle, MediaTypeTvShow);
1166 EXPECT_EQ(refindex, varindex);
1167
1168 refindex = VIDEODB_ID_TV_PLOT + 1;
1169 varindex = DatabaseUtils::GetFieldIndex(FieldPlot, MediaTypeTvShow);
1170 EXPECT_EQ(refindex, varindex);
1171
1172 refindex = VIDEODB_ID_TV_STATUS + 1;
1173 varindex = DatabaseUtils::GetFieldIndex(FieldTvShowStatus, MediaTypeTvShow);
1174 EXPECT_EQ(refindex, varindex);
1175
1176 refindex = VIDEODB_ID_TV_PREMIERED + 1;
1177 varindex = DatabaseUtils::GetFieldIndex(FieldYear, MediaTypeTvShow);
1178 EXPECT_EQ(refindex, varindex);
1179
1180 refindex = VIDEODB_ID_TV_GENRE + 1;
1181 varindex = DatabaseUtils::GetFieldIndex(FieldGenre, MediaTypeTvShow);
1182 EXPECT_EQ(refindex, varindex);
1183
1184 refindex = VIDEODB_ID_TV_MPAA + 1;
1185 varindex = DatabaseUtils::GetFieldIndex(FieldMPAA, MediaTypeTvShow);
1186 EXPECT_EQ(refindex, varindex);
1187
1188 refindex = VIDEODB_ID_TV_STUDIOS + 1;
1189 varindex = DatabaseUtils::GetFieldIndex(FieldStudio, MediaTypeTvShow);
1190 EXPECT_EQ(refindex, varindex);
1191
1192 refindex = VIDEODB_DETAILS_TVSHOW_PATH;
1193 varindex = DatabaseUtils::GetFieldIndex(FieldPath, MediaTypeTvShow);
1194 EXPECT_EQ(refindex, varindex);
1195
1196 refindex = VIDEODB_DETAILS_TVSHOW_DATEADDED;
1197 varindex = DatabaseUtils::GetFieldIndex(FieldDateAdded, MediaTypeTvShow);
1198 EXPECT_EQ(refindex, varindex);
1199
1200 refindex = VIDEODB_DETAILS_TVSHOW_NUM_EPISODES;
1201 varindex = DatabaseUtils::GetFieldIndex(FieldNumberOfEpisodes, MediaTypeTvShow);
1202 EXPECT_EQ(refindex, varindex);
1203
1204 refindex = VIDEODB_DETAILS_TVSHOW_NUM_WATCHED;
1205 varindex = DatabaseUtils::GetFieldIndex(FieldNumberOfWatchedEpisodes, MediaTypeTvShow);
1206 EXPECT_EQ(refindex, varindex);
1207
1208 refindex = VIDEODB_DETAILS_TVSHOW_NUM_SEASONS;
1209 varindex = DatabaseUtils::GetFieldIndex(FieldSeason, MediaTypeTvShow);
1210 EXPECT_EQ(refindex, varindex);
1211
1212 refindex = VIDEODB_DETAILS_TVSHOW_USER_RATING;
1213 varindex = DatabaseUtils::GetFieldIndex(FieldUserRating, MediaTypeTvShow);
1214 EXPECT_EQ(refindex, varindex);
1215
1216 refindex = VIDEODB_DETAILS_TVSHOW_VOTES;
1217 varindex = DatabaseUtils::GetFieldIndex(FieldVotes, MediaTypeTvShow);
1218 EXPECT_EQ(refindex, varindex);
1219
1220 refindex = VIDEODB_DETAILS_TVSHOW_RATING;
1221 varindex = DatabaseUtils::GetFieldIndex(FieldRating, MediaTypeTvShow);
1222 EXPECT_EQ(refindex, varindex);
1223
1224 refindex = -1;
1225 varindex = DatabaseUtils::GetFieldIndex(FieldRandom, MediaTypeTvShow);
1226 EXPECT_EQ(refindex, varindex);
1227}
1228
1229TEST(TestDatabaseUtils, GetFieldIndex_MediaTypeEpisode)
1230{
1231 int refindex, varindex;
1232
1233 refindex = 0;
1234 varindex = DatabaseUtils::GetFieldIndex(FieldId, MediaTypeEpisode);
1235 EXPECT_EQ(refindex, varindex);
1236
1237 refindex = VIDEODB_ID_EPISODE_TITLE + 2;
1238 varindex = DatabaseUtils::GetFieldIndex(FieldTitle, MediaTypeEpisode);
1239 EXPECT_EQ(refindex, varindex);
1240
1241 refindex = VIDEODB_ID_EPISODE_PLOT + 2;
1242 varindex = DatabaseUtils::GetFieldIndex(FieldPlot, MediaTypeEpisode);
1243 EXPECT_EQ(refindex, varindex);
1244
1245 refindex = VIDEODB_ID_EPISODE_CREDITS + 2;
1246 varindex = DatabaseUtils::GetFieldIndex(FieldWriter, MediaTypeEpisode);
1247 EXPECT_EQ(refindex, varindex);
1248
1249 refindex = VIDEODB_ID_EPISODE_AIRED + 2;
1250 varindex = DatabaseUtils::GetFieldIndex(FieldAirDate, MediaTypeEpisode);
1251 EXPECT_EQ(refindex, varindex);
1252
1253 refindex = VIDEODB_ID_EPISODE_RUNTIME + 2;
1254 varindex = DatabaseUtils::GetFieldIndex(FieldTime, MediaTypeEpisode);
1255 EXPECT_EQ(refindex, varindex);
1256
1257 refindex = VIDEODB_ID_EPISODE_DIRECTOR + 2;
1258 varindex = DatabaseUtils::GetFieldIndex(FieldDirector, MediaTypeEpisode);
1259 EXPECT_EQ(refindex, varindex);
1260
1261 refindex = VIDEODB_ID_EPISODE_SEASON + 2;
1262 varindex = DatabaseUtils::GetFieldIndex(FieldSeason, MediaTypeEpisode);
1263 EXPECT_EQ(refindex, varindex);
1264
1265 refindex = VIDEODB_ID_EPISODE_EPISODE + 2;
1266 varindex = DatabaseUtils::GetFieldIndex(FieldEpisodeNumber, MediaTypeEpisode);
1267 EXPECT_EQ(refindex, varindex);
1268
1269 refindex = VIDEODB_DETAILS_EPISODE_FILE;
1270 varindex = DatabaseUtils::GetFieldIndex(FieldFilename, MediaTypeEpisode);
1271 EXPECT_EQ(refindex, varindex);
1272
1273 refindex = VIDEODB_DETAILS_EPISODE_PATH;
1274 varindex = DatabaseUtils::GetFieldIndex(FieldPath, MediaTypeEpisode);
1275 EXPECT_EQ(refindex, varindex);
1276
1277 refindex = VIDEODB_DETAILS_EPISODE_PLAYCOUNT;
1278 varindex = DatabaseUtils::GetFieldIndex(FieldPlaycount, MediaTypeEpisode);
1279 EXPECT_EQ(refindex, varindex);
1280
1281 refindex = VIDEODB_DETAILS_EPISODE_LASTPLAYED;
1282 varindex = DatabaseUtils::GetFieldIndex(FieldLastPlayed, MediaTypeEpisode);
1283 EXPECT_EQ(refindex, varindex);
1284
1285 refindex = VIDEODB_DETAILS_EPISODE_DATEADDED;
1286 varindex = DatabaseUtils::GetFieldIndex(FieldDateAdded, MediaTypeEpisode);
1287 EXPECT_EQ(refindex, varindex);
1288
1289 refindex = VIDEODB_DETAILS_EPISODE_TVSHOW_NAME;
1290 varindex = DatabaseUtils::GetFieldIndex(FieldTvShowTitle, MediaTypeEpisode);
1291 EXPECT_EQ(refindex, varindex);
1292
1293 refindex = VIDEODB_DETAILS_EPISODE_TVSHOW_STUDIO;
1294 varindex = DatabaseUtils::GetFieldIndex(FieldStudio, MediaTypeEpisode);
1295 EXPECT_EQ(refindex, varindex);
1296
1297 refindex = VIDEODB_DETAILS_EPISODE_TVSHOW_AIRED;
1298 varindex = DatabaseUtils::GetFieldIndex(FieldYear, MediaTypeEpisode);
1299 EXPECT_EQ(refindex, varindex);
1300
1301 refindex = VIDEODB_DETAILS_EPISODE_TVSHOW_MPAA;
1302 varindex = DatabaseUtils::GetFieldIndex(FieldMPAA, MediaTypeEpisode);
1303 EXPECT_EQ(refindex, varindex);
1304
1305 refindex = VIDEODB_DETAILS_EPISODE_USER_RATING;
1306 varindex = DatabaseUtils::GetFieldIndex(FieldUserRating, MediaTypeEpisode);
1307 EXPECT_EQ(refindex, varindex);
1308
1309 refindex = VIDEODB_DETAILS_EPISODE_VOTES;
1310 varindex = DatabaseUtils::GetFieldIndex(FieldVotes, MediaTypeEpisode);
1311 EXPECT_EQ(refindex, varindex);
1312
1313 refindex = VIDEODB_DETAILS_EPISODE_RATING;
1314 varindex = DatabaseUtils::GetFieldIndex(FieldRating, MediaTypeEpisode);
1315 EXPECT_EQ(refindex, varindex);
1316
1317 refindex = -1;
1318 varindex = DatabaseUtils::GetFieldIndex(FieldRandom, MediaTypeEpisode);
1319 EXPECT_EQ(refindex, varindex);
1320}
1321
1322TEST(TestDatabaseUtils, GetSelectFields)
1323{
1324 Fields fields;
1325 FieldList fieldlist;
1326
1327 EXPECT_FALSE(DatabaseUtils::GetSelectFields(fields, MediaTypeAlbum,
1328 fieldlist));
1329
1330 fields.insert(FieldId);
1331 fields.insert(FieldGenre);
1332 fields.insert(FieldAlbum);
1333 fields.insert(FieldArtist);
1334 fields.insert(FieldTitle);
1335 EXPECT_FALSE(DatabaseUtils::GetSelectFields(fields, MediaTypeNone,
1336 fieldlist));
1337 EXPECT_TRUE(DatabaseUtils::GetSelectFields(fields, MediaTypeAlbum,
1338 fieldlist));
1339 EXPECT_FALSE(fieldlist.empty());
1340}
1341
1342TEST(TestDatabaseUtils, GetFieldValue)
1343{
1344 CVariant v_null, v_string;
1345 dbiplus::field_value f_null, f_string("test");
1346
1347 f_null.set_isNull();
1348 EXPECT_TRUE(DatabaseUtils::GetFieldValue(f_null, v_null));
1349 EXPECT_TRUE(v_null.isNull());
1350
1351 EXPECT_TRUE(DatabaseUtils::GetFieldValue(f_string, v_string));
1352 EXPECT_FALSE(v_string.isNull());
1353 EXPECT_TRUE(v_string.isString());
1354}
1355
1356//! @todo Need some way to test this function
1357// TEST(TestDatabaseUtils, GetDatabaseResults)
1358// {
1359// static bool GetDatabaseResults(MediaType mediaType, const FieldList &fields,
1360// const std::unique_ptr<dbiplus::Dataset> &dataset,
1361// DatabaseResults &results);
1362// }
1363
1364TEST(TestDatabaseUtils, BuildLimitClause)
1365{
1366 std::string a = DatabaseUtils::BuildLimitClause(100);
1367 EXPECT_STREQ(" LIMIT 100", a.c_str());
1368}
1369
1370// class DatabaseUtils
1371// {
1372// public:
1373//
1374//
1375// static std::string BuildLimitClause(int end, int start = 0);
1376// };