Add tests for agi::keyframe

Originally committed to SVN as r5074.
This commit is contained in:
Thomas Goyne 2010-12-31 21:02:31 +00:00
parent edff7d6a2d
commit 7c2e4e5115
10 changed files with 44585 additions and 1 deletions

View file

@ -310,6 +310,10 @@
RelativePath="..\..\tests\libaegisub_iconv.cpp" RelativePath="..\..\tests\libaegisub_iconv.cpp"
> >
</File> </File>
<File
RelativePath="..\..\tests\libaegisub_keyframe.cpp"
>
</File>
<File <File
RelativePath="..\..\tests\libaegisub_line_iterator.cpp" RelativePath="..\..\tests\libaegisub_line_iterator.cpp"
> >

View file

@ -20,6 +20,7 @@ SRC = \
libaegisub_access.cpp \ libaegisub_access.cpp \
libaegisub_cajun.cpp \ libaegisub_cajun.cpp \
libaegisub_iconv.cpp \ libaegisub_iconv.cpp \
libaegisub_keyframe.cpp \
libaegisub_line_iterator.cpp \ libaegisub_line_iterator.cpp \
libaegisub_mru.cpp \ libaegisub_mru.cpp \
libaegisub_signals.cpp \ libaegisub_signals.cpp \

View file

@ -0,0 +1,137 @@
# keyframe format v1
fps 25.000000
0
250
500
750
1000
1250
1500
1750
2000
2250
2500
2750
3000
3250
3500
3750
4000
4250
4500
4750
5000
5250
5500
5750
6000
6250
6500
6750
7000
7250
7500
7750
8000
8250
8500
8750
9000
9250
9500
9750
10000
10250
10500
10750
11000
11250
11500
11750
12000
12250
12500
12750
13000
13250
13500
13750
14000
14250
14500
14750
15000
15250
15500
15750
16000
16250
16500
16750
17000
17250
17500
17750
18000
18250
18500
18750
19000
19250
19500
19750
20000
20250
20500
20750
21000
21250
21500
21750
22000
22250
22500
22750
23000
23250
23500
23750
24000
24250
24500
24750
25000
25250
25500
25750
26000
26250
26500
26750
27000
27250
27500
27750
28000
28250
28500
28750
29000
29250
29500
29750
30000
30250
30500
30750
31000
31250
31500
31750
32000
32250
32500
32750
33000
33250
33500

View file

View file

@ -0,0 +1 @@
EXPECT_THROW(Load("data/keyframe/garbage.txt"), Error);

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,149 @@
// Copyright (c) 2011, Thomas Goyne <plorkyeran@aegisub.org>
//
// Permission to use, copy, modify, and distribute this software for any
// purpose with or without fee is hereby granted, provided that the above
// copyright notice and this permission notice appear in all copies.
//
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
//
// $Id$
/// @file libaegisub_keyframe.cpp
/// @brief agi::keyframe tests
/// @ingroup video_input
#include <libaegisub/access.h>
#include <libaegisub/keyframe.h>
#include <libaegisub/vfr.h>
#include <fstream>
#include <iterator>
#include "main.h"
#include "util.h"
using namespace agi::keyframe;
using namespace util;
TEST(lagi_keyframe, save) {
std::vector<int> kf = make_vector<int>(5, 0, 5, 70, 180, 300);
agi::vfr::Framerate fps(80.);
ASSERT_NO_THROW(Save("data/keyframe/out.txt", kf, fps));
std::pair<std::vector<int>, double> res;
ASSERT_NO_THROW(res = Load("data/keyframe/out.txt"));
EXPECT_TRUE(kf == res.first);
EXPECT_EQ(80., res.second);
}
TEST(lagi_keyframe, bad_files) {
EXPECT_THROW(Load(""), agi::acs::AcsError);
EXPECT_THROW(Load("data/keyframe/empty.txt"), Error);
EXPECT_THROW(Load("data/keyframe/garbage.txt"), Error);
}
TEST(lagi_keyframe, xvid) {
std::vector<int> expected = make_vector<int>(681,
0, 52, 53, 55, 57, 80, 114, 168, 182, 234, 240, 242, 244, 250, 251,
274, 290, 336, 364, 431, 465, 535, 596, 654, 700, 744, 976, 982, 983,
984, 985, 993, 994, 995, 996, 997, 998, 1006, 1007, 1008, 1009, 1022,
1066, 1071, 1072, 1073, 1074, 1075, 1081, 1086, 1092, 1096, 1097,
1099, 1100, 1429, 1445, 1511, 1559, 1575, 1605, 1624, 1634, 1696,
1760, 1795, 1820, 1873, 1900, 1948, 1958, 1966, 1974, 1983, 1991,
1999, 2012, 2032, 2194, 2195, 2325, 2354, 2355, 2404, 2411, 2412,
2414, 2446, 2487, 2489, 2495, 2496, 2497, 2498, 2522, 2538, 2544,
2552, 2558, 2564, 2575, 2583, 2591, 2599, 2607, 2690, 2695, 2703,
2711, 2719, 2727, 2735, 2753, 2754, 2756, 2757, 2765, 2766, 2768,
2769, 2777, 2900, 3048, 3093, 3104, 3116, 3184, 3439, 3605, 3645,
3649, 3655, 3657, 3659, 3679, 3681, 3749, 3770, 3794, 3815, 3837,
3862, 3969, 4007, 4044, 4090, 4113, 4157, 4246, 4293, 4480, 4520,
4573, 4619, 4644, 4661, 4682, 4684, 4686, 4708, 4737, 4739, 4741,
4777, 4779, 4780, 4783, 4839, 4851, 4863, 4872, 4878, 4884, 4890,
4896, 4901, 4953, 4975, 4986, 4988, 4990, 4992, 5004, 5068, 5093,
5160, 5183, 5212, 5233, 5275, 5281, 5326, 5360, 5380, 5493, 5497,
5498, 5499, 5500, 5517, 5562, 5684, 5708, 5762, 5764, 5821, 5857,
5975, 5993, 6053, 6099, 6172, 6224, 6248, 6272, 6305, 6329, 6353,
6377, 6414, 6438, 6465, 6499, 6567, 6677, 6736, 6781, 6809, 6873,
6985, 7031, 7115, 7199, 7283, 7367, 7451, 7535, 7619, 7703, 8177,
8232, 8484, 8505, 8595, 8659, 8699, 8967, 9004, 9021, 9064, 9116,
9164, 9271, 9293, 9327, 9379, 9505, 9663, 9754, 9800, 9845, 9911,
9936, 9976, 9992, 10186, 10452, 10523, 10677, 10716, 10816, 10852,
10950, 11102, 11149, 11169, 11295, 11314, 11377, 11417, 11458, 11641,
11681, 11712, 11892, 11920, 11978, 12016, 12119, 12195, 12561, 12661,
12725, 12727, 12728, 12729, 12839, 12983, 12988, 13032, 13096, 13173,
13175, 13203, 13215, 13239, 13251, 13268, 13300, 13324, 13332, 13390,
13429, 13531, 13588, 13661, 13828, 13873, 13932, 13964, 14013, 14151,
14239, 14356, 14384, 14596, 14625, 14655, 14736, 14797, 14921, 14965,
15001, 15048, 15141, 15181, 15264, 15328, 15416, 15595, 15636, 15706,
15758, 15867, 15908, 16150, 16416, 16457, 16504, 16569, 16622, 16686,
16723, 16814, 16982, 17138, 17210, 17243, 17273, 17303, 17333, 17438,
17516, 17591, 17687, 17747, 17894, 17960, 17984, 18032, 18056, 18080,
18116, 18227, 18301, 18407, 18467, 18605, 18695, 18803, 18917, 18989,
19049, 19304, 19415, 19502, 19583, 19688, 19847, 19961, 20069, 20093,
20126, 20165, 20228, 20276, 20318, 20363, 20423, 20456, 20570, 20651,
20701, 20789, 20834, 20922, 20968, 21075, 21112, 21145, 21185, 21232,
21274, 21313, 21354, 21382, 21410, 21444, 21469, 21473, 21482, 21484,
21486, 21488, 21489, 21514, 21516, 21518, 21542, 21594, 21634, 21700,
21752, 21798, 21800, 21810, 21812, 21828, 21830, 21840, 21842, 21844,
21846, 21848, 21850, 21854, 21885, 21901, 21916, 21933, 21988, 21999,
22016, 22035, 22037, 22038, 22040, 22042, 22044, 22054, 22055, 22057,
22059, 22061, 22066, 22068, 22069, 22189, 22229, 22296, 22312, 22388,
22464, 22496, 22578, 22636, 22664, 22665, 22699, 22730, 22777, 22800,
22882, 22904, 23042, 23069, 23178, 23196, 23198, 23206, 23222, 23230,
23238, 23240, 23302, 23353, 23424, 23502, 23526, 23549, 23632, 23674,
23724, 23805, 23845, 23906, 23937, 24038, 24106, 24174, 24194, 24226,
24290, 24294, 24315, 24356, 24609, 24638, 24698, 24721, 24858, 24898,
24948, 25068, 25218, 25253, 25298, 25375, 25421, 25461, 25575, 25725,
25785, 25926, 26067, 26196, 26280, 26322, 26358, 26424, 26460, 26490,
26514, 26537, 26572, 26674, 26696, 26781, 26806, 26824, 27150, 27177,
27201, 27301, 27358, 27402, 27460, 27494, 27601, 27708, 27786, 27860,
27905, 27981, 28009, 28034, 28061, 28086, 28114, 28140, 28221, 28285,
28538, 28573, 28724, 28762, 28966, 29138, 29166, 29231, 29364, 29434,
29474, 29569, 29585, 29677, 29753, 29882, 29929, 30094, 30160, 30185,
30217, 30229, 30233, 30234, 30235, 30236, 30237, 30242, 30243, 30268,
30282, 30289, 30301, 30329, 30412, 30426, 30433, 30445, 30477, 30602,
30635, 30744, 30783, 30894, 30927, 31110, 31375, 31377, 31379, 31381,
31383, 31384, 31388, 31437, 31458, 31474, 31620, 31770, 32139, 32317,
32321, 32323, 32326, 32344, 32346, 32347, 32349, 32354, 32433, 32518,
32594, 32801, 32820, 32881, 32989, 33060, 33130, 33162, 33233, 33273,
33325, 33344, 33362, 33388, 33408, 33438, 33458, 33561, 33644, 33700,
33880, 33923, 33969, 33982, 33991, 34010, 34025, 34043, 34055, 34065,
34082, 34102, 34112, 34122, 34142, 34158, 34170, 34187, 34211);
std::pair<std::vector<int>, double> res;
ASSERT_NO_THROW(res = Load("data/keyframe/xvid.txt"));
EXPECT_TRUE(expected == res.first);
EXPECT_EQ(0., res.second);
}
TEST(lagi_keyframe, x264) {
std::vector<int> expected(41);
for (size_t i = 0; i < 41; ++i) expected[i] = i * 250;
std::pair<std::vector<int>, double> res;
ASSERT_NO_THROW(res = Load("data/keyframe/x264.log"));
EXPECT_TRUE(expected == res.first);
EXPECT_EQ(0., res.second);
}
TEST(lagi_keyframe, aegi) {
std::vector<int> expected(135);
for (size_t i = 0; i < 135; ++i) expected[i] = i * 250;
std::pair<std::vector<int>, double> res;
ASSERT_NO_THROW(res = Load("data/keyframe/aegi.txt"));
EXPECT_TRUE(expected == res.first);
EXPECT_EQ(25., res.second);
}

View file

@ -43,4 +43,7 @@ mkdir data\vfr
mkdir data\vfr\in mkdir data\vfr\in
mkdir data\vfr\out mkdir data\vfr\out
xcopy %1\vfr data\vfr\in xcopy "%~dp0\vfr" data\vfr\in
mkdir data\keyframe
xcopy "%~dp0\keyframe" data\keyframe

View file

@ -45,3 +45,6 @@ mkdir data/vfr
mkdir data/vfr/in mkdir data/vfr/in
mkdir data/vfr/out mkdir data/vfr/out
cp vfr/* data/vfr/in/ cp vfr/* data/vfr/in/
mkdir data/keyframe
cp keyframe/* data/keyframe