summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2021-01-21 17:10:19 +0100
committerCarl Hetherington <cth@carlh.net>2021-01-21 19:19:49 +0100
commite5f89bffcfb92756fe292d5d27ef2dcfd42e2af6 (patch)
tree1d1a5291a8fb113924e2eac757de26ad33e6ee10
parent9691fc54fa6a3409520a1a42e6eeb8e6a235f5f6 (diff)
Move all ostream operator<< into some test-only stream_operators.{cc,h} files.
-rw-r--r--src/subtitle_string.cc6
-rw-r--r--src/types.cc147
-rw-r--r--src/types.h11
-rw-r--r--test/cpl_metadata_test.cc1
-rw-r--r--test/decryption_test.cc1
-rw-r--r--test/effect_test.cc3
-rw-r--r--test/read_dcp_test.cc3
-rw-r--r--test/read_smpte_subtitle_test.cc3
-rw-r--r--test/reel_asset_test.cc1
-rw-r--r--test/rgb_xyz_test.cc3
-rw-r--r--test/stream_operators.cc227
-rw-r--r--test/stream_operators.h55
-rw-r--r--test/util_test.cc1
-rw-r--r--test/wscript3
14 files changed, 300 insertions, 165 deletions
diff --git a/src/subtitle_string.cc b/src/subtitle_string.cc
index f5f8c8ac..0f89291e 100644
--- a/src/subtitle_string.cc
+++ b/src/subtitle_string.cc
@@ -144,11 +144,13 @@ dcp::operator<< (ostream& s, SubtitleString const & sub)
s << "underlined, ";
}
- s << "size " << sub.size() << ", aspect " << sub.aspect_adjust() << ", colour " << sub.colour()
+ s << "size " << sub.size() << ", aspect " << sub.aspect_adjust()
+ << ", colour (" << sub.colour().r << ", " << sub.colour().g << ", " << sub.colour().b << ")"
<< ", vpos " << sub.v_position() << ", valign " << ((int) sub.v_align())
<< ", hpos " << sub.h_position() << ", halign " << ((int) sub.h_align())
<< ", direction " << ((int) sub.direction())
- << ", effect " << ((int) sub.effect()) << ", effect colour " << sub.effect_colour();
+ << ", effect " << ((int) sub.effect())
+ << ", effect colour (" << sub.effect_colour().r << ", " << sub.effect_colour().g << ", " << sub.effect_colour().b << ")";
return s;
}
diff --git a/src/types.cc b/src/types.cc
index 9484939c..6058ea10 100644
--- a/src/types.cc
+++ b/src/types.cc
@@ -61,11 +61,6 @@ bool dcp::operator!= (dcp::Size const & a, dcp::Size const & b)
return !(a == b);
}
-ostream& dcp::operator<< (ostream& s, dcp::Size const & a)
-{
- s << a.width << "x" << a.height;
- return s;
-}
/** Construct a Fraction from a string of the form <numerator> <denominator>
* e.g. "1 3".
@@ -99,12 +94,6 @@ dcp::operator!= (Fraction const & a, Fraction const & b)
return (a.numerator != b.numerator || a.denominator != b.denominator);
}
-ostream&
-dcp::operator<< (ostream& s, Fraction const & f)
-{
- s << f.numerator << "/" << f.denominator;
- return s;
-}
/** Construct a Colour, initialising it to black. */
Colour::Colour ()
@@ -180,12 +169,6 @@ dcp::operator!= (Colour const & a, Colour const & b)
return !(a == b);
}
-ostream &
-dcp::operator<< (ostream& s, Colour const & c)
-{
- s << "(" << c.r << ", " << c.g << ", " << c.b << ")";
- return s;
-}
string
dcp::effect_to_string (Effect e)
@@ -217,14 +200,6 @@ dcp::string_to_effect (string s)
}
-std::ostream&
-dcp::operator<< (std::ostream& s, Effect e)
-{
- s << effect_to_string(e);
- return s;
-}
-
-
string
dcp::halign_to_string (HAlign h)
{
@@ -394,14 +369,6 @@ dcp::content_kind_from_string (string kind)
}
-ostream&
-dcp::operator<< (ostream& s, ContentKind c)
-{
- s << content_kind_to_string(c);
- return s;
-}
-
-
string
dcp::marker_to_string (dcp::Marker m)
{
@@ -479,14 +446,6 @@ dcp::operator== (Rating const & a, Rating const & b)
return a.agency == b.agency && a.label == b.label;
}
-ostream &
-dcp::operator<< (ostream& s, Rating const & r)
-{
- s << r.agency << " " << r.label;
- return s;
-}
-
-
ContentVersion::ContentVersion ()
: id ("urn:uuid:" + make_uuid())
{
@@ -702,65 +661,6 @@ dcp::string_to_status (string s)
}
-ostream&
-dcp::operator<<(ostream& s, Status t)
-{
- s << status_to_string(t);
- return s;
-}
-
-
-ostream&
-dcp::operator<<(ostream& s, dcp::Channel c)
-{
- switch (c) {
- case Channel::LEFT:
- s << "left(0)";
- break;
- case Channel::RIGHT:
- s << "right(1)";
- break;
- case Channel::CENTRE:
- s << "centre(2)";
- break;
- case Channel::LFE:
- s << "lfe(3)";
- break;
- case Channel::LS:
- s << "ls(4)";
- break;
- case Channel::RS:
- s << "rs(5)";
- break;
- case Channel::HI:
- s << "hi(6)";
- break;
- case Channel::VI:
- s << "vi(7)";
- break;
- case Channel::BSL:
- s << "bsl(10)";
- break;
- case Channel::BSR:
- s << "bsr(11)";
- break;
- case Channel::MOTION_DATA:
- s << "motion_data(12)";
- break;
- case Channel::SYNC_SIGNAL:
- s << "sync_signal(13)";
- break;
- case Channel::SIGN_LANGUAGE:
- s << "sign_language(14)";
- break;
- case Channel::CHANNEL_COUNT:
- s << "(16)";
- break;
- }
- return s;
-}
-
-
Channel
dcp::mca_id_to_channel (string id)
{
@@ -938,50 +838,3 @@ dcp::used_audio_channels ()
return c;
}
-
-ostream&
-dcp::operator<< (ostream& s, NoteType t)
-{
- switch (t) {
- case NoteType::PROGRESS:
- s << "progress";
- break;
- case NoteType::ERROR:
- s << "error";
- break;
- case NoteType::NOTE:
- s << "note";
- break;
- }
- return s;
-}
-
-
-ostream&
-dcp::operator<< (ostream& s, MCASoundField f)
-{
- switch (f) {
- case MCASoundField::FIVE_POINT_ONE:
- s << "5.1";
- break;
- case MCASoundField::SEVEN_POINT_ONE:
- s << "7.1";
- break;
- }
- return s;
-}
-
-
-ostream&
-dcp::operator<< (ostream& s, Standard t)
-{
- switch (t) {
- case Standard::INTEROP:
- s << "interop";
- break;
- case Standard::SMPTE:
- s << "smpte";
- break;
- }
- return s;
-}
diff --git a/src/types.h b/src/types.h
index 1f74f7ab..c04b2543 100644
--- a/src/types.h
+++ b/src/types.h
@@ -76,7 +76,6 @@ struct Size
extern bool operator== (Size const & a, Size const & b);
extern bool operator!= (Size const & a, Size const & b);
-extern std::ostream& operator<< (std::ostream& s, Size const & a);
/** Identifier for a sound channel */
enum class Channel {
@@ -99,7 +98,6 @@ enum class Channel {
};
std::vector<dcp::Channel> used_audio_channels ();
-std::ostream& operator<< (std::ostream& s, Channel c);
enum class MCASoundField
@@ -113,7 +111,6 @@ extern std::string channel_to_mca_id (Channel c, MCASoundField field);
extern Channel mca_id_to_channel (std::string);
extern std::string channel_to_mca_name (Channel c, MCASoundField field);
extern ASDCP::UL channel_to_mca_universal_label (Channel c, MCASoundField field, ASDCP::Dictionary const* dict);
-std::ostream& operator<< (std::ostream& s, MCASoundField f);
enum class ContentKind
@@ -134,7 +131,6 @@ enum class ContentKind
extern std::string content_kind_to_string (ContentKind kind);
extern ContentKind content_kind_from_string (std::string kind);
-std::ostream& operator<<(std::ostream& s, ContentKind c);
enum class Effect
{
@@ -145,7 +141,6 @@ enum class Effect
extern std::string effect_to_string (Effect e);
extern Effect string_to_effect (std::string s);
-std::ostream& operator<< (std::ostream& s, Effect e);
enum class HAlign
{
@@ -212,7 +207,6 @@ public:
extern bool operator== (Fraction const & a, Fraction const & b);
extern bool operator!= (Fraction const & a, Fraction const & b);
-extern std::ostream& operator<< (std::ostream& s, Fraction const & f);
/** @struct EqualityOptions
* @brief A class to describe what "equality" means for a particular test.
@@ -267,14 +261,12 @@ enum class NoteType {
NOTE
};
-std::ostream& operator<< (std::ostream& s, NoteType t);
enum class Standard {
INTEROP,
SMPTE
};
-std::ostream& operator<< (std::ostream& s, Standard t);
enum class Formulation {
MODIFIED_TRANSITIONAL_1,
@@ -305,7 +297,6 @@ public:
extern bool operator== (Colour const & a, Colour const & b);
extern bool operator!= (Colour const & a, Colour const & b);
-extern std::ostream & operator<< (std::ostream & s, Colour const & c);
typedef boost::function<void (NoteType, std::string)> NoteHandler;
@@ -354,7 +345,6 @@ public:
};
extern bool operator== (Rating const & a, Rating const & b);
-extern std::ostream& operator<< (std::ostream& s, Rating const & r);
enum class Status
@@ -367,7 +357,6 @@ enum class Status
extern std::string status_to_string (Status s);
extern Status string_to_status (std::string s);
-std::ostream& operator<< (std::ostream& s, Status t);
class ContentVersion
diff --git a/test/cpl_metadata_test.cc b/test/cpl_metadata_test.cc
index 45afecb3..c9ee3b9b 100644
--- a/test/cpl_metadata_test.cc
+++ b/test/cpl_metadata_test.cc
@@ -38,6 +38,7 @@
#include "language_tag.h"
#include "reel.h"
#include "reel_subtitle_asset.h"
+#include "stream_operators.h"
#include "test.h"
#include <memory>
#include <boost/test/unit_test.hpp>
diff --git a/test/decryption_test.cc b/test/decryption_test.cc
index 3c4c0d61..77f349bd 100644
--- a/test/decryption_test.cc
+++ b/test/decryption_test.cc
@@ -44,6 +44,7 @@
#include "openjpeg_image.h"
#include "rgb_xyz.h"
#include "colour_conversion.h"
+#include "stream_operators.h"
#include <boost/test/unit_test.hpp>
#include <boost/scoped_array.hpp>
diff --git a/test/effect_test.cc b/test/effect_test.cc
index 3be4b8f9..c56b6451 100644
--- a/test/effect_test.cc
+++ b/test/effect_test.cc
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2014-2019 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2014-2021 Carl Hetherington <cth@carlh.net>
This file is part of libdcp.
@@ -32,6 +32,7 @@
*/
#include "types.h"
+#include "stream_operators.h"
#include "exceptions.h"
#include <boost/test/unit_test.hpp>
diff --git a/test/read_dcp_test.cc b/test/read_dcp_test.cc
index 9c545091..f995353e 100644
--- a/test/read_dcp_test.cc
+++ b/test/read_dcp_test.cc
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2013-2019 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2013-2021 Carl Hetherington <cth@carlh.net>
This file is part of libdcp.
@@ -35,6 +35,7 @@
#include <boost/optional/optional_io.hpp>
#include "dcp.h"
#include "cpl.h"
+#include "stream_operators.h"
using std::list;
using std::shared_ptr;
diff --git a/test/read_smpte_subtitle_test.cc b/test/read_smpte_subtitle_test.cc
index 15fc5dd8..49fd1f62 100644
--- a/test/read_smpte_subtitle_test.cc
+++ b/test/read_smpte_subtitle_test.cc
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2015-2019 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2015-2021 Carl Hetherington <cth@carlh.net>
This file is part of libdcp.
@@ -36,6 +36,7 @@
#include "local_time.h"
#include "smpte_load_font_node.h"
#include "subtitle_image.h"
+#include "stream_operators.h"
#include <boost/test/unit_test.hpp>
#include <boost/optional.hpp>
#include <boost/optional/optional_io.hpp>
diff --git a/test/reel_asset_test.cc b/test/reel_asset_test.cc
index bf609c2c..e0c7f781 100644
--- a/test/reel_asset_test.cc
+++ b/test/reel_asset_test.cc
@@ -35,6 +35,7 @@
#include "reel_subtitle_asset.h"
#include <libcxml/cxml.h>
#include <boost/test/unit_test.hpp>
+#include "stream_operators.h"
#include "test.h"
diff --git a/test/rgb_xyz_test.cc b/test/rgb_xyz_test.cc
index 54f6174c..69a4d612 100644
--- a/test/rgb_xyz_test.cc
+++ b/test/rgb_xyz_test.cc
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2014-2019 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2014-2021 Carl Hetherington <cth@carlh.net>
This file is part of libdcp.
@@ -34,6 +34,7 @@
#include "rgb_xyz.h"
#include "openjpeg_image.h"
#include "colour_conversion.h"
+#include "stream_operators.h"
#include <boost/test/unit_test.hpp>
#include <boost/bind.hpp>
#include <boost/scoped_array.hpp>
diff --git a/test/stream_operators.cc b/test/stream_operators.cc
new file mode 100644
index 00000000..5e4f88e6
--- /dev/null
+++ b/test/stream_operators.cc
@@ -0,0 +1,227 @@
+/*
+ Copyright (C) 2021 Carl Hetherington <cth@carlh.net>
+
+ This file is part of libdcp.
+
+ libdcp is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ libdcp is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with libdcp. If not, see <http://www.gnu.org/licenses/>.
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of portions of this program with the
+ OpenSSL library under certain conditions as described in each
+ individual source file, and distribute linked combinations
+ including the two.
+
+ You must obey the GNU General Public License in all respects
+ for all of the code used other than OpenSSL. If you modify
+ file(s) with this exception, you may extend this exception to your
+ version of the file(s), but you are not obligated to do so. If you
+ do not wish to do so, delete this exception statement from your
+ version. If you delete this exception statement from all source
+ files in the program, then also delete it here.
+*/
+
+
+/** @file test/stream_operators.cc
+ * @brief A collection of operator<< methods so that we can use boost test macros with libdcp's types.
+ */
+
+
+#include "stream_operators.h"
+#include "types.h"
+#include "verify.h"
+#include <iostream>
+
+
+using std::ostream;
+
+
+ostream&
+dcp::operator<< (ostream& s, Size const & a)
+{
+ s << a.width << "x" << a.height;
+ return s;
+}
+
+
+ostream&
+dcp::operator<< (ostream& s, Fraction const & f)
+{
+ s << f.numerator << "/" << f.denominator;
+ return s;
+}
+
+
+ostream &
+dcp::operator<< (ostream& s, Colour const & c)
+{
+ s << "(" << c.r << ", " << c.g << ", " << c.b << ")";
+ return s;
+}
+
+
+ostream&
+dcp::operator<< (std::ostream& s, Effect e)
+{
+ s << effect_to_string(e);
+ return s;
+}
+
+
+ostream&
+dcp::operator<< (ostream& s, ContentKind c)
+{
+ s << content_kind_to_string(c);
+ return s;
+}
+
+
+ostream &
+dcp::operator<< (ostream& s, Rating const & r)
+{
+ s << r.agency << " " << r.label;
+ return s;
+}
+
+
+ostream&
+dcp::operator<<(ostream& s, Status t)
+{
+ s << status_to_string(t);
+ return s;
+}
+
+
+ostream&
+dcp::operator<<(ostream& s, Channel c)
+{
+ switch (c) {
+ case Channel::LEFT:
+ s << "left(0)";
+ break;
+ case Channel::RIGHT:
+ s << "right(1)";
+ break;
+ case Channel::CENTRE:
+ s << "centre(2)";
+ break;
+ case Channel::LFE:
+ s << "lfe(3)";
+ break;
+ case Channel::LS:
+ s << "ls(4)";
+ break;
+ case Channel::RS:
+ s << "rs(5)";
+ break;
+ case Channel::HI:
+ s << "hi(6)";
+ break;
+ case Channel::VI:
+ s << "vi(7)";
+ break;
+ case Channel::BSL:
+ s << "bsl(10)";
+ break;
+ case Channel::BSR:
+ s << "bsr(11)";
+ break;
+ case Channel::MOTION_DATA:
+ s << "motion_data(12)";
+ break;
+ case Channel::SYNC_SIGNAL:
+ s << "sync_signal(13)";
+ break;
+ case Channel::SIGN_LANGUAGE:
+ s << "sign_language(14)";
+ break;
+ case Channel::CHANNEL_COUNT:
+ s << "(16)";
+ break;
+ }
+ return s;
+}
+
+
+ostream&
+dcp::operator<< (ostream& s, NoteType t)
+{
+ switch (t) {
+ case NoteType::PROGRESS:
+ s << "progress";
+ break;
+ case NoteType::ERROR:
+ s << "error";
+ break;
+ case NoteType::NOTE:
+ s << "note";
+ break;
+ }
+ return s;
+}
+
+
+ostream&
+dcp::operator<< (ostream& s, MCASoundField f)
+{
+ switch (f) {
+ case MCASoundField::FIVE_POINT_ONE:
+ s << "5.1";
+ break;
+ case MCASoundField::SEVEN_POINT_ONE:
+ s << "7.1";
+ break;
+ }
+ return s;
+}
+
+
+ostream&
+dcp::operator<< (ostream& s, Standard t)
+{
+ switch (t) {
+ case Standard::INTEROP:
+ s << "interop";
+ break;
+ case Standard::SMPTE:
+ s << "smpte";
+ break;
+ }
+ return s;
+}
+
+
+ostream&
+dcp::operator<< (ostream& s, VerificationNote::Type t)
+{
+ switch (t) {
+ case VerificationNote::Type::ERROR:
+ s << "error";
+ break;
+ case VerificationNote::Type::BV21_ERROR:
+ s << "bv21_error";
+ break;
+ case VerificationNote::Type::WARNING:
+ s << "warning";
+ break;
+ }
+ return s;
+}
+
+
+ostream&
+dcp::operator<< (ostream& s, VerificationNote::Code c)
+{
+ s << static_cast<int>(c);
+ return s;
+}
diff --git a/test/stream_operators.h b/test/stream_operators.h
new file mode 100644
index 00000000..862de698
--- /dev/null
+++ b/test/stream_operators.h
@@ -0,0 +1,55 @@
+/*
+ Copyright (C) 2021 Carl Hetherington <cth@carlh.net>
+
+ This file is part of libdcp.
+
+ libdcp is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ libdcp is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with libdcp. If not, see <http://www.gnu.org/licenses/>.
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of portions of this program with the
+ OpenSSL library under certain conditions as described in each
+ individual source file, and distribute linked combinations
+ including the two.
+
+ You must obey the GNU General Public License in all respects
+ for all of the code used other than OpenSSL. If you modify
+ file(s) with this exception, you may extend this exception to your
+ version of the file(s), but you are not obligated to do so. If you
+ do not wish to do so, delete this exception statement from your
+ version. If you delete this exception statement from all source
+ files in the program, then also delete it here.
+*/
+
+
+#include "types.h"
+#include "verify.h"
+
+
+namespace dcp {
+
+std::ostream& operator<< (std::ostream& s, Size const& a);
+std::ostream& operator<< (std::ostream& s, Channel c);
+std::ostream& operator<< (std::ostream& s, MCASoundField f);
+std::ostream& operator<< (std::ostream& s, ContentKind c);
+std::ostream& operator<< (std::ostream& s, Effect e);
+std::ostream& operator<< (std::ostream& s, Fraction const& f);
+std::ostream& operator<< (std::ostream& s, NoteType t);
+std::ostream& operator<< (std::ostream& s, Standard t);
+std::ostream& operator<< (std::ostream& s, Colour const& c);
+std::ostream& operator<< (std::ostream& s, Rating const& r);
+std::ostream& operator<< (std::ostream& s, Status t);
+std::ostream& operator<< (std::ostream& s, VerificationNote::Code c);
+std::ostream& operator<< (std::ostream& s, VerificationNote::Type t);
+}
+
diff --git a/test/util_test.cc b/test/util_test.cc
index 51a5dab6..8ca7df44 100644
--- a/test/util_test.cc
+++ b/test/util_test.cc
@@ -33,6 +33,7 @@
#include "util.h"
#include "local_time.h"
+#include "stream_operators.h"
#include <boost/test/unit_test.hpp>
#include <fstream>
diff --git a/test/wscript b/test/wscript
index 9a8a7b53..a25b2cd5 100644
--- a/test/wscript
+++ b/test/wscript
@@ -1,5 +1,5 @@
#
-# Copyright (C) 2012-2019 Carl Hetherington <cth@carlh.net>
+# Copyright (C) 2012-2021 Carl Hetherington <cth@carlh.net>
#
# This file is part of libdcp.
#
@@ -99,6 +99,7 @@ def build(bld):
smpte_load_font_test.cc
smpte_subtitle_test.cc
sound_frame_test.cc
+ stream_operators.cc
sync_test.cc
test.cc
util_test.cc