Make CPL annotation_text optional.
[libdcp.git] / test / language_tag_test.cc
index fd90b6295f5e1cd891f93c0670ac210adf5147f7..87086a29309e82cfbad76ebcda0a0c0f1347a580 100644 (file)
@@ -41,7 +41,7 @@ using std::vector;
 using std::string;
 
 
-BOOST_AUTO_TEST_CASE (language_tag_test)
+BOOST_AUTO_TEST_CASE (language_tag_create_test)
 {
        /* Bad subtags raise errors */
 
@@ -78,6 +78,14 @@ BOOST_AUTO_TEST_CASE (language_tag_test)
                BOOST_CHECK_EQUAL (t.description(), "German");
        }
 
+       /* Case is ignored */
+
+       {
+               dcp::LanguageTag t;
+               BOOST_CHECK_NO_THROW (t.set_language("dE"));
+               BOOST_CHECK_EQUAL (t.to_string(), "dE");
+       }
+
        /* Language + script */
 
        {
@@ -177,3 +185,22 @@ BOOST_AUTO_TEST_CASE (language_tag_test)
        }
 
 }
+
+
+BOOST_AUTO_TEST_CASE (language_tag_parse_test)
+{
+       BOOST_CHECK_THROW (dcp::LanguageTag(""), dcp::LanguageTagError);
+       BOOST_CHECK_THROW (dcp::LanguageTag("...Aw498012351!"), dcp::LanguageTagError);
+       BOOST_CHECK_THROW (dcp::LanguageTag("fish"), dcp::LanguageTagError);
+       BOOST_CHECK_THROW (dcp::LanguageTag("de-Dogr-fish"), dcp::LanguageTagError);
+       BOOST_CHECK_THROW (dcp::LanguageTag("de-Dogr-DE-aranes-fish"), dcp::LanguageTagError);
+
+       BOOST_CHECK_EQUAL (dcp::LanguageTag("de").to_string(), "de");
+       BOOST_CHECK_EQUAL (dcp::LanguageTag("de-Dogr").to_string(), "de-Dogr");
+       BOOST_CHECK_EQUAL (dcp::LanguageTag("de-Dogr-DE").to_string(), "de-Dogr-DE");
+       BOOST_CHECK_EQUAL (dcp::LanguageTag("de-Dogr-DE-aranes").to_string(), "de-Dogr-DE-aranes");
+       BOOST_CHECK_EQUAL (dcp::LanguageTag("de-Dogr-DE-aranes-lemosin").to_string(), "de-Dogr-DE-aranes-lemosin");
+       BOOST_CHECK_EQUAL (dcp::LanguageTag("de-Dogr-DE-aranes-lemosin-abv").to_string(), "de-Dogr-DE-aranes-lemosin-abv");
+       BOOST_CHECK_EQUAL (dcp::LanguageTag("de-Dogr-DE-aranes-lemosin-abv-zsm").to_string(), "de-Dogr-DE-aranes-lemosin-abv-zsm");
+}
+