dcdd4ae79a7696b8ca1eda28430d2966a01181db
[platform/upstream/libzypp.git] / tests / parser / inifile / inidict_test.cc
1 #include <stdio.h>
2 #include <iostream>
3 #include <fstream>
4 #include <vector>
5 #include <list>
6 #include <boost/test/unit_test.hpp>
7 #include <boost/test/parameterized_test.hpp>
8 #include <boost/test/unit_test_log.hpp>
9
10 #include "zypp/base/Logger.h"
11 #include "zypp/base/InputStream.h"
12 #include "zypp/parser/IniDict.h"
13 #include "zypp/Url.h"
14 #include "zypp/PathInfo.h"
15
16 using std::cout;
17 using std::endl;
18 using std::string;
19 using std::map;
20 using namespace zypp;
21 using namespace zypp::parser;
22 using namespace boost::unit_test;
23
24
25 void ini_read_test(const string &dir)
26 {
27   InputStream is((Pathname(dir)+"/1.ini"));
28   IniDict dict(is);
29
30   //MIL << dict["homedmacvicar"]["type"] << endl;
31
32   for ( IniDict::section_const_iterator it = dict.sectionsBegin(); it != dict.sectionsEnd(); ++it )
33   {
34     MIL << (*it) << endl;
35     
36     for ( IniDict::entry_const_iterator it2 = dict.entriesBegin(*it); it2 != dict.entriesEnd(*it); ++it2 )
37     {
38       MIL << "  - " << (*it2).first << " | " << (*it2).second << endl;
39     }
40   }
41
42   BOOST_CHECK( dict.hasSection("addons") );
43   BOOST_CHECK( !dict.hasSection("uhlala") );
44   BOOST_CHECK( dict.hasEntry("contrib", "name") );
45   BOOST_CHECK( !dict.hasEntry("foo", "bar") );
46 }
47
48 void ini_read_test2(const string &dir)
49 {
50   InputStream is((Pathname(dir)+"/2.ini"));
51   IniDict dict(is);
52
53   BOOST_CHECK( find( dict.sectionsBegin(), dict.sectionsEnd(), "base" ) != dict.sectionsEnd() );
54   //IniDict::entry_const_iterator i = find( dict.entriesBegin("base"), dict.entriesEnd("base"), "name");
55   //BOOST_CHECK( i != dict.entriesEnd("base") );
56 }
57
58 test_suite*
59 init_unit_test_suite( int argc, char *argv[] )
60 {
61   string datadir;
62   if (argc < 2)
63   {
64     datadir = TESTS_SRC_DIR;
65     datadir = (Pathname(datadir) + "/parser/inifile/data").asString();
66     cout << "inidict_test:"
67       " path to directory with test data required as parameter. Using " << datadir  << endl;
68     //return (test_suite *)0;
69   }
70   else
71   {
72     datadir = argv[1];
73   }
74   
75   test_suite* test= BOOST_TEST_SUITE("ini_file");
76   
77   std::string const params[] = { datadir };
78   test->add(BOOST_PARAM_TEST_CASE(&ini_read_test,
79                                  (std::string const*)params, params+1));
80   test->add(BOOST_PARAM_TEST_CASE(&ini_read_test2,
81                                  (std::string const*)params, params+1));
82   return test;
83 }
84
85 // vim: set ts=2 sts=2 sw=2 ai et: