b02a6e59648e61d9bfb41cab05edb6adbe4ebbbc
[libdcp.git] / test / write_subtitle_test.cc
1 /*
2     Copyright (C) 2015 Carl Hetherington <cth@carlh.net>
3
4     This program is free software; you can redistribute it and/or modify
5     it under the terms of the GNU General Public License as published by
6     the Free Software Foundation; either version 2 of the License, or
7     (at your option) any later version.
8
9     This program is distributed in the hope that it will be useful,
10     but WITHOUT ANY WARRANTY; without even the implied warranty of
11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12     GNU General Public License for more details.
13
14     You should have received a copy of the GNU General Public License
15     along with this program; if not, write to the Free Software
16     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17
18 */
19
20 #include "interop_subtitle_asset.h"
21 #include "subtitle_string.h"
22 #include "test.h"
23 #include <boost/test/unit_test.hpp>
24
25 using std::list;
26 using std::string;
27 using boost::shared_ptr;
28
29 /* Write some subtitle content as Interop XML and check that it is right */
30 BOOST_AUTO_TEST_CASE (write_subtitle_test)
31 {
32         dcp::InteropSubtitleAsset c ("Test", "EN");
33
34         c.add (
35                 dcp::SubtitleString (
36                         string ("Frutiger"),
37                         false,
38                         dcp::Colour (255, 255, 255),
39                         48,
40                         1.0,
41                         dcp::Time (0, 4,  9, 22, 24),
42                         dcp::Time (0, 4, 11, 22, 24),
43                         0,
44                         dcp::HALIGN_CENTER,
45                         0.8,
46                         dcp::VALIGN_TOP,
47                         "Hello world",
48                         dcp::NONE,
49                         dcp::Colour (0, 0, 0),
50                         dcp::Time (0, 0, 0, 0, 24),
51                         dcp::Time (0, 0, 0, 0, 24)
52                         )
53                 );
54
55         c.add (
56                 dcp::SubtitleString (
57                         boost::optional<string> (),
58                         true,
59                         dcp::Colour (128, 0, 64),
60                         91,
61                         1.0,
62                         dcp::Time (5, 41,  0, 21, 24),
63                         dcp::Time (6, 12, 15, 21, 24),
64                         0,
65                         dcp::HALIGN_CENTER,
66                         0.4,
67                         dcp::VALIGN_BOTTOM,
68                         "What's going on",
69                         dcp::BORDER,
70                         dcp::Colour (1, 2, 3),
71                         dcp::Time (1, 2, 3, 4, 24),
72                         dcp::Time (5, 6, 7, 8, 24)
73                         )
74                 );
75         
76         c._id = "a6c58cff-3e1e-4b38-acec-a42224475ef6";
77
78         check_xml (
79                 c.xml_as_string (),
80                 "<DCSubtitle Version=\"1.0\">\n"
81                 "  <SubtitleID>a6c58cff-3e1e-4b38-acec-a42224475ef6</SubtitleID>\n"
82                 "  <MovieTitle>Test</MovieTitle>\n"
83                 "  <ReelNumber>1</ReelNumber>\n"
84                 "  <Language>EN</Language>\n"
85                 "  <Font Id=\"Frutiger\" Italic=\"no\" Color=\"FFFFFFFF\" Size=\"48\" Effect=\"none\" EffectColor=\"FF000000\" Script=\"normal\" Underlined=\"no\" Weight=\"normal\">\n"
86                 "    <Subtitle SpotNumber=\"1\" TimeIn=\"00:04:09:022\" TimeOut=\"00:04:11:022\" FadeUpTime=\"0\" FadeDownTime=\"0\">\n"
87                 "      <Text VAlign=\"top\" VPosition=\"80\">Hello world</Text>\n"
88                 "    </Subtitle>\n"
89                 "  </Font>\n"
90                 "  <Font Italic=\"yes\" Color=\"FF800040\" Size=\"91\" Effect=\"border\" EffectColor=\"FF010203\" Script=\"normal\" Underlined=\"no\" Weight=\"normal\">\n"
91                 "    <Subtitle SpotNumber=\"2\" TimeIn=\"05:41:00:021\" TimeOut=\"06:12:15:021\" FadeUpTime=\"930790\" FadeDownTime=\"4591830\">\n"
92                 "      <Text VAlign=\"bottom\" VPosition=\"40\">What's going on</Text>\n"
93                 "    </Subtitle>\n"
94                 "  </Font>\n"
95                 "</DCSubtitle>",
96                 list<string> ()
97                 );
98 }
99