2 * Copyright (C) 2005-2013 Team XBMC
5 * This Program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2, or (at your option)
10 * This Program 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
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with XBMC; see the file COPYING. If not, see
17 * <http://www.gnu.org/licenses/>.
21 #include "utils/DatabaseUtils.h"
22 #include "video/VideoDatabase.h"
23 #include "music/MusicDatabase.h"
24 #include "dbwrappers/qry_dat.h"
25 #include "utils/Variant.h"
27 #include "gtest/gtest.h"
29 class TestDatabaseUtilsHelper
32 TestDatabaseUtilsHelper()
34 album_idAlbum = CMusicDatabase::album_idAlbum;
35 album_strAlbum = CMusicDatabase::album_strAlbum;
36 album_strArtists = CMusicDatabase::album_strArtists;
37 album_strGenres = CMusicDatabase::album_strGenres;
38 album_iYear = CMusicDatabase::album_iYear;
39 album_strMoods = CMusicDatabase::album_strMoods;
40 album_strStyles = CMusicDatabase::album_strStyles;
41 album_strThemes = CMusicDatabase::album_strThemes;
42 album_strReview = CMusicDatabase::album_strReview;
43 album_strLabel = CMusicDatabase::album_strLabel;
44 album_strType = CMusicDatabase::album_strType;
45 album_iRating = CMusicDatabase::album_iRating;
47 song_idSong = CMusicDatabase::song_idSong;
48 song_strTitle = CMusicDatabase::song_strTitle;
49 song_iTrack = CMusicDatabase::song_iTrack;
50 song_iDuration = CMusicDatabase::song_iDuration;
51 song_iYear = CMusicDatabase::song_iYear;
52 song_strFileName = CMusicDatabase::song_strFileName;
53 song_iTimesPlayed = CMusicDatabase::song_iTimesPlayed;
54 song_iStartOffset = CMusicDatabase::song_iStartOffset;
55 song_iEndOffset = CMusicDatabase::song_iEndOffset;
56 song_lastplayed = CMusicDatabase::song_lastplayed;
57 song_rating = CMusicDatabase::song_rating;
58 song_comment = CMusicDatabase::song_comment;
59 song_strAlbum = CMusicDatabase::song_strAlbum;
60 song_strPath = CMusicDatabase::song_strPath;
61 song_strGenres = CMusicDatabase::song_strGenres;
62 song_strArtists = CMusicDatabase::song_strArtists;
84 int song_iTimesPlayed;
85 int song_iStartOffset;
96 TEST(TestDatabaseUtils, MediaTypeToString)
98 std::string refstr, varstr;
101 varstr = DatabaseUtils::MediaTypeToString(MediaTypeNone);
102 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
105 varstr = DatabaseUtils::MediaTypeToString(MediaTypeMusic);
106 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
109 varstr = DatabaseUtils::MediaTypeToString(MediaTypeArtist);
110 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
113 varstr = DatabaseUtils::MediaTypeToString(MediaTypeAlbum);
114 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
117 varstr = DatabaseUtils::MediaTypeToString(MediaTypeSong);
118 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
121 varstr = DatabaseUtils::MediaTypeToString(MediaTypeVideo);
122 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
125 varstr = DatabaseUtils::MediaTypeToString(MediaTypeVideoCollection);
126 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
128 refstr = "musicvideo";
129 varstr = DatabaseUtils::MediaTypeToString(MediaTypeMusicVideo);
130 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
133 varstr = DatabaseUtils::MediaTypeToString(MediaTypeMovie);
134 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
137 varstr = DatabaseUtils::MediaTypeToString(MediaTypeTvShow);
138 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
141 varstr = DatabaseUtils::MediaTypeToString(MediaTypeEpisode);
142 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
145 TEST(TestDatabaseUtils, MediaTypeFromString)
147 int refmediatype, varmediatype;
149 refmediatype = MediaTypeNone;
150 varmediatype = DatabaseUtils::MediaTypeFromString("");
151 EXPECT_EQ(refmediatype, varmediatype);
153 refmediatype = MediaTypeMusic;
154 varmediatype = DatabaseUtils::MediaTypeFromString("music");
155 EXPECT_EQ(refmediatype, varmediatype);
157 refmediatype = MediaTypeArtist;
158 varmediatype = DatabaseUtils::MediaTypeFromString("artist");
159 EXPECT_EQ(refmediatype, varmediatype);
161 refmediatype = MediaTypeAlbum;
162 varmediatype = DatabaseUtils::MediaTypeFromString("album");
163 EXPECT_EQ(refmediatype, varmediatype);
165 refmediatype = MediaTypeSong;
166 varmediatype = DatabaseUtils::MediaTypeFromString("song");
167 EXPECT_EQ(refmediatype, varmediatype);
169 refmediatype = MediaTypeVideo;
170 varmediatype = DatabaseUtils::MediaTypeFromString("video");
171 EXPECT_EQ(refmediatype, varmediatype);
173 refmediatype = MediaTypeVideoCollection;
174 varmediatype = DatabaseUtils::MediaTypeFromString("set");
175 EXPECT_EQ(refmediatype, varmediatype);
177 refmediatype = MediaTypeMusicVideo;
178 varmediatype = DatabaseUtils::MediaTypeFromString("musicvideo");
179 EXPECT_EQ(refmediatype, varmediatype);
181 refmediatype = MediaTypeMovie;
182 varmediatype = DatabaseUtils::MediaTypeFromString("movie");
183 EXPECT_EQ(refmediatype, varmediatype);
185 refmediatype = MediaTypeTvShow;
186 varmediatype = DatabaseUtils::MediaTypeFromString("tvshow");
187 EXPECT_EQ(refmediatype, varmediatype);
189 refmediatype = MediaTypeEpisode;
190 varmediatype = DatabaseUtils::MediaTypeFromString("episode");
191 EXPECT_EQ(refmediatype, varmediatype);
194 TEST(TestDatabaseUtils, GetField_None)
196 std::string refstr, varstr;
199 varstr = DatabaseUtils::GetField(FieldNone, MediaTypeNone,
200 DatabaseQueryPartSelect);
201 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
203 varstr = DatabaseUtils::GetField(FieldNone, MediaTypeMovie,
204 DatabaseQueryPartSelect);
205 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
208 TEST(TestDatabaseUtils, GetField_MediaTypeAlbum)
210 std::string refstr, varstr;
212 refstr = "albumview.idAlbum";
213 varstr = DatabaseUtils::GetField(FieldId, MediaTypeAlbum,
214 DatabaseQueryPartSelect);
215 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
217 refstr = "albumview.strAlbum";
218 varstr = DatabaseUtils::GetField(FieldAlbum, MediaTypeAlbum,
219 DatabaseQueryPartSelect);
220 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
222 refstr = "albumview.strArtists";
223 varstr = DatabaseUtils::GetField(FieldArtist, MediaTypeAlbum,
224 DatabaseQueryPartSelect);
225 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
227 refstr = "albumview.strArtists";
228 varstr = DatabaseUtils::GetField(FieldAlbumArtist, MediaTypeAlbum,
229 DatabaseQueryPartSelect);
230 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
232 refstr = "albumview.strGenre";
233 varstr = DatabaseUtils::GetField(FieldGenre, MediaTypeAlbum,
234 DatabaseQueryPartSelect);
235 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
237 refstr = "albumview.iYear";
238 varstr = DatabaseUtils::GetField(FieldYear, MediaTypeAlbum,
239 DatabaseQueryPartSelect);
240 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
242 refstr = "albumview.strMoods";
243 varstr = DatabaseUtils::GetField(FieldMoods, MediaTypeAlbum,
244 DatabaseQueryPartSelect);
245 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
247 refstr = "albumview.strStyles";
248 varstr = DatabaseUtils::GetField(FieldStyles, MediaTypeAlbum,
249 DatabaseQueryPartSelect);
250 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
252 refstr = "albumview.strThemes";
253 varstr = DatabaseUtils::GetField(FieldThemes, MediaTypeAlbum,
254 DatabaseQueryPartSelect);
255 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
257 refstr = "albumview.strReview";
258 varstr = DatabaseUtils::GetField(FieldReview, MediaTypeAlbum,
259 DatabaseQueryPartSelect);
260 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
262 refstr = "albumview.strLabel";
263 varstr = DatabaseUtils::GetField(FieldMusicLabel, MediaTypeAlbum,
264 DatabaseQueryPartSelect);
265 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
267 refstr = "albumview.strType";
268 varstr = DatabaseUtils::GetField(FieldAlbumType, MediaTypeAlbum,
269 DatabaseQueryPartSelect);
270 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
272 refstr = "albumview.iRating";
273 varstr = DatabaseUtils::GetField(FieldRating, MediaTypeAlbum,
274 DatabaseQueryPartSelect);
275 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
277 refstr = "albumview.idalbum";
278 varstr = DatabaseUtils::GetField(FieldDateAdded, MediaTypeAlbum,
279 DatabaseQueryPartOrderBy);
280 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
283 varstr = DatabaseUtils::GetField(FieldDateAdded, MediaTypeAlbum,
284 DatabaseQueryPartSelect);
285 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
287 refstr = "albumview.strAlbum";
288 varstr = DatabaseUtils::GetField(FieldAlbum, MediaTypeAlbum,
289 DatabaseQueryPartWhere);
290 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
292 varstr = DatabaseUtils::GetField(FieldAlbum, MediaTypeAlbum,
293 DatabaseQueryPartOrderBy);
294 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
297 TEST(TestDatabaseUtils, GetField_MediaTypeSong)
299 std::string refstr, varstr;
301 refstr = "songview.idSong";
302 varstr = DatabaseUtils::GetField(FieldId, MediaTypeSong,
303 DatabaseQueryPartSelect);
304 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
306 refstr = "songview.strTitle";
307 varstr = DatabaseUtils::GetField(FieldTitle, MediaTypeSong,
308 DatabaseQueryPartSelect);
309 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
311 refstr = "songview.iTrack";
312 varstr = DatabaseUtils::GetField(FieldTrackNumber, MediaTypeSong,
313 DatabaseQueryPartSelect);
314 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
316 refstr = "songview.iDuration";
317 varstr = DatabaseUtils::GetField(FieldTime, MediaTypeSong,
318 DatabaseQueryPartSelect);
319 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
321 refstr = "songview.iYear";
322 varstr = DatabaseUtils::GetField(FieldYear, MediaTypeSong,
323 DatabaseQueryPartSelect);
324 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
326 refstr = "songview.strFilename";
327 varstr = DatabaseUtils::GetField(FieldFilename, MediaTypeSong,
328 DatabaseQueryPartSelect);
329 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
331 refstr = "songview.iTimesPlayed";
332 varstr = DatabaseUtils::GetField(FieldPlaycount, MediaTypeSong,
333 DatabaseQueryPartSelect);
334 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
336 refstr = "songview.iStartOffset";
337 varstr = DatabaseUtils::GetField(FieldStartOffset, MediaTypeSong,
338 DatabaseQueryPartSelect);
339 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
341 refstr = "songview.iEndOffset";
342 varstr = DatabaseUtils::GetField(FieldEndOffset, MediaTypeSong,
343 DatabaseQueryPartSelect);
344 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
346 refstr = "songview.lastPlayed";
347 varstr = DatabaseUtils::GetField(FieldLastPlayed, MediaTypeSong,
348 DatabaseQueryPartSelect);
349 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
351 refstr = "songview.rating";
352 varstr = DatabaseUtils::GetField(FieldRating, MediaTypeSong,
353 DatabaseQueryPartSelect);
354 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
356 refstr = "songview.comment";
357 varstr = DatabaseUtils::GetField(FieldComment, MediaTypeSong,
358 DatabaseQueryPartSelect);
359 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
361 refstr = "songview.strAlbum";
362 varstr = DatabaseUtils::GetField(FieldAlbum, MediaTypeSong,
363 DatabaseQueryPartSelect);
364 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
366 refstr = "songview.strPath";
367 varstr = DatabaseUtils::GetField(FieldPath, MediaTypeSong,
368 DatabaseQueryPartSelect);
369 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
371 refstr = "songview.strArtists";
372 varstr = DatabaseUtils::GetField(FieldArtist, MediaTypeSong,
373 DatabaseQueryPartSelect);
374 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
376 refstr = "songview.strArtists";
377 varstr = DatabaseUtils::GetField(FieldAlbumArtist, MediaTypeSong,
378 DatabaseQueryPartSelect);
379 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
381 refstr = "songview.strGenre";
382 varstr = DatabaseUtils::GetField(FieldGenre, MediaTypeSong,
383 DatabaseQueryPartSelect);
384 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
386 refstr = "songview.idSong";
387 varstr = DatabaseUtils::GetField(FieldDateAdded, MediaTypeSong,
388 DatabaseQueryPartOrderBy);
389 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
392 varstr = DatabaseUtils::GetField(FieldDateAdded, MediaTypeSong,
393 DatabaseQueryPartSelect);
394 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
396 refstr = "songview.strPath";
397 varstr = DatabaseUtils::GetField(FieldPath, MediaTypeSong,
398 DatabaseQueryPartWhere);
399 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
401 varstr = DatabaseUtils::GetField(FieldPath, MediaTypeSong,
402 DatabaseQueryPartOrderBy);
403 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
406 TEST(TestDatabaseUtils, GetField_MediaTypeMusicVideo)
408 CStdString refstr, varstr;
410 refstr = "musicvideoview.idMVideo";
411 varstr = DatabaseUtils::GetField(FieldId, MediaTypeMusicVideo,
412 DatabaseQueryPartSelect);
413 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
415 refstr.Format("musicvideoview.c%02d",VIDEODB_ID_MUSICVIDEO_TITLE);
416 varstr = DatabaseUtils::GetField(FieldTitle, MediaTypeMusicVideo,
417 DatabaseQueryPartSelect);
418 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
420 refstr.Format("musicvideoview.c%02d",VIDEODB_ID_MUSICVIDEO_RUNTIME);
421 varstr = DatabaseUtils::GetField(FieldTime, MediaTypeMusicVideo,
422 DatabaseQueryPartSelect);
423 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
425 refstr.Format("musicvideoview.c%02d",VIDEODB_ID_MUSICVIDEO_DIRECTOR);
426 varstr = DatabaseUtils::GetField(FieldDirector, MediaTypeMusicVideo,
427 DatabaseQueryPartSelect);
428 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
430 refstr.Format("musicvideoview.c%02d",VIDEODB_ID_MUSICVIDEO_STUDIOS);
431 varstr = DatabaseUtils::GetField(FieldStudio, MediaTypeMusicVideo,
432 DatabaseQueryPartSelect);
433 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
435 refstr.Format("musicvideoview.c%02d",VIDEODB_ID_MUSICVIDEO_YEAR);
436 varstr = DatabaseUtils::GetField(FieldYear, MediaTypeMusicVideo,
437 DatabaseQueryPartSelect);
438 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
440 refstr.Format("musicvideoview.c%02d",VIDEODB_ID_MUSICVIDEO_PLOT);
441 varstr = DatabaseUtils::GetField(FieldPlot, MediaTypeMusicVideo,
442 DatabaseQueryPartSelect);
443 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
445 refstr.Format("musicvideoview.c%02d",VIDEODB_ID_MUSICVIDEO_ALBUM);
446 varstr = DatabaseUtils::GetField(FieldAlbum, MediaTypeMusicVideo,
447 DatabaseQueryPartSelect);
448 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
450 refstr.Format("musicvideoview.c%02d",VIDEODB_ID_MUSICVIDEO_ARTIST);
451 varstr = DatabaseUtils::GetField(FieldArtist, MediaTypeMusicVideo,
452 DatabaseQueryPartSelect);
453 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
455 refstr.Format("musicvideoview.c%02d",VIDEODB_ID_MUSICVIDEO_GENRE);
456 varstr = DatabaseUtils::GetField(FieldGenre, MediaTypeMusicVideo,
457 DatabaseQueryPartSelect);
458 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
460 refstr.Format("musicvideoview.c%02d",VIDEODB_ID_MUSICVIDEO_TRACK);
461 varstr = DatabaseUtils::GetField(FieldTrackNumber, MediaTypeMusicVideo,
462 DatabaseQueryPartSelect);
463 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
465 refstr = "musicvideoview.strFilename";
466 varstr = DatabaseUtils::GetField(FieldFilename, MediaTypeMusicVideo,
467 DatabaseQueryPartSelect);
468 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
470 refstr = "musicvideoview.strPath";
471 varstr = DatabaseUtils::GetField(FieldPath, MediaTypeMusicVideo,
472 DatabaseQueryPartSelect);
473 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
475 refstr = "musicvideoview.playCount";
476 varstr = DatabaseUtils::GetField(FieldPlaycount, MediaTypeMusicVideo,
477 DatabaseQueryPartSelect);
478 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
480 refstr = "musicvideoview.lastPlayed";
481 varstr = DatabaseUtils::GetField(FieldLastPlayed, MediaTypeMusicVideo,
482 DatabaseQueryPartSelect);
483 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
485 refstr = "musicvideoview.dateAdded";
486 varstr = DatabaseUtils::GetField(FieldDateAdded, MediaTypeMusicVideo,
487 DatabaseQueryPartSelect);
488 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
491 varstr = DatabaseUtils::GetField(FieldVideoResolution, MediaTypeMusicVideo,
492 DatabaseQueryPartSelect);
493 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
495 refstr = "musicvideoview.strPath";
496 varstr = DatabaseUtils::GetField(FieldPath, MediaTypeMusicVideo,
497 DatabaseQueryPartWhere);
498 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
500 refstr = "musicvideoview.strPath";
501 varstr = DatabaseUtils::GetField(FieldPath, MediaTypeMusicVideo,
502 DatabaseQueryPartOrderBy);
503 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
506 TEST(TestDatabaseUtils, GetField_MediaTypeMovie)
508 CStdString refstr, varstr;
510 refstr = "movieview.idMovie";
511 varstr = DatabaseUtils::GetField(FieldId, MediaTypeMovie,
512 DatabaseQueryPartSelect);
513 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
515 refstr.Format("movieview.c%02d", VIDEODB_ID_TITLE);
516 varstr = DatabaseUtils::GetField(FieldTitle, MediaTypeMovie,
517 DatabaseQueryPartSelect);
518 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
520 refstr.Format("CASE WHEN length(movieview.c%02d) > 0 THEN movieview.c%02d "
521 "ELSE movieview.c%02d END", VIDEODB_ID_SORTTITLE,
522 VIDEODB_ID_SORTTITLE, VIDEODB_ID_TITLE, VIDEODB_ID_TITLE);
523 varstr = DatabaseUtils::GetField(FieldTitle, MediaTypeMovie,
524 DatabaseQueryPartOrderBy);
525 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
527 refstr.Format("movieview.c%02d", VIDEODB_ID_PLOT);
528 varstr = DatabaseUtils::GetField(FieldPlot, MediaTypeMovie,
529 DatabaseQueryPartSelect);
530 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
532 refstr.Format("movieview.c%02d", VIDEODB_ID_PLOTOUTLINE);
533 varstr = DatabaseUtils::GetField(FieldPlotOutline, MediaTypeMovie,
534 DatabaseQueryPartSelect);
535 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
537 refstr.Format("movieview.c%02d", VIDEODB_ID_TAGLINE);
538 varstr = DatabaseUtils::GetField(FieldTagline, MediaTypeMovie,
539 DatabaseQueryPartSelect);
540 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
542 refstr.Format("movieview.c%02d", VIDEODB_ID_VOTES);
543 varstr = DatabaseUtils::GetField(FieldVotes, MediaTypeMovie,
544 DatabaseQueryPartSelect);
545 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
547 refstr.Format("movieview.c%02d", VIDEODB_ID_RATING);
548 varstr = DatabaseUtils::GetField(FieldRating, MediaTypeMovie,
549 DatabaseQueryPartSelect);
550 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
552 refstr.Format("CAST(movieview.c%02d as DECIMAL(5,3))", VIDEODB_ID_RATING);
553 varstr = DatabaseUtils::GetField(FieldRating, MediaTypeMovie,
554 DatabaseQueryPartOrderBy);
555 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
557 refstr.Format("movieview.c%02d", VIDEODB_ID_CREDITS);
558 varstr = DatabaseUtils::GetField(FieldWriter, MediaTypeMovie,
559 DatabaseQueryPartSelect);
560 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
562 refstr.Format("movieview.c%02d", VIDEODB_ID_YEAR);
563 varstr = DatabaseUtils::GetField(FieldYear, MediaTypeMovie,
564 DatabaseQueryPartSelect);
565 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
567 refstr.Format("movieview.c%02d", VIDEODB_ID_SORTTITLE);
568 varstr = DatabaseUtils::GetField(FieldSortTitle, MediaTypeMovie,
569 DatabaseQueryPartSelect);
570 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
572 refstr.Format("movieview.c%02d", VIDEODB_ID_RUNTIME);
573 varstr = DatabaseUtils::GetField(FieldTime, MediaTypeMovie,
574 DatabaseQueryPartSelect);
575 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
577 refstr.Format("movieview.c%02d", VIDEODB_ID_MPAA);
578 varstr = DatabaseUtils::GetField(FieldMPAA, MediaTypeMovie,
579 DatabaseQueryPartSelect);
580 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
582 refstr.Format("movieview.c%02d", VIDEODB_ID_TOP250);
583 varstr = DatabaseUtils::GetField(FieldTop250, MediaTypeMovie,
584 DatabaseQueryPartSelect);
585 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
587 refstr.Format("movieview.c%02d", VIDEODB_ID_GENRE);
588 varstr = DatabaseUtils::GetField(FieldGenre, MediaTypeMovie,
589 DatabaseQueryPartSelect);
590 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
592 refstr.Format("movieview.c%02d", VIDEODB_ID_DIRECTOR);
593 varstr = DatabaseUtils::GetField(FieldDirector, MediaTypeMovie,
594 DatabaseQueryPartSelect);
595 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
597 refstr.Format("movieview.c%02d", VIDEODB_ID_STUDIOS);
598 varstr = DatabaseUtils::GetField(FieldStudio, MediaTypeMovie,
599 DatabaseQueryPartSelect);
600 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
602 refstr.Format("movieview.c%02d", VIDEODB_ID_TRAILER);
603 varstr = DatabaseUtils::GetField(FieldTrailer, MediaTypeMovie,
604 DatabaseQueryPartSelect);
605 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
607 refstr.Format("movieview.c%02d", VIDEODB_ID_COUNTRY);
608 varstr = DatabaseUtils::GetField(FieldCountry, MediaTypeMovie,
609 DatabaseQueryPartSelect);
610 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
612 refstr = "movieview.strFilename";
613 varstr = DatabaseUtils::GetField(FieldFilename, MediaTypeMovie,
614 DatabaseQueryPartSelect);
615 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
617 refstr = "movieview.strPath";
618 varstr = DatabaseUtils::GetField(FieldPath, MediaTypeMovie,
619 DatabaseQueryPartSelect);
620 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
622 refstr = "movieview.playCount";
623 varstr = DatabaseUtils::GetField(FieldPlaycount, MediaTypeMovie,
624 DatabaseQueryPartSelect);
625 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
627 refstr = "movieview.lastPlayed";
628 varstr = DatabaseUtils::GetField(FieldLastPlayed, MediaTypeMovie,
629 DatabaseQueryPartSelect);
630 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
632 refstr = "movieview.dateAdded";
633 varstr = DatabaseUtils::GetField(FieldDateAdded, MediaTypeMovie,
634 DatabaseQueryPartSelect);
635 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
638 varstr = DatabaseUtils::GetField(FieldRandom, MediaTypeMovie,
639 DatabaseQueryPartSelect);
640 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
643 TEST(TestDatabaseUtils, GetField_MediaTypeTvShow)
645 CStdString refstr, varstr;
647 refstr = "tvshowview.idShow";
648 varstr = DatabaseUtils::GetField(FieldId, MediaTypeTvShow,
649 DatabaseQueryPartSelect);
650 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
652 refstr.Format("CASE WHEN length(tvshowview.c%02d) > 0 THEN tvshowview.c%02d "
653 "ELSE tvshowview.c%02d END", VIDEODB_ID_TV_SORTTITLE,
654 VIDEODB_ID_TV_SORTTITLE, VIDEODB_ID_TV_TITLE);
655 varstr = DatabaseUtils::GetField(FieldTitle, MediaTypeTvShow,
656 DatabaseQueryPartOrderBy);
657 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
659 refstr.Format("tvshowview.c%02d", VIDEODB_ID_TV_TITLE);
660 varstr = DatabaseUtils::GetField(FieldTitle, MediaTypeTvShow,
661 DatabaseQueryPartSelect);
662 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
664 refstr.Format("tvshowview.c%02d", VIDEODB_ID_TV_PLOT);
665 varstr = DatabaseUtils::GetField(FieldPlot, MediaTypeTvShow,
666 DatabaseQueryPartSelect);
667 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
669 refstr.Format("tvshowview.c%02d", VIDEODB_ID_TV_STATUS);
670 varstr = DatabaseUtils::GetField(FieldTvShowStatus, MediaTypeTvShow,
671 DatabaseQueryPartSelect);
672 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
674 refstr.Format("tvshowview.c%02d", VIDEODB_ID_TV_VOTES);
675 varstr = DatabaseUtils::GetField(FieldVotes, MediaTypeTvShow,
676 DatabaseQueryPartSelect);
677 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
679 refstr.Format("tvshowview.c%02d", VIDEODB_ID_TV_RATING);
680 varstr = DatabaseUtils::GetField(FieldRating, MediaTypeTvShow,
681 DatabaseQueryPartSelect);
682 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
684 refstr.Format("tvshowview.c%02d", VIDEODB_ID_TV_PREMIERED);
685 varstr = DatabaseUtils::GetField(FieldYear, MediaTypeTvShow,
686 DatabaseQueryPartSelect);
687 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
689 refstr.Format("tvshowview.c%02d", VIDEODB_ID_TV_GENRE);
690 varstr = DatabaseUtils::GetField(FieldGenre, MediaTypeTvShow,
691 DatabaseQueryPartSelect);
692 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
694 refstr.Format("tvshowview.c%02d", VIDEODB_ID_TV_MPAA);
695 varstr = DatabaseUtils::GetField(FieldMPAA, MediaTypeTvShow,
696 DatabaseQueryPartSelect);
697 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
699 refstr.Format("tvshowview.c%02d", VIDEODB_ID_TV_STUDIOS);
700 varstr = DatabaseUtils::GetField(FieldStudio, MediaTypeTvShow,
701 DatabaseQueryPartSelect);
702 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
704 refstr.Format("tvshowview.c%02d", VIDEODB_ID_TV_SORTTITLE);
705 varstr = DatabaseUtils::GetField(FieldSortTitle, MediaTypeTvShow,
706 DatabaseQueryPartSelect);
707 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
709 refstr = "tvshowview.strPath";
710 varstr = DatabaseUtils::GetField(FieldPath, MediaTypeTvShow,
711 DatabaseQueryPartSelect);
712 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
714 refstr = "tvshowview.dateAdded";
715 varstr = DatabaseUtils::GetField(FieldDateAdded, MediaTypeTvShow,
716 DatabaseQueryPartSelect);
717 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
719 refstr = "tvshowview.totalSeasons";
720 varstr = DatabaseUtils::GetField(FieldSeason, MediaTypeTvShow,
721 DatabaseQueryPartSelect);
722 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
724 refstr = "tvshowview.totalCount";
725 varstr = DatabaseUtils::GetField(FieldNumberOfEpisodes, MediaTypeTvShow,
726 DatabaseQueryPartSelect);
727 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
729 refstr = "tvshowview.watchedcount";
730 varstr = DatabaseUtils::GetField(FieldNumberOfWatchedEpisodes,
731 MediaTypeTvShow, DatabaseQueryPartSelect);
732 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
735 varstr = DatabaseUtils::GetField(FieldRandom, MediaTypeTvShow,
736 DatabaseQueryPartSelect);
737 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
740 TEST(TestDatabaseUtils, GetField_MediaTypeEpisode)
742 CStdString refstr, varstr;
744 refstr = "episodeview.idEpisode";
745 varstr = DatabaseUtils::GetField(FieldId, MediaTypeEpisode,
746 DatabaseQueryPartSelect);
747 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
749 refstr.Format("episodeview.c%02d", VIDEODB_ID_EPISODE_TITLE);
750 varstr = DatabaseUtils::GetField(FieldTitle, MediaTypeEpisode,
751 DatabaseQueryPartSelect);
752 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
754 refstr.Format("episodeview.c%02d", VIDEODB_ID_EPISODE_PLOT);
755 varstr = DatabaseUtils::GetField(FieldPlot, MediaTypeEpisode,
756 DatabaseQueryPartSelect);
757 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
759 refstr.Format("episodeview.c%02d", VIDEODB_ID_EPISODE_VOTES);
760 varstr = DatabaseUtils::GetField(FieldVotes, MediaTypeEpisode,
761 DatabaseQueryPartSelect);
762 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
764 refstr.Format("episodeview.c%02d", VIDEODB_ID_EPISODE_RATING);
765 varstr = DatabaseUtils::GetField(FieldRating, MediaTypeEpisode,
766 DatabaseQueryPartSelect);
767 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
769 refstr.Format("episodeview.c%02d", VIDEODB_ID_EPISODE_CREDITS);
770 varstr = DatabaseUtils::GetField(FieldWriter, MediaTypeEpisode,
771 DatabaseQueryPartSelect);
772 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
774 refstr.Format("episodeview.c%02d", VIDEODB_ID_EPISODE_AIRED);
775 varstr = DatabaseUtils::GetField(FieldAirDate, MediaTypeEpisode,
776 DatabaseQueryPartSelect);
777 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
779 refstr.Format("episodeview.c%02d", VIDEODB_ID_EPISODE_RUNTIME);
780 varstr = DatabaseUtils::GetField(FieldTime, MediaTypeEpisode,
781 DatabaseQueryPartSelect);
782 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
784 refstr.Format("episodeview.c%02d", VIDEODB_ID_EPISODE_DIRECTOR);
785 varstr = DatabaseUtils::GetField(FieldDirector, MediaTypeEpisode,
786 DatabaseQueryPartSelect);
787 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
789 refstr.Format("episodeview.c%02d", VIDEODB_ID_EPISODE_SEASON);
790 varstr = DatabaseUtils::GetField(FieldSeason, MediaTypeEpisode,
791 DatabaseQueryPartSelect);
792 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
794 refstr.Format("episodeview.c%02d", VIDEODB_ID_EPISODE_EPISODE);
795 varstr = DatabaseUtils::GetField(FieldEpisodeNumber, MediaTypeEpisode,
796 DatabaseQueryPartSelect);
797 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
799 refstr = "episodeview.strFilename";
800 varstr = DatabaseUtils::GetField(FieldFilename, MediaTypeEpisode,
801 DatabaseQueryPartSelect);
802 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
804 refstr = "episodeview.strPath";
805 varstr = DatabaseUtils::GetField(FieldPath, MediaTypeEpisode,
806 DatabaseQueryPartSelect);
807 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
809 refstr = "episodeview.playCount";
810 varstr = DatabaseUtils::GetField(FieldPlaycount, MediaTypeEpisode,
811 DatabaseQueryPartSelect);
812 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
814 refstr = "episodeview.lastPlayed";
815 varstr = DatabaseUtils::GetField(FieldLastPlayed, MediaTypeEpisode,
816 DatabaseQueryPartSelect);
817 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
819 refstr = "episodeview.dateAdded";
820 varstr = DatabaseUtils::GetField(FieldDateAdded, MediaTypeEpisode,
821 DatabaseQueryPartSelect);
822 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
824 refstr = "episodeview.strTitle";
825 varstr = DatabaseUtils::GetField(FieldTvShowTitle, MediaTypeEpisode,
826 DatabaseQueryPartSelect);
827 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
829 refstr = "episodeview.premiered";
830 varstr = DatabaseUtils::GetField(FieldYear, MediaTypeEpisode,
831 DatabaseQueryPartSelect);
832 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
834 refstr = "episodeview.mpaa";
835 varstr = DatabaseUtils::GetField(FieldMPAA, MediaTypeEpisode,
836 DatabaseQueryPartSelect);
837 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
839 refstr = "episodeview.strStudio";
840 varstr = DatabaseUtils::GetField(FieldStudio, MediaTypeEpisode,
841 DatabaseQueryPartSelect);
842 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
845 varstr = DatabaseUtils::GetField(FieldRandom, MediaTypeEpisode,
846 DatabaseQueryPartSelect);
847 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
850 TEST(TestDatabaseUtils, GetField_FieldRandom)
852 std::string refstr, varstr;
855 varstr = DatabaseUtils::GetField(FieldRandom, MediaTypeEpisode,
856 DatabaseQueryPartSelect);
857 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
860 varstr = DatabaseUtils::GetField(FieldRandom, MediaTypeEpisode,
861 DatabaseQueryPartWhere);
862 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
865 varstr = DatabaseUtils::GetField(FieldRandom, MediaTypeEpisode,
866 DatabaseQueryPartOrderBy);
867 EXPECT_STREQ(refstr.c_str(), varstr.c_str());
870 TEST(TestDatabaseUtils, GetFieldIndex_None)
872 int refindex, varindex;
875 varindex = DatabaseUtils::GetFieldIndex(FieldRandom, MediaTypeNone);
876 EXPECT_EQ(refindex, varindex);
878 varindex = DatabaseUtils::GetFieldIndex(FieldNone, MediaTypeAlbum);
879 EXPECT_EQ(refindex, varindex);
882 /* TODO: Should enums in CMusicDatabase be made public instead? */
883 TEST(TestDatabaseUtils, GetFieldIndex_MediaTypeAlbum)
885 int refindex, varindex;
886 TestDatabaseUtilsHelper a;
888 refindex = a.album_idAlbum;
889 varindex = DatabaseUtils::GetFieldIndex(FieldId, MediaTypeAlbum);
890 EXPECT_EQ(refindex, varindex);
892 refindex = a.album_strAlbum;
893 varindex = DatabaseUtils::GetFieldIndex(FieldAlbum, MediaTypeAlbum);
894 EXPECT_EQ(refindex, varindex);
896 refindex = a.album_strArtists;
897 varindex = DatabaseUtils::GetFieldIndex(FieldArtist, MediaTypeAlbum);
898 EXPECT_EQ(refindex, varindex);
900 refindex = a.album_strArtists;
901 varindex = DatabaseUtils::GetFieldIndex(FieldAlbumArtist, MediaTypeAlbum);
902 EXPECT_EQ(refindex, varindex);
904 refindex = a.album_strGenres;
905 varindex = DatabaseUtils::GetFieldIndex(FieldGenre, MediaTypeAlbum);
906 EXPECT_EQ(refindex, varindex);
908 refindex = a.album_iYear;
909 varindex = DatabaseUtils::GetFieldIndex(FieldYear, MediaTypeAlbum);
910 EXPECT_EQ(refindex, varindex);
912 refindex = a.album_strMoods;
913 varindex = DatabaseUtils::GetFieldIndex(FieldMoods, MediaTypeAlbum);
914 EXPECT_EQ(refindex, varindex);
916 refindex = a.album_strStyles;
917 varindex = DatabaseUtils::GetFieldIndex(FieldStyles, MediaTypeAlbum);
918 EXPECT_EQ(refindex, varindex);
920 refindex = a.album_strThemes;
921 varindex = DatabaseUtils::GetFieldIndex(FieldThemes, MediaTypeAlbum);
922 EXPECT_EQ(refindex, varindex);
924 refindex = a.album_strReview;
925 varindex = DatabaseUtils::GetFieldIndex(FieldReview, MediaTypeAlbum);
926 EXPECT_EQ(refindex, varindex);
928 refindex = a.album_strLabel;
929 varindex = DatabaseUtils::GetFieldIndex(FieldMusicLabel, MediaTypeAlbum);
930 EXPECT_EQ(refindex, varindex);
932 refindex = a.album_strType;
933 varindex = DatabaseUtils::GetFieldIndex(FieldAlbumType, MediaTypeAlbum);
934 EXPECT_EQ(refindex, varindex);
936 refindex = a.album_iRating;
937 varindex = DatabaseUtils::GetFieldIndex(FieldRating, MediaTypeAlbum);
938 EXPECT_EQ(refindex, varindex);
941 varindex = DatabaseUtils::GetFieldIndex(FieldRandom, MediaTypeAlbum);
942 EXPECT_EQ(refindex, varindex);
945 TEST(TestDatabaseUtils, GetFieldIndex_MediaTypeSong)
947 int refindex, varindex;
948 TestDatabaseUtilsHelper a;
950 refindex = a.song_idSong;
951 varindex = DatabaseUtils::GetFieldIndex(FieldId, MediaTypeSong);
952 EXPECT_EQ(refindex, varindex);
954 refindex = a.song_strTitle;
955 varindex = DatabaseUtils::GetFieldIndex(FieldTitle, MediaTypeSong);
956 EXPECT_EQ(refindex, varindex);
958 refindex = a.song_iTrack;
959 varindex = DatabaseUtils::GetFieldIndex(FieldTrackNumber, MediaTypeSong);
960 EXPECT_EQ(refindex, varindex);
962 refindex = a.song_iDuration;
963 varindex = DatabaseUtils::GetFieldIndex(FieldTime, MediaTypeSong);
964 EXPECT_EQ(refindex, varindex);
966 refindex = a.song_iYear;
967 varindex = DatabaseUtils::GetFieldIndex(FieldYear, MediaTypeSong);
968 EXPECT_EQ(refindex, varindex);
970 refindex = a.song_strFileName;
971 varindex = DatabaseUtils::GetFieldIndex(FieldFilename, MediaTypeSong);
972 EXPECT_EQ(refindex, varindex);
974 refindex = a.song_iTimesPlayed;
975 varindex = DatabaseUtils::GetFieldIndex(FieldPlaycount, MediaTypeSong);
976 EXPECT_EQ(refindex, varindex);
978 refindex = a.song_iStartOffset;
979 varindex = DatabaseUtils::GetFieldIndex(FieldStartOffset, MediaTypeSong);
980 EXPECT_EQ(refindex, varindex);
982 refindex = a.song_iEndOffset;
983 varindex = DatabaseUtils::GetFieldIndex(FieldEndOffset, MediaTypeSong);
984 EXPECT_EQ(refindex, varindex);
986 refindex = a.song_lastplayed;
987 varindex = DatabaseUtils::GetFieldIndex(FieldLastPlayed, MediaTypeSong);
988 EXPECT_EQ(refindex, varindex);
990 refindex = a.song_rating;
991 varindex = DatabaseUtils::GetFieldIndex(FieldRating, MediaTypeSong);
992 EXPECT_EQ(refindex, varindex);
994 refindex = a.song_comment;
995 varindex = DatabaseUtils::GetFieldIndex(FieldComment, MediaTypeSong);
996 EXPECT_EQ(refindex, varindex);
998 refindex = a.song_strAlbum;
999 varindex = DatabaseUtils::GetFieldIndex(FieldAlbum, MediaTypeSong);
1000 EXPECT_EQ(refindex, varindex);
1002 refindex = a.song_strPath;
1003 varindex = DatabaseUtils::GetFieldIndex(FieldPath, MediaTypeSong);
1004 EXPECT_EQ(refindex, varindex);
1006 refindex = a.song_strArtists;
1007 varindex = DatabaseUtils::GetFieldIndex(FieldArtist, MediaTypeSong);
1008 EXPECT_EQ(refindex, varindex);
1010 refindex = a.song_strGenres;
1011 varindex = DatabaseUtils::GetFieldIndex(FieldGenre, MediaTypeSong);
1012 EXPECT_EQ(refindex, varindex);
1015 varindex = DatabaseUtils::GetFieldIndex(FieldRandom, MediaTypeSong);
1016 EXPECT_EQ(refindex, varindex);
1019 TEST(TestDatabaseUtils, GetFieldIndex_MediaTypeMusicVideo)
1021 int refindex, varindex;
1024 varindex = DatabaseUtils::GetFieldIndex(FieldId, MediaTypeMusicVideo);
1025 EXPECT_EQ(refindex, varindex);
1027 refindex = VIDEODB_ID_MUSICVIDEO_TITLE + 2;
1028 varindex = DatabaseUtils::GetFieldIndex(FieldTitle, MediaTypeMusicVideo);
1029 EXPECT_EQ(refindex, varindex);
1031 refindex = VIDEODB_ID_MUSICVIDEO_RUNTIME + 2;
1032 varindex = DatabaseUtils::GetFieldIndex(FieldTime, MediaTypeMusicVideo);
1033 EXPECT_EQ(refindex, varindex);
1035 refindex = VIDEODB_ID_MUSICVIDEO_DIRECTOR + 2;
1036 varindex = DatabaseUtils::GetFieldIndex(FieldDirector, MediaTypeMusicVideo);
1037 EXPECT_EQ(refindex, varindex);
1039 refindex = VIDEODB_ID_MUSICVIDEO_STUDIOS + 2;
1040 varindex = DatabaseUtils::GetFieldIndex(FieldStudio, MediaTypeMusicVideo);
1041 EXPECT_EQ(refindex, varindex);
1043 refindex = VIDEODB_ID_MUSICVIDEO_YEAR + 2;
1044 varindex = DatabaseUtils::GetFieldIndex(FieldYear, MediaTypeMusicVideo);
1045 EXPECT_EQ(refindex, varindex);
1047 refindex = VIDEODB_ID_MUSICVIDEO_PLOT + 2;
1048 varindex = DatabaseUtils::GetFieldIndex(FieldPlot, MediaTypeMusicVideo);
1049 EXPECT_EQ(refindex, varindex);
1051 refindex = VIDEODB_ID_MUSICVIDEO_ALBUM + 2;
1052 varindex = DatabaseUtils::GetFieldIndex(FieldAlbum, MediaTypeMusicVideo);
1053 EXPECT_EQ(refindex, varindex);
1055 refindex = VIDEODB_ID_MUSICVIDEO_ARTIST + 2;
1056 varindex = DatabaseUtils::GetFieldIndex(FieldArtist, MediaTypeMusicVideo);
1057 EXPECT_EQ(refindex, varindex);
1059 refindex = VIDEODB_ID_MUSICVIDEO_GENRE + 2;
1060 varindex = DatabaseUtils::GetFieldIndex(FieldGenre, MediaTypeMusicVideo);
1061 EXPECT_EQ(refindex, varindex);
1063 refindex = VIDEODB_ID_MUSICVIDEO_TRACK + 2;
1064 varindex = DatabaseUtils::GetFieldIndex(FieldTrackNumber, MediaTypeMusicVideo);
1065 EXPECT_EQ(refindex, varindex);
1067 refindex = VIDEODB_DETAILS_MUSICVIDEO_FILE;
1068 varindex = DatabaseUtils::GetFieldIndex(FieldFilename, MediaTypeMusicVideo);
1069 EXPECT_EQ(refindex, varindex);
1071 refindex = VIDEODB_DETAILS_MUSICVIDEO_PATH;
1072 varindex = DatabaseUtils::GetFieldIndex(FieldPath, MediaTypeMusicVideo);
1073 EXPECT_EQ(refindex, varindex);
1075 refindex = VIDEODB_DETAILS_MUSICVIDEO_PLAYCOUNT;
1076 varindex = DatabaseUtils::GetFieldIndex(FieldPlaycount, MediaTypeMusicVideo);
1077 EXPECT_EQ(refindex, varindex);
1079 refindex = VIDEODB_DETAILS_MUSICVIDEO_LASTPLAYED;
1080 varindex = DatabaseUtils::GetFieldIndex(FieldLastPlayed, MediaTypeMusicVideo);
1081 EXPECT_EQ(refindex, varindex);
1083 refindex = VIDEODB_DETAILS_MUSICVIDEO_DATEADDED;
1084 varindex = DatabaseUtils::GetFieldIndex(FieldDateAdded, MediaTypeMusicVideo);
1085 EXPECT_EQ(refindex, varindex);
1088 varindex = DatabaseUtils::GetFieldIndex(FieldRandom, MediaTypeMusicVideo);
1089 EXPECT_EQ(refindex, varindex);
1092 TEST(TestDatabaseUtils, GetFieldIndex_MediaTypeMovie)
1094 int refindex, varindex;
1097 varindex = DatabaseUtils::GetFieldIndex(FieldId, MediaTypeMovie);
1098 EXPECT_EQ(refindex, varindex);
1100 refindex = VIDEODB_ID_TITLE + 2;
1101 varindex = DatabaseUtils::GetFieldIndex(FieldTitle, MediaTypeMovie);
1102 EXPECT_EQ(refindex, varindex);
1104 refindex = VIDEODB_ID_SORTTITLE + 2;
1105 varindex = DatabaseUtils::GetFieldIndex(FieldSortTitle, MediaTypeMovie);
1106 EXPECT_EQ(refindex, varindex);
1108 refindex = VIDEODB_ID_PLOT + 2;
1109 varindex = DatabaseUtils::GetFieldIndex(FieldPlot, MediaTypeMovie);
1110 EXPECT_EQ(refindex, varindex);
1112 refindex = VIDEODB_ID_PLOTOUTLINE + 2;
1113 varindex = DatabaseUtils::GetFieldIndex(FieldPlotOutline, MediaTypeMovie);
1114 EXPECT_EQ(refindex, varindex);
1116 refindex = VIDEODB_ID_TAGLINE + 2;
1117 varindex = DatabaseUtils::GetFieldIndex(FieldTagline, MediaTypeMovie);
1118 EXPECT_EQ(refindex, varindex);
1120 refindex = VIDEODB_ID_VOTES + 2;
1121 varindex = DatabaseUtils::GetFieldIndex(FieldVotes, MediaTypeMovie);
1122 EXPECT_EQ(refindex, varindex);
1124 refindex = VIDEODB_ID_RATING + 2;
1125 varindex = DatabaseUtils::GetFieldIndex(FieldRating, MediaTypeMovie);
1126 EXPECT_EQ(refindex, varindex);
1128 refindex = VIDEODB_ID_CREDITS + 2;
1129 varindex = DatabaseUtils::GetFieldIndex(FieldWriter, MediaTypeMovie);
1130 EXPECT_EQ(refindex, varindex);
1132 refindex = VIDEODB_ID_YEAR + 2;
1133 varindex = DatabaseUtils::GetFieldIndex(FieldYear, MediaTypeMovie);
1134 EXPECT_EQ(refindex, varindex);
1136 refindex = VIDEODB_ID_RUNTIME + 2;
1137 varindex = DatabaseUtils::GetFieldIndex(FieldTime, MediaTypeMovie);
1138 EXPECT_EQ(refindex, varindex);
1140 refindex = VIDEODB_ID_MPAA + 2;
1141 varindex = DatabaseUtils::GetFieldIndex(FieldMPAA, MediaTypeMovie);
1142 EXPECT_EQ(refindex, varindex);
1144 refindex = VIDEODB_ID_TOP250 + 2;
1145 varindex = DatabaseUtils::GetFieldIndex(FieldTop250, MediaTypeMovie);
1146 EXPECT_EQ(refindex, varindex);
1148 refindex = VIDEODB_ID_GENRE + 2;
1149 varindex = DatabaseUtils::GetFieldIndex(FieldGenre, MediaTypeMovie);
1150 EXPECT_EQ(refindex, varindex);
1152 refindex = VIDEODB_ID_DIRECTOR + 2;
1153 varindex = DatabaseUtils::GetFieldIndex(FieldDirector, MediaTypeMovie);
1154 EXPECT_EQ(refindex, varindex);
1156 refindex = VIDEODB_ID_STUDIOS + 2;
1157 varindex = DatabaseUtils::GetFieldIndex(FieldStudio, MediaTypeMovie);
1158 EXPECT_EQ(refindex, varindex);
1160 refindex = VIDEODB_ID_TRAILER + 2;
1161 varindex = DatabaseUtils::GetFieldIndex(FieldTrailer, MediaTypeMovie);
1162 EXPECT_EQ(refindex, varindex);
1164 refindex = VIDEODB_ID_COUNTRY + 2;
1165 varindex = DatabaseUtils::GetFieldIndex(FieldCountry, MediaTypeMovie);
1166 EXPECT_EQ(refindex, varindex);
1168 refindex = VIDEODB_DETAILS_MOVIE_FILE + 2;
1169 varindex = DatabaseUtils::GetFieldIndex(FieldFilename, MediaTypeMovie);
1170 EXPECT_EQ(refindex, varindex);
1172 refindex = VIDEODB_DETAILS_MOVIE_PATH;
1173 varindex = DatabaseUtils::GetFieldIndex(FieldPath, MediaTypeMovie);
1174 EXPECT_EQ(refindex, varindex);
1176 refindex = VIDEODB_DETAILS_MOVIE_PLAYCOUNT;
1177 varindex = DatabaseUtils::GetFieldIndex(FieldPlaycount, MediaTypeMovie);
1178 EXPECT_EQ(refindex, varindex);
1180 refindex = VIDEODB_DETAILS_MOVIE_LASTPLAYED;
1181 varindex = DatabaseUtils::GetFieldIndex(FieldLastPlayed, MediaTypeMovie);
1182 EXPECT_EQ(refindex, varindex);
1184 refindex = VIDEODB_DETAILS_MOVIE_DATEADDED;
1185 varindex = DatabaseUtils::GetFieldIndex(FieldDateAdded, MediaTypeMovie);
1186 EXPECT_EQ(refindex, varindex);
1189 varindex = DatabaseUtils::GetFieldIndex(FieldRandom, MediaTypeMovie);
1190 EXPECT_EQ(refindex, varindex);
1193 TEST(TestDatabaseUtils, GetFieldIndex_MediaTypeTvShow)
1195 int refindex, varindex;
1198 varindex = DatabaseUtils::GetFieldIndex(FieldId, MediaTypeTvShow);
1199 EXPECT_EQ(refindex, varindex);
1201 refindex = VIDEODB_ID_TV_TITLE + 1;
1202 varindex = DatabaseUtils::GetFieldIndex(FieldTitle, MediaTypeTvShow);
1203 EXPECT_EQ(refindex, varindex);
1205 refindex = VIDEODB_ID_TV_SORTTITLE + 1;
1206 varindex = DatabaseUtils::GetFieldIndex(FieldSortTitle, MediaTypeTvShow);
1207 EXPECT_EQ(refindex, varindex);
1209 refindex = VIDEODB_ID_TV_PLOT + 1;
1210 varindex = DatabaseUtils::GetFieldIndex(FieldPlot, MediaTypeTvShow);
1211 EXPECT_EQ(refindex, varindex);
1213 refindex = VIDEODB_ID_TV_STATUS + 1;
1214 varindex = DatabaseUtils::GetFieldIndex(FieldTvShowStatus, MediaTypeTvShow);
1215 EXPECT_EQ(refindex, varindex);
1217 refindex = VIDEODB_ID_TV_VOTES + 1;
1218 varindex = DatabaseUtils::GetFieldIndex(FieldVotes, MediaTypeTvShow);
1219 EXPECT_EQ(refindex, varindex);
1221 refindex = VIDEODB_ID_TV_RATING + 1;
1222 varindex = DatabaseUtils::GetFieldIndex(FieldRating, MediaTypeTvShow);
1223 EXPECT_EQ(refindex, varindex);
1225 refindex = VIDEODB_ID_TV_PREMIERED + 1;
1226 varindex = DatabaseUtils::GetFieldIndex(FieldYear, MediaTypeTvShow);
1227 EXPECT_EQ(refindex, varindex);
1229 refindex = VIDEODB_ID_TV_GENRE + 1;
1230 varindex = DatabaseUtils::GetFieldIndex(FieldGenre, MediaTypeTvShow);
1231 EXPECT_EQ(refindex, varindex);
1233 refindex = VIDEODB_ID_TV_MPAA + 1;
1234 varindex = DatabaseUtils::GetFieldIndex(FieldMPAA, MediaTypeTvShow);
1235 EXPECT_EQ(refindex, varindex);
1237 refindex = VIDEODB_ID_TV_STUDIOS + 1;
1238 varindex = DatabaseUtils::GetFieldIndex(FieldStudio, MediaTypeTvShow);
1239 EXPECT_EQ(refindex, varindex);
1241 refindex = VIDEODB_DETAILS_TVSHOW_PATH;
1242 varindex = DatabaseUtils::GetFieldIndex(FieldPath, MediaTypeTvShow);
1243 EXPECT_EQ(refindex, varindex);
1245 refindex = VIDEODB_DETAILS_TVSHOW_DATEADDED;
1246 varindex = DatabaseUtils::GetFieldIndex(FieldDateAdded, MediaTypeTvShow);
1247 EXPECT_EQ(refindex, varindex);
1249 refindex = VIDEODB_DETAILS_TVSHOW_NUM_EPISODES;
1250 varindex = DatabaseUtils::GetFieldIndex(FieldNumberOfEpisodes, MediaTypeTvShow);
1251 EXPECT_EQ(refindex, varindex);
1253 refindex = VIDEODB_DETAILS_TVSHOW_NUM_WATCHED;
1254 varindex = DatabaseUtils::GetFieldIndex(FieldNumberOfWatchedEpisodes, MediaTypeTvShow);
1255 EXPECT_EQ(refindex, varindex);
1257 refindex = VIDEODB_DETAILS_TVSHOW_NUM_SEASONS;
1258 varindex = DatabaseUtils::GetFieldIndex(FieldSeason, MediaTypeTvShow);
1259 EXPECT_EQ(refindex, varindex);
1262 varindex = DatabaseUtils::GetFieldIndex(FieldRandom, MediaTypeTvShow);
1263 EXPECT_EQ(refindex, varindex);
1266 TEST(TestDatabaseUtils, GetFieldIndex_MediaTypeEpisode)
1268 int refindex, varindex;
1271 varindex = DatabaseUtils::GetFieldIndex(FieldId, MediaTypeEpisode);
1272 EXPECT_EQ(refindex, varindex);
1274 refindex = VIDEODB_ID_EPISODE_TITLE + 2;
1275 varindex = DatabaseUtils::GetFieldIndex(FieldTitle, MediaTypeEpisode);
1276 EXPECT_EQ(refindex, varindex);
1278 refindex = VIDEODB_ID_EPISODE_PLOT + 2;
1279 varindex = DatabaseUtils::GetFieldIndex(FieldPlot, MediaTypeEpisode);
1280 EXPECT_EQ(refindex, varindex);
1282 refindex = VIDEODB_ID_EPISODE_VOTES + 2;
1283 varindex = DatabaseUtils::GetFieldIndex(FieldVotes, MediaTypeEpisode);
1284 EXPECT_EQ(refindex, varindex);
1286 refindex = VIDEODB_ID_EPISODE_RATING + 2;
1287 varindex = DatabaseUtils::GetFieldIndex(FieldRating, MediaTypeEpisode);
1288 EXPECT_EQ(refindex, varindex);
1290 refindex = VIDEODB_ID_EPISODE_CREDITS + 2;
1291 varindex = DatabaseUtils::GetFieldIndex(FieldWriter, MediaTypeEpisode);
1292 EXPECT_EQ(refindex, varindex);
1294 refindex = VIDEODB_ID_EPISODE_AIRED + 2;
1295 varindex = DatabaseUtils::GetFieldIndex(FieldAirDate, MediaTypeEpisode);
1296 EXPECT_EQ(refindex, varindex);
1298 refindex = VIDEODB_ID_EPISODE_RUNTIME + 2;
1299 varindex = DatabaseUtils::GetFieldIndex(FieldTime, MediaTypeEpisode);
1300 EXPECT_EQ(refindex, varindex);
1302 refindex = VIDEODB_ID_EPISODE_DIRECTOR + 2;
1303 varindex = DatabaseUtils::GetFieldIndex(FieldDirector, MediaTypeEpisode);
1304 EXPECT_EQ(refindex, varindex);
1306 refindex = VIDEODB_ID_EPISODE_SEASON + 2;
1307 varindex = DatabaseUtils::GetFieldIndex(FieldSeason, MediaTypeEpisode);
1308 EXPECT_EQ(refindex, varindex);
1310 refindex = VIDEODB_ID_EPISODE_EPISODE + 2;
1311 varindex = DatabaseUtils::GetFieldIndex(FieldEpisodeNumber, MediaTypeEpisode);
1312 EXPECT_EQ(refindex, varindex);
1314 refindex = VIDEODB_DETAILS_EPISODE_FILE;
1315 varindex = DatabaseUtils::GetFieldIndex(FieldFilename, MediaTypeEpisode);
1316 EXPECT_EQ(refindex, varindex);
1318 refindex = VIDEODB_DETAILS_EPISODE_PATH;
1319 varindex = DatabaseUtils::GetFieldIndex(FieldPath, MediaTypeEpisode);
1320 EXPECT_EQ(refindex, varindex);
1322 refindex = VIDEODB_DETAILS_EPISODE_PLAYCOUNT;
1323 varindex = DatabaseUtils::GetFieldIndex(FieldPlaycount, MediaTypeEpisode);
1324 EXPECT_EQ(refindex, varindex);
1326 refindex = VIDEODB_DETAILS_EPISODE_LASTPLAYED;
1327 varindex = DatabaseUtils::GetFieldIndex(FieldLastPlayed, MediaTypeEpisode);
1328 EXPECT_EQ(refindex, varindex);
1330 refindex = VIDEODB_DETAILS_EPISODE_DATEADDED;
1331 varindex = DatabaseUtils::GetFieldIndex(FieldDateAdded, MediaTypeEpisode);
1332 EXPECT_EQ(refindex, varindex);
1334 refindex = VIDEODB_DETAILS_EPISODE_TVSHOW_NAME;
1335 varindex = DatabaseUtils::GetFieldIndex(FieldTvShowTitle, MediaTypeEpisode);
1336 EXPECT_EQ(refindex, varindex);
1338 refindex = VIDEODB_DETAILS_EPISODE_TVSHOW_STUDIO;
1339 varindex = DatabaseUtils::GetFieldIndex(FieldStudio, MediaTypeEpisode);
1340 EXPECT_EQ(refindex, varindex);
1342 refindex = VIDEODB_DETAILS_EPISODE_TVSHOW_AIRED;
1343 varindex = DatabaseUtils::GetFieldIndex(FieldYear, MediaTypeEpisode);
1344 EXPECT_EQ(refindex, varindex);
1346 refindex = VIDEODB_DETAILS_EPISODE_TVSHOW_MPAA;
1347 varindex = DatabaseUtils::GetFieldIndex(FieldMPAA, MediaTypeEpisode);
1348 EXPECT_EQ(refindex, varindex);
1351 varindex = DatabaseUtils::GetFieldIndex(FieldRandom, MediaTypeEpisode);
1352 EXPECT_EQ(refindex, varindex);
1355 TEST(TestDatabaseUtils, GetSelectFields)
1358 FieldList fieldlist;
1360 EXPECT_FALSE(DatabaseUtils::GetSelectFields(fields, MediaTypeAlbum,
1363 fields.insert(FieldId);
1364 fields.insert(FieldGenre);
1365 fields.insert(FieldAlbum);
1366 fields.insert(FieldArtist);
1367 fields.insert(FieldTitle);
1368 EXPECT_FALSE(DatabaseUtils::GetSelectFields(fields, MediaTypeNone,
1370 EXPECT_TRUE(DatabaseUtils::GetSelectFields(fields, MediaTypeAlbum,
1372 EXPECT_FALSE(fieldlist.empty());
1375 TEST(TestDatabaseUtils, GetFieldValue)
1377 CVariant v_null, v_string;
1378 dbiplus::field_value f_null, f_string("test");
1380 f_null.set_isNull();
1381 EXPECT_TRUE(DatabaseUtils::GetFieldValue(f_null, v_null));
1382 EXPECT_TRUE(v_null.isNull());
1384 EXPECT_TRUE(DatabaseUtils::GetFieldValue(f_string, v_string));
1385 EXPECT_FALSE(v_string.isNull());
1386 EXPECT_TRUE(v_string.isString());
1389 /* TODO: Need some way to test this function */
1390 // TEST(TestDatabaseUtils, GetDatabaseResults)
1392 // static bool GetDatabaseResults(MediaType mediaType, const FieldList &fields,
1393 // const std::auto_ptr<dbiplus::Dataset> &dataset,
1394 // DatabaseResults &results);
1397 TEST(TestDatabaseUtils, BuildLimitClause)
1399 std::string a = DatabaseUtils::BuildLimitClause(100);
1400 EXPECT_STREQ(" LIMIT 100", a.c_str());
1403 // class DatabaseUtils
1408 // static std::string BuildLimitClause(int end, int start = 0);