MediaTests.cpp 3.6 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/*****************************************************************************
 * Media Library
 *****************************************************************************
 * Copyright (C) 2015 Hugo Beauzée-Luyssen, Videolabs
 *
 * Authors: Hugo Beauzée-Luyssen<hugo@beauzee.fr>
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation; either version 2.1 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
 *****************************************************************************/

23
#include "Tests.h"
24
25

#include "IMediaLibrary.h"
26
#include "File.h"
27
#include "Media.h"
28
29
30
#include "Artist.h"
#include "Album.h"
#include "AlbumTrack.h"
31

32
class Medias : public Tests
33
34
35
36
{
};


37
TEST_F( Medias, Init )
38
39
40
41
{
    // only test for correct test fixture behavior
}

42
TEST_F( Medias, Create )
43
{
44
45
46
47
48
49
50
51
    auto m = ml->addFile( "media.avi" );
    ASSERT_NE( m, nullptr );

    ASSERT_EQ( m->playCount(), 0 );
    ASSERT_EQ( m->albumTrack(), nullptr );
    ASSERT_EQ( m->showEpisode(), nullptr );
    ASSERT_EQ( m->duration(), -1 );
    ASSERT_NE( 0u, m->insertionDate() );
52
53
}

54
TEST_F( Medias, Fetch )
55
{
56
    auto f = ml->addFile( "media.avi" );
57
58
    auto f2 = ml->media( f->id() );
    ASSERT_EQ( f->id(), f2->id() );
59
    ASSERT_EQ( f, f2 );
60
61

    // Flush cache and fetch from DB
62
    Reload();
63

64
    f2 = std::static_pointer_cast<Media>( ml->media( f->id() ) );
65
    ASSERT_EQ( f->id(), f2->id() );
66
}
67

68
TEST_F( Medias, Duration )
69
{
70
    auto f = ml->addFile( "media.avi" );
71
    ASSERT_EQ( f->duration(), -1 );
72

73
74
75
76
    // Use a value that checks we're using a 64bits value
    int64_t d = int64_t(1) << 40;

    f->setDuration( d );
77
    f->save();
78
    ASSERT_EQ( f->duration(), d );
79
80
81

    Reload();

82
    auto f2 = ml->media( f->id() );
83
    ASSERT_EQ( f2->duration(), d );
84
}
85

Hugo Beauzée-Luyssen's avatar
Hugo Beauzée-Luyssen committed
86
TEST_F( Medias, Thumbnail )
87
{
88
    auto f = ml->addFile( "media.avi" );
Hugo Beauzée-Luyssen's avatar
Hugo Beauzée-Luyssen committed
89
    ASSERT_EQ( f->thumbnail(), "" );
90

Hugo Beauzée-Luyssen's avatar
Hugo Beauzée-Luyssen committed
91
    std::string newThumbnail( "/path/to/thumbnail" );
92

Hugo Beauzée-Luyssen's avatar
Hugo Beauzée-Luyssen committed
93
    f->setThumbnail( newThumbnail );
94
    f->save();
Hugo Beauzée-Luyssen's avatar
Hugo Beauzée-Luyssen committed
95
    ASSERT_EQ( f->thumbnail(), newThumbnail );
96
97
98

    Reload();

99
    auto f2 = ml->media( f->id() );
Hugo Beauzée-Luyssen's avatar
Hugo Beauzée-Luyssen committed
100
    ASSERT_EQ( f2->thumbnail(), newThumbnail );
101
}
102
103
104

TEST_F( Medias, PlayCount )
{
105
    auto f = ml->addFile( "media.avi" );
106
107
108
109
110
111
112
    ASSERT_EQ( 0, f->playCount() );
    f->increasePlayCount();
    ASSERT_EQ( 1, f->playCount() );
    f->save();

    Reload();

113
    f = std::static_pointer_cast<Media>( ml->media( f->id() ) );
114
115
    ASSERT_EQ( 1, f->playCount() );
}
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146

TEST_F( Medias, Progress )
{
    auto f = ml->addFile( "media.avi" );
    ASSERT_EQ( .0f, f->progress() );
    f->setProgress( 123.0f );
    // Check that a non-sensical value is ignored
    ASSERT_EQ( .0f, f->progress() );
    f->setProgress( 0.666f );
    ASSERT_EQ( .666f, f->progress() );
    f->save();

    Reload();

    f = ml->media( f->id() );
    ASSERT_EQ( .666f, f->progress() );
}

TEST_F( Medias, Rating )
{
    auto f = ml->addFile( "media.avi" );
    ASSERT_EQ( -1, f->rating() );
    f->setRating( 12345 );
    f->save();
    ASSERT_EQ( 12345, f->rating() );

    Reload();

    f = ml->media( f->id() );
    ASSERT_EQ( 12345, f->rating() );
}