Imported Upstream version 17.22.1
[platform/upstream/libzypp.git] / tests / zypp / ContentType_test.cc
1 #include <boost/test/unit_test.hpp>
2 #include <iostream>
3 #include <set>
4 #include "zypp/ContentType.h"
5
6 using std::cout;
7 using std::endl;
8
9 using zypp::ContentType;
10
11 BOOST_AUTO_TEST_CASE(contenttype_default)
12 {
13   ContentType v;
14   BOOST_CHECK( !v );
15   BOOST_CHECK( v.empty() );
16   BOOST_CHECK( v.emptyType() );
17   BOOST_CHECK( v.emptySubtype() );
18
19   ContentType w( "/" );
20   BOOST_CHECK_EQUAL( v == w, true );
21   BOOST_CHECK_EQUAL( v != w, false );
22   BOOST_CHECK_EQUAL( v <  w, false );
23   BOOST_CHECK_EQUAL( v <= w, true );
24   BOOST_CHECK_EQUAL( v >  w, false );
25   BOOST_CHECK_EQUAL( v >= w, true );
26
27   BOOST_CHECK_EQUAL( v.asString(), "" );
28 }
29
30 BOOST_AUTO_TEST_CASE(contenttype_val)
31 {
32   BOOST_CHECK_THROW( ContentType( " " ), std::invalid_argument );
33
34   BOOST_CHECK_THROW( ContentType( "//" ), std::invalid_argument );
35   BOOST_CHECK_THROW( ContentType( "/ " ), std::invalid_argument );
36
37   BOOST_CHECK_THROW( ContentType( "/", "a" ), std::invalid_argument );
38   BOOST_CHECK_THROW( ContentType( "a", "/" ), std::invalid_argument );
39
40   BOOST_CHECK_THROW( ContentType( " ", "a" ), std::invalid_argument );
41   BOOST_CHECK_THROW( ContentType( "a", " " ), std::invalid_argument );
42 }
43
44 BOOST_AUTO_TEST_CASE(contenttype_cmp)
45 {
46   std::set<ContentType> c( {
47     ContentType( "" ),
48     ContentType( "/" ),         // == ""
49     ContentType( "a" ),
50     ContentType( "a/" ),        // == "a"
51     ContentType( "/a" ),
52     ContentType( "" , "a" ),    // == "/a"
53     ContentType( "a/b" ),
54     ContentType( "b/b" ),
55     ContentType( "b/c" )
56   });
57
58   std::set<ContentType>::const_iterator i = c.begin();
59   BOOST_CHECK_EQUAL( *(i++), ContentType() );
60   BOOST_CHECK_EQUAL( *(i++), ContentType( "", "a" ) );
61   BOOST_CHECK_EQUAL( *(i++), ContentType( "a", "" ) );
62   BOOST_CHECK_EQUAL( *(i++), ContentType( "a", "b" ) );
63   BOOST_CHECK_EQUAL( *(i++), ContentType( "b", "b" ) );
64   BOOST_CHECK_EQUAL( *(i++), ContentType( "b", "c" ) );
65   BOOST_CHECK( i == c.end() );
66 }