b12f722468408f88ce1788731541861c71c38714
[platform/upstream/libzypp.git] / tests / zypp / CheckSum_test.cc
1 #include <iostream>
2 #include <list>
3 #include <string>
4
5 // Boost.Test
6 #include <boost/test/auto_unit_test.hpp>
7
8 #include "zypp/base/Logger.h"
9 #include "zypp/base/Exception.h"
10 #include "zypp/ZYppFactory.h"
11 #include "zypp/Digest.h"
12 #include "zypp/ZYpp.h"
13
14
15 using boost::unit_test::test_case;
16 using namespace std;
17 using namespace zypp;
18
19 void chksumtest( const std::string & type_r, const std::string & sum_r )
20 {
21   BOOST_CHECK_EQUAL( type_r, CheckSum( sum_r ).type() );        // autodetect type
22   BOOST_CHECK_EQUAL( type_r, CheckSum( type_r, sum_r ).type() );
23   BOOST_CHECK_EQUAL( sum_r, Digest::digest( type_r, "" ) );
24   for ( const std::string & t : { "md5", "sha1", "sha224", "sha256", "sha384", "sha512", } )
25   {
26     if ( t != type_r )
27     {
28       BOOST_CHECK_THROW( CheckSum( t, sum_r ), Exception ); // wrong type/size
29     }
30   }
31 }
32
33 // most frequently you implement test cases as a free functions
34 BOOST_AUTO_TEST_CASE(checksum_test)
35 {
36   CheckSum e;
37   BOOST_CHECK( e.empty() );
38   BOOST_CHECK( e.type().empty() );
39   BOOST_CHECK( e.checksum().empty() );
40   //   sum for ""
41   //   md5  32 d41d8cd98f00b204e9800998ecf8427e
42   //     1  40 da39a3ee5e6b4b0d3255bfef95601890afd80709
43   //   224  56 d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f
44   //   256  64 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
45   //   384  96 38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b
46   //   512 128 cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e
47   chksumtest( CheckSum::md5Type(),      "d41d8cd98f00b204e9800998ecf8427e" );
48   chksumtest( CheckSum::sha1Type(),     "da39a3ee5e6b4b0d3255bfef95601890afd80709" );
49   chksumtest( CheckSum::sha224Type(),   "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f" );
50   chksumtest( CheckSum::sha256Type(),   "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" );
51   chksumtest( CheckSum::sha384Type(),   "38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b" );
52   chksumtest( CheckSum::sha512Type(),   "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e" );
53 }