8416abfb5945d7849ac91f04c8b666c38726d781
[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_content.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::InteropSubtitleContent c ("Test", "EN");
33
34         c.add (
35                 dcp::SubtitleString (
36                         string ("Frutiger"),
37                         false,
38                         dcp::Colour (255, 255, 255),
39                         48,
40                         dcp::Time (0, 4,  9, 22, 24),
41                         dcp::Time (0, 4, 11, 22, 24),
42                         0.8,
43                         dcp::TOP,
44                         "Hello world",
45                         dcp::NONE,
46                         dcp::Colour (0, 0, 0),
47                         dcp::Time (0, 0, 0, 0, 24),
48                         dcp::Time (0, 0, 0, 0, 24)
49                         )
50                 );
51
52         c.add (
53                 dcp::SubtitleString (
54                         boost::optional<string> (),
55                         true,
56                         dcp::Colour (128, 0, 64),
57                         91,
58                         dcp::Time (5, 41,  0, 21, 24),
59                         dcp::Time (6, 12, 15, 21, 24),
60                         0.4,
61                         dcp::BOTTOM,
62                         "What's going on",
63                         dcp::BORDER,
64                         dcp::Colour (1, 2, 3),
65                         dcp::Time (1, 2, 3, 4, 24),
66                         dcp::Time (5, 6, 7, 8, 24)
67                         )
68                 );
69         
70         c._id = "a6c58cff-3e1e-4b38-acec-a42224475ef6";
71
72         check_xml (
73                 c.xml_as_string (),
74                 "<DCSubtitle Version=\"1.0\">\n"
75                 "  <SubtitleID>a6c58cff-3e1e-4b38-acec-a42224475ef6</SubtitleID>\n"
76                 "  <MovieTitle>Test</MovieTitle>\n"
77                 "  <ReelNumber>1</ReelNumber>\n"
78                 "  <Language>EN</Language>\n"
79                 "  <Font Id=\"Frutiger\" Italic=\"no\" Color=\"FFFFFFFF\" Size=\"48\" Effect=\"none\" EffectColor=\"FF000000\" Script=\"normal\" Underlined=\"no\" Weight=\"normal\">\n"
80                 "    <Subtitle SpotNumber=\"1\" TimeIn=\"0:4:9:22\" TimeOut=\"0:4:11:22\" FadeUpTime=\"0\" FadeDownTime=\"0\">\n"
81                 "      <Text VAlign=\"top\" VPosition=\"80\">Hello world</Text>\n"
82                 "    </Subtitle>\n"
83                 "  </Font>\n"
84                 "  <Font Italic=\"yes\" Color=\"FF800040\" Size=\"91\" Effect=\"border\" EffectColor=\"FF010203\" Script=\"normal\" Underlined=\"no\" Weight=\"normal\">\n"
85                 "    <Subtitle SpotNumber=\"2\" TimeIn=\"5:41:0:21\" TimeOut=\"6:12:15:21\" FadeUpTime=\"930790\" FadeDownTime=\"4591830\">\n"
86                 "      <Text VAlign=\"bottom\" VPosition=\"40\">What's going on</Text>\n"
87                 "    </Subtitle>\n"
88                 "  </Font>\n"
89                 "</DCSubtitle>",
90                 list<string> ()
91                 );
92 }
93