Fill test disk partitions with random noise to expose more bugs.
[dcpomatic.git] / test / config_test.cc
index 0e6a05ac04e384e420ecbc2d900ba3415e989cda..6b35c595d0b60792b849056f7b66597ae1592c51 100644 (file)
 */
 
 
+#include "lib/cinema.h"
 #include "lib/config.h"
 #include "test.h"
 #include <boost/test/unit_test.hpp>
 #include <fstream>
 
 
+using std::list;
 using std::ofstream;
+using std::make_shared;
 using std::string;
 using boost::optional;
 
@@ -190,3 +193,28 @@ BOOST_AUTO_TEST_CASE (config_upgrade_test)
        BOOST_REQUIRE (!boost::filesystem::exists(dir / "2.16" / "cinemas.xml"));
 }
 
+
+BOOST_AUTO_TEST_CASE (config_keep_cinemas_if_making_new_config)
+{
+       ConfigRestorer cr;
+
+       boost::filesystem::path dir = "build/test/config_keep_cinemas_if_making_new_config";
+       Config::override_path = dir;
+       Config::drop ();
+       boost::filesystem::remove_all (dir);
+       boost::filesystem::create_directories (dir);
+
+       Config::instance()->write();
+
+       Config::instance()->add_cinema(make_shared<Cinema>("My Great Cinema", list<string>(), "", 0, 0));
+       Config::instance()->write();
+
+       boost::filesystem::copy_file (dir / "cinemas.xml", dir / "backup_for_test.xml");
+
+       Config::drop ();
+       boost::filesystem::remove (dir / "2.16" / "config.xml");
+       Config::instance();
+
+       check_text_file (dir / "backup_for_test.xml", dir / "cinemas.xml.1");
+}
+