gem5  v21.0.0.0
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
inifile.test.cc
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2018 ARM Limited
3  * All rights reserved
4  *
5  * Copyright (c) 2002-2005 The Regents of The University of Michigan
6  * All rights reserved.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions are
10  * met: redistributions of source code must retain the above copyright
11  * notice, this list of conditions and the following disclaimer;
12  * redistributions in binary form must reproduce the above copyright
13  * notice, this list of conditions and the following disclaimer in the
14  * documentation and/or other materials provided with the distribution;
15  * neither the name of the copyright holders nor the names of its
16  * contributors may be used to endorse or promote products derived from
17  * this software without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30  */
31 
32 #include <gtest/gtest.h>
33 
34 #include <fstream>
35 #include <iostream>
36 #include <string>
37 #include <vector>
38 
39 #include "base/inifile.hh"
40 
41 namespace {
42 
43 std::istringstream iniFile(R"ini_file(
44 [General]
45  Test1=BARasdf
46  Test2=bar
47 
48 [Junk]
49 Test3=yo
50 Test4=mama
51 
52 [Foo]
53 Foo1=89
54 Foo2=384
55 
56 [General]
57 Test3=89
58 
59 [Junk]
60 Test4+=mia
61 )ini_file");
62 
63 };
64 
65 TEST(Initest, MatchFound)
66 {
67  IniFile simConfigDB;
68  simConfigDB.load(iniFile);
69 
70  std::string value;
71 
72  auto ret = simConfigDB.find("General", "Test2", value);
73  ASSERT_TRUE(ret);
74  ASSERT_STREQ(value.c_str(), "bar");
75 
76  ret = simConfigDB.find("Junk", "Test3", value);
77  ASSERT_TRUE(ret);
78  ASSERT_STREQ(value.c_str(), "yo");
79 
80  ret = simConfigDB.find("Junk", "Test4", value);
81  ASSERT_TRUE(ret);
82  ASSERT_STREQ(value.c_str(), "mama mia");
83 
84  ret = simConfigDB.find("General", "Test1", value);
85  ASSERT_TRUE(ret);
86  ASSERT_STREQ(value.c_str(), "BARasdf");
87 
88  ret = simConfigDB.find("General", "Test3", value);
89  ASSERT_TRUE(ret);
90  ASSERT_STREQ(value.c_str(), "89");
91 }
92 
93 TEST(Initest, MatchNotFound)
94 {
95  IniFile simConfigDB;
96  simConfigDB.load(iniFile);
97 
98  std::string value;
99 
100  auto ret = simConfigDB.find("Junk2", "test3", value);
101  ASSERT_FALSE(ret);
102 
103  ret = simConfigDB.find("Junk", "test4", value);
104  ASSERT_FALSE(ret);
105 }
IniFile::find
bool find(const std::string &section, const std::string &entry, std::string &value) const
Find value corresponding to given section and entry names.
Definition: inifile.cc:212
IniFile
This class represents the contents of a ".ini" file.
Definition: inifile.hh:52
TEST
TEST(Initest, MatchFound)
Definition: inifile.test.cc:65
inifile.hh
IniFile::load
bool load(std::istream &f)
Load parameter settings from given istream.
Definition: inifile.cc:176

Generated on Tue Mar 23 2021 19:41:24 for gem5 by doxygen 1.8.17