File: Profiles.cpp

package info (click to toggle)
libopenshot 0.3.3%2Bdfsg1-2
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 29,268 kB
  • sloc: cpp: 26,779; python: 92; makefile: 18; ruby: 5; sh: 2
file content (136 lines) | stat: -rw-r--r-- 3,592 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
/**
 * @file
 * @brief Unit tests for openshot::Profile
 * @author Jonathan Thomas <jonathan@openshot.org>
 *
 * @ref License
 */

// Copyright (c) 2008-2023 OpenShot Studios, LLC
//
// SPDX-License-Identifier: LGPL-3.0-or-later

#include "openshot_catch.h"


#include "Profiles.h"

TEST_CASE( "empty constructor", "[libopenshot][profile]" )
{
    openshot::Profile p1;

    // Default values
    CHECK(p1.info.width == 0);
    CHECK(p1.info.height == 0);
    CHECK(p1.info.fps.num == 0);
    CHECK(p1.info.fps.den == 0);
    CHECK(p1.info.display_ratio.num == 0);
    CHECK(p1.info.display_ratio.den == 0);
    CHECK(p1.info.pixel_ratio.num == 0);
    CHECK(p1.info.pixel_ratio.den == 0);
    CHECK(p1.info.interlaced_frame == false);

}

TEST_CASE( "constructor with example profiles", "[libopenshot][profile]" )
{
    std::stringstream profile1;
    profile1 << TEST_MEDIA_PATH << "example_profile1";

	openshot::Profile p1(profile1.str());

	// Default values
	CHECK(p1.info.width == 1280);
    CHECK(p1.info.height == 720);
    CHECK(p1.info.fps.num == 24);
    CHECK(p1.info.fps.den == 1);
    CHECK(p1.info.display_ratio.num == 16);
    CHECK(p1.info.display_ratio.den == 9);
    CHECK(p1.info.pixel_ratio.num == 1);
    CHECK(p1.info.pixel_ratio.den == 1);
    CHECK(p1.info.interlaced_frame == false);

    std::stringstream profile2;
    profile2 << TEST_MEDIA_PATH << "example_profile2";

    openshot::Profile p2(profile2.str());

    // Default values
    CHECK(p2.info.width == 1920);
    CHECK(p2.info.height == 1080);
    CHECK(p2.info.fps.num == 30000);
    CHECK(p2.info.fps.den == 1001);
    CHECK(p2.info.display_ratio.num == 16);
    CHECK(p2.info.display_ratio.den == 9);
    CHECK(p2.info.pixel_ratio.num == 1);
    CHECK(p2.info.pixel_ratio.den == 1);
    CHECK(p2.info.interlaced_frame == true);
}

TEST_CASE( "24 fps names", "[libopenshot][profile]" )
{
    std::stringstream path;
    path << TEST_MEDIA_PATH << "example_profile1";

    openshot::Profile p(path.str());

    // Default values
    CHECK(p.Key() == "01280x0720p0024_16-09");
    CHECK(p.ShortName() == "1280x720p24");
    CHECK(p.LongName() == "1280x720p @ 24 fps (16:9)");
    CHECK(p.LongNameWithDesc() == "1280x720p @ 24 fps (16:9) HD 720p 24 fps");
}

TEST_CASE( "29.97 fps names", "[libopenshot][profile]" )
{
    std::stringstream path;
    path << TEST_MEDIA_PATH << "example_profile2";

    openshot::Profile p(path.str());

    // Default values
    CHECK(p.Key() == "01920x1080i2997_16-09");
    CHECK(p.ShortName() == "1920x1080i29.97");
    CHECK(p.LongName() == "1920x1080i @ 29.97 fps (16:9)");
    CHECK(p.LongNameWithDesc() == "1920x1080i @ 29.97 fps (16:9) HD 1080i 29.97 fps");
}

TEST_CASE( "compare profiles", "[libopenshot][profile]" )
{
    // 720p24
    std::stringstream profile1;
    profile1 << TEST_MEDIA_PATH << "example_profile1";
    openshot::Profile p1(profile1.str());

    // 720p24 (copy)
    openshot::Profile p1copy(profile1.str());

    // 1080i2997
    std::stringstream profile2;
    profile2 << TEST_MEDIA_PATH << "example_profile2";
    openshot::Profile p2(profile2.str());

    // 1080i2997 (copy)
    openshot::Profile p2copy(profile2.str());

    CHECK(p1 < p2);
    CHECK(p2 > p1);
    CHECK(p1 == p1copy);
    CHECK(p2 == p2copy);

    // 720p60
    openshot::Profile p3(profile1.str());
    p3.info.fps.num = 60;

    CHECK(p1 < p3);
    CHECK_FALSE(p1 == p3);

    // 72024, DAR: 4:3
    p3.info.fps.num = 24;
    p3.info.display_ratio.num = 4;
    p3.info.display_ratio.den = 3;

    CHECK(p1 > p3);
    CHECK(p3 < p1);
    CHECK_FALSE(p1 == p3);
}