X-Git-Url: https://git.carlh.net/gitweb/?p=dcpomatic.git;a=blobdiff_plain;f=test%2Ftest.h;h=01ddb19874e525ced470ae9c029a1af8261d528c;hp=c9e477e02b53fffbce03b3f5fe2d7e0522bb3d11;hb=a4c510f8e3730d918c5ba54b1b4aaf307d748e0f;hpb=e80e6a8567dd107f5ea3b708975cb5fd92112a57 diff --git a/test/test.h b/test/test.h index c9e477e02..01ddb1987 100644 --- a/test/test.h +++ b/test/test.h @@ -1,35 +1,124 @@ /* - Copyright (C) 2013 Carl Hetherington + Copyright (C) 2013-2021 Carl Hetherington - This program is free software; you can redistribute it and/or modify + This file is part of DCP-o-matic. + + DCP-o-matic 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. - This program is distributed in the hope that it will be useful, + DCP-o-matic 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 this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + along with DCP-o-matic. If not, see . */ + +#include "lib/video_frame_type.h" +#include +#include #include +#include + +class Content; class Film; class Image; +class Log; + + +class TestPaths +{ +public: + static boost::filesystem::path private_data(); + static boost::filesystem::path xsd(); +}; + -extern boost::filesystem::path private_data; +class Cleanup +{ +public: + void add (boost::filesystem::path path); -extern void wait_for_jobs (); -extern boost::shared_ptr new_test_film (std::string); + /* Remove everything passed to add(). We don't do this + * in a destructor so that results of failed tests aren't + * deleted. + */ + void run (); + +private: + std::vector _paths; +}; + + +extern bool wait_for_jobs (); +extern std::shared_ptr new_test_film (std::string); +extern std::shared_ptr new_test_film2 (std::string, std::vector> content = {}, Cleanup* cleanup = nullptr); extern void check_dcp (boost::filesystem::path, boost::filesystem::path); +extern void check_dcp (boost::filesystem::path, std::shared_ptr); extern void check_file (boost::filesystem::path ref, boost::filesystem::path check); -extern void check_audio_file (boost::filesystem::path ref, boost::filesystem::path check); +extern void check_text_file (boost::filesystem::path ref, boost::filesystem::path check); +extern void check_wav_file (boost::filesystem::path ref, boost::filesystem::path check); +extern void check_mxf_audio_file (boost::filesystem::path ref, boost::filesystem::path check); +extern bool mxf_atmos_files_same (boost::filesystem::path ref, boost::filesystem::path check, bool verbose = false); extern void check_xml (boost::filesystem::path, boost::filesystem::path, std::list); -extern void check_file (boost::filesystem::path, boost::filesystem::path); +extern void check_ffmpeg (boost::filesystem::path, boost::filesystem::path, int audio_tolerance); +extern void check_image (boost::filesystem::path, boost::filesystem::path, double threshold = 4); extern boost::filesystem::path test_film_dir (std::string); -extern void write_image (boost::shared_ptr image, boost::filesystem::path file); +extern void write_image (std::shared_ptr image, boost::filesystem::path file); +boost::filesystem::path dcp_file (std::shared_ptr film, std::string prefix); +void check_one_frame (boost::filesystem::path dcp, int64_t index, boost::filesystem::path ref); +extern boost::filesystem::path subtitle_file (std::shared_ptr film); +extern void make_random_file (boost::filesystem::path path, size_t size); +extern void verify_dcp(boost::filesystem::path dir, std::vector ignore); +extern void make_and_verify_dcp (std::shared_ptr film, std::vector ignore = {}); +extern void check_int_close (int a, int b, int d); +extern void check_int_close (std::pair, std::pair, int d); +extern boost::filesystem::path find_file (boost::filesystem::path dir, std::string filename_part); + + +class LogSwitcher +{ +public: + LogSwitcher (std::shared_ptr log); + ~LogSwitcher (); + +private: + std::shared_ptr _old; +}; + + +class ConfigRestorer +{ +public: + ~ConfigRestorer(); +}; + + +class Editor +{ +public: + Editor(boost::filesystem::path path); + ~Editor(); + + void replace(std::string a, std::string b); + +private: + boost::filesystem::path _path; + std::string _content; +}; + + +namespace dcp { + +std::ostream& operator<< (std::ostream& s, dcp::Size i); +std::ostream& operator<< (std::ostream& s, dcp::Standard t); + +} + +std::ostream& operator<< (std::ostream& s, VideoFrameType f);