gem5 v24.0.0.0
Loading...
Searching...
No Matches
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
41using namespace gem5;
42
43namespace {
44
45std::istringstream iniFile(R"ini_file(
46[General]
47 Test1=BARasdf
48 Test2=bar
49
50[Junk]
51Test3=yo
52Test4=mama
53
54[Foo]
55Foo1=89
56Foo2=384
57
58[General]
59Test3=89
60
61[Junk]
62Test4+=mia
63)ini_file");
64
65};
66
67TEST(Initest, MatchFound)
68{
69 IniFile simConfigDB;
70 simConfigDB.load(iniFile);
71
72 std::string value;
73
74 auto ret = simConfigDB.find("General", "Test2", value);
75 ASSERT_TRUE(ret);
76 ASSERT_STREQ(value.c_str(), "bar");
77
78 ret = simConfigDB.find("Junk", "Test3", value);
79 ASSERT_TRUE(ret);
80 ASSERT_STREQ(value.c_str(), "yo");
81
82 ret = simConfigDB.find("Junk", "Test4", value);
83 ASSERT_TRUE(ret);
84 ASSERT_STREQ(value.c_str(), "mama mia");
85
86 ret = simConfigDB.find("General", "Test1", value);
87 ASSERT_TRUE(ret);
88 ASSERT_STREQ(value.c_str(), "BARasdf");
89
90 ret = simConfigDB.find("General", "Test3", value);
91 ASSERT_TRUE(ret);
92 ASSERT_STREQ(value.c_str(), "89");
93}
94
95TEST(Initest, MatchNotFound)
96{
97 IniFile simConfigDB;
98 simConfigDB.load(iniFile);
99
100 std::string value;
101
102 auto ret = simConfigDB.find("Junk2", "test3", value);
103 ASSERT_FALSE(ret);
104
105 ret = simConfigDB.find("Junk", "test4", value);
106 ASSERT_FALSE(ret);
107}
This class represents the contents of a ".ini" file.
Definition inifile.hh:56
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:207
bool load(std::istream &f)
Load parameter settings from given istream.
Definition inifile.cc:171
Declaration of IniFile object.
TEST(Initest, MatchFound)
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
Definition binary32.hh:36

Generated on Tue Jun 18 2024 16:24:00 for gem5 by doxygen 1.11.0