File: version.cpp

package info (click to toggle)
mkvtoolnix 97.0-1
  • links: PTS
  • area: main
  • in suites: forky, sid
  • size: 60,284 kB
  • sloc: cpp: 217,034; ruby: 11,453; xml: 8,125; ansic: 6,885; sh: 5,274; python: 1,041; perl: 191; makefile: 113; awk: 16; javascript: 4
file content (149 lines) | stat: -rw-r--r-- 6,344 bytes parent folder | download | duplicates (3)
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
137
138
139
140
141
142
143
144
145
146
147
148
149
#include "common/common_pch.h"

#include "common/version.h"

#include "tests/unit/init.h"

namespace {

TEST(VersionNumberT, Parsing11) {
  version_number_t v{"11"};

  ASSERT_TRUE(v.valid);
  ASSERT_EQ(1,  v.parts.size());
  EXPECT_EQ(11, v.parts[0]);
  EXPECT_EQ(0,  v.build);
}

TEST(VersionNumberT, Parsing11_12) {
  version_number_t v{"11.12"};

  ASSERT_TRUE(v.valid);
  ASSERT_EQ(2,  v.parts.size());
  EXPECT_EQ(11, v.parts[0]);
  EXPECT_EQ(12, v.parts[1]);
}

TEST(VersionNumberT, Parsing1_2_3_4) {
  version_number_t v{"1.2.3.4"};

  ASSERT_TRUE(v.valid);
  ASSERT_EQ(4, v.parts.size());
  EXPECT_EQ(1, v.parts[0]);
  EXPECT_EQ(2, v.parts[1]);
  EXPECT_EQ(3, v.parts[2]);
  EXPECT_EQ(4, v.parts[3]);
  EXPECT_EQ(0, v.build);
}

TEST(VersionNumberT, Parsing1_2_3_4_build_9876) {
  version_number_t v{"1.2.3.4 build 9876"};

  ASSERT_TRUE(v.valid);
  ASSERT_EQ(4,    v.parts.size());
  EXPECT_EQ(1,    v.parts[0]);
  EXPECT_EQ(2,    v.parts[1]);
  EXPECT_EQ(3,    v.parts[2]);
  EXPECT_EQ(4,    v.parts[3]);
  EXPECT_EQ(9876, v.build);
}

TEST(VersionNumberT, Parsing11_build_456) {
  version_number_t v{"11 build 456"};

  ASSERT_TRUE(v.valid);
  ASSERT_EQ(1,   v.parts.size());
  EXPECT_EQ(11,  v.parts[0]);
  EXPECT_EQ(456, v.build);
}

TEST(VersionNumberT, Parsing_mkvmerge_v1_2_3) {
  version_number_t v{"mkvmerge v1.2.3"};

  ASSERT_TRUE(v.valid);
  ASSERT_EQ(3, v.parts.size());
  EXPECT_EQ(1, v.parts[0]);
  EXPECT_EQ(2, v.parts[1]);
  EXPECT_EQ(3, v.parts[2]);
  EXPECT_EQ(0, v.build);
}

TEST(VersionNumberT, Parsing_11_12_13_build20170422_123) {
  version_number_t v{"11.12.13-build20170422-123"};

  ASSERT_TRUE(v.valid);
  ASSERT_EQ(3,   v.parts.size());
  EXPECT_EQ(11,  v.parts[0]);
  EXPECT_EQ(12,  v.parts[1]);
  EXPECT_EQ(13,  v.parts[2]);
  EXPECT_EQ(123, v.build);
}

TEST(VersionNumberT, ParsingInvalid) {
  EXPECT_FALSE(version_number_t{}.valid);
  EXPECT_FALSE(version_number_t{""}.valid);
  EXPECT_FALSE(version_number_t{"11 12"}.valid);
  EXPECT_FALSE(version_number_t{"11 qwe 12"}.valid);
}

TEST(VersionNumberT, Compare) {
  EXPECT_EQ(0, version_number_t{"1.2.3"}         .compare(version_number_t{"1.2.3"}));
  EXPECT_EQ(0, version_number_t{"1.2.3.0"}       .compare(version_number_t{"1.2.3"}));
  EXPECT_EQ(0, version_number_t{"1.2.3"}         .compare(version_number_t{"1.2.3.0"}));
  EXPECT_EQ(0, version_number_t{"1.2.3"}         .compare(version_number_t{"1.2.3 build 0"}));
  EXPECT_EQ(0, version_number_t{"1.2.3.0"}       .compare(version_number_t{"1.2.3 build 0"}));
  EXPECT_EQ(0, version_number_t{"11"}            .compare(version_number_t{"11.0.0.0"}));

  EXPECT_EQ(1, version_number_t{"1.2.3"}         .compare(version_number_t{"1.0.0"}));
  EXPECT_EQ(1, version_number_t{"1.2.4"}         .compare(version_number_t{"1.2.3.9"}));
  EXPECT_EQ(1, version_number_t{"1.2.10"}        .compare(version_number_t{"1.2.9"}));
  EXPECT_EQ(1, version_number_t{"1.2.3 build 1"} .compare(version_number_t{"1.2.3"}));
  EXPECT_EQ(1, version_number_t{"1.2.3 build 10"}.compare(version_number_t{"1.2.3 build 9"}));
  EXPECT_EQ(1, version_number_t{"11"}            .compare(version_number_t{"9.9.9"}));

  EXPECT_EQ(-1, version_number_t{"1.0.0"}        .compare(version_number_t{"1.2.3"}));
  EXPECT_EQ(-1, version_number_t{"1.2.3.9"}      .compare(version_number_t{"1.2.4"}));
  EXPECT_EQ(-1, version_number_t{"1.2.9"}        .compare(version_number_t{"1.2.10"}));
  EXPECT_EQ(-1, version_number_t{"1.2.3"}        .compare(version_number_t{"1.2.3 build 1"}));
  EXPECT_EQ(-1, version_number_t{"1.2.3 build 9"}.compare(version_number_t{"1.2.3 build 10"}));
  EXPECT_EQ(-1, version_number_t{"9.9.9"}        .compare(version_number_t{"11"}));
}

TEST(VersionNumberT, LessThan) {
  EXPECT_FALSE(version_number_t{"1.2.3"}          < version_number_t{"1.2.3"});
  EXPECT_FALSE(version_number_t{"1.2.3.0"}        < version_number_t{"1.2.3"});
  EXPECT_FALSE(version_number_t{"1.2.3"}          < version_number_t{"1.2.3.0"});
  EXPECT_FALSE(version_number_t{"1.2.3"}          < version_number_t{"1.2.3 build 0"});
  EXPECT_FALSE(version_number_t{"1.2.3.0"}        < version_number_t{"1.2.3 build 0"});
  EXPECT_FALSE(version_number_t{"11"}             < version_number_t{"11.0.0.0"});

  EXPECT_FALSE(version_number_t{"1.2.3"}          < version_number_t{"1.0.0"});
  EXPECT_FALSE(version_number_t{"1.2.4"}          < version_number_t{"1.2.3.9"});
  EXPECT_FALSE(version_number_t{"1.2.10"}         < version_number_t{"1.2.9"});
  EXPECT_FALSE(version_number_t{"1.2.3 build 1"}  < version_number_t{"1.2.3"});
  EXPECT_FALSE(version_number_t{"1.2.3 build 10"} < version_number_t{"1.2.3 build 9"});
  EXPECT_FALSE(version_number_t{"11"}             < version_number_t{"9.9.9"});

  EXPECT_TRUE(version_number_t{"1.0.0"}           < version_number_t{"1.2.3"});
  EXPECT_TRUE(version_number_t{"1.2.3.9"}         < version_number_t{"1.2.4"});
  EXPECT_TRUE(version_number_t{"1.2.9"}           < version_number_t{"1.2.10"});
  EXPECT_TRUE(version_number_t{"1.2.3"}           < version_number_t{"1.2.3 build 1"});
  EXPECT_TRUE(version_number_t{"1.2.3 build 9"}   < version_number_t{"1.2.3 build 10"});
  EXPECT_TRUE(version_number_t{"9.9.9"}           < version_number_t{"11"});
}

TEST(VersionNumberT, Stringification) {
  EXPECT_EQ("<invalid>"s,       version_number_t{}                                   .to_string());
  EXPECT_EQ("<invalid>"s,       version_number_t{""}                                 .to_string());
  EXPECT_EQ("1.2.3"s,           version_number_t{"1.2.3"}                            .to_string());
  EXPECT_EQ("1.2.3.0"s,         version_number_t{"1.2.3.0"}                          .to_string());
  EXPECT_EQ("1.2.3.0"s,         version_number_t{"1.2.3.0 build 0"}                  .to_string());
  EXPECT_EQ("1.2.3.4"s,         version_number_t{"1.2.3.4"}                          .to_string());
  EXPECT_EQ("1.2.3 build 5"s,   version_number_t{"1.2.3 build 5"}                    .to_string());
  EXPECT_EQ("1.2.3.0 build 5"s, version_number_t{"1.2.3.0 build 5"}                  .to_string());
  EXPECT_EQ("1.2.3.0 build 5"s, version_number_t{"mkvmerge v1.2.3.0-build20170422-5"}.to_string());
  EXPECT_EQ("11"s,              version_number_t{"11"}                               .to_string());
  EXPECT_EQ("11 build 1213"s,   version_number_t{"11 build 1213"}                    .to_string());
}

}