Imported Upstream version 14.45.0
[platform/upstream/libzypp.git] / tests / zypp / Arch_test.cc
1 // Arch.cc
2 //
3 // tests for Arch
4 //
5
6 #include <iostream>
7 #include <list>
8 #include <string>
9
10 #include "zypp/base/Logger.h"
11 #include "zypp/Arch.h"
12
13 // Boost.Test
14 #include <boost/test/floating_point_comparison.hpp>
15 #include <boost/test/auto_unit_test.hpp>
16
17 using boost::unit_test::test_suite;
18 using boost::unit_test::test_case;
19 using boost::test_tools::close_at_tolerance;
20
21 using namespace std;
22 using namespace zypp;
23
24 /******************************************************************
25 **
26 **
27 **      FUNCTION NAME : main
28 **      FUNCTION TYPE : int
29 **
30 **      DESCRIPTION :
31 */
32 BOOST_AUTO_TEST_CASE(arch_test)
33 {
34   //////////////////////////////////////////////////////////////////////
35   //
36   //////////////////////////////////////////////////////////////////////
37   BOOST_REQUIRE( Arch()   == Arch_noarch );
38   BOOST_REQUIRE( Arch("") == Arch_empty );
39   BOOST_REQUIRE( ! Arch_noarch.empty() );
40   BOOST_REQUIRE( Arch_empty.empty() );
41   BOOST_REQUIRE( Arch_noarch.isBuiltIn() );
42   BOOST_REQUIRE( ! Arch_empty.isBuiltIn() );
43   BOOST_REQUIRE( Arch_empty != Arch_noarch );
44   //////////////////////////////////////////////////////////////////////
45   //
46   //////////////////////////////////////////////////////////////////////
47   BOOST_CHECK_EQUAL( Arch("i386"), Arch_i386 );
48   BOOST_CHECK_EQUAL( Arch("i386").idStr(), "i386" );
49   BOOST_CHECK_EQUAL( Arch("i386").asString(), "i386" );
50   BOOST_REQUIRE( Arch_i386.isBuiltIn() );
51
52   BOOST_CHECK_EQUAL( Arch("FOO").idStr(), "FOO" );
53   BOOST_CHECK_EQUAL( Arch("FOO").asString(), "FOO" );
54   BOOST_REQUIRE( ! Arch("FOO").isBuiltIn() );
55   //////////////////////////////////////////////////////////////////////
56   //
57   //////////////////////////////////////////////////////////////////////
58   BOOST_REQUIRE( Arch_noarch.compatibleWith( Arch_noarch ) );
59   BOOST_REQUIRE( Arch_noarch.compatibleWith( Arch_i386 ) );
60   BOOST_REQUIRE( Arch_noarch.compatibleWith( Arch_x86_64 ) );
61
62   BOOST_REQUIRE( ! Arch_i386.compatibleWith( Arch_noarch ) );
63   BOOST_REQUIRE( Arch_i386.compatibleWith( Arch_i386 ) );
64   BOOST_REQUIRE( Arch_i386.compatibleWith( Arch_x86_64 ) );
65
66   BOOST_REQUIRE( ! Arch_x86_64.compatibleWith( Arch_noarch ) );
67   BOOST_REQUIRE( ! Arch_x86_64.compatibleWith( Arch_i386 ) );
68   BOOST_REQUIRE( Arch_x86_64.compatibleWith( Arch_x86_64 ) );
69   //////////////////////////////////////////////////////////////////////
70   //
71   //////////////////////////////////////////////////////////////////////
72   BOOST_CHECK_EQUAL( Arch::baseArch( Arch_x86_64 ), Arch_x86_64 );
73   BOOST_CHECK_EQUAL( Arch::baseArch( Arch_i686 ), Arch_i386 );
74   //////////////////////////////////////////////////////////////////////
75   //
76   //////////////////////////////////////////////////////////////////////
77   BOOST_REQUIRE( Arch_i386.compare( Arch_noarch ) >  0 );
78   BOOST_REQUIRE( Arch_i386.compare( Arch_i386 )   == 0 );
79   BOOST_REQUIRE( Arch_i386.compare( Arch_x86_64 ) <  0 );
80 }