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 * Authors: Nathan Binkert 32 * Steve Reinhardt 33 */ 34 35#include <gtest/gtest.h> 36 37#include <fstream> 38#include <iostream> 39#include <string> 40#include <vector> 41 42#include "base/inifile.hh" 43 44using namespace std; 45 46namespace { 47 48std::istringstream iniFile(R"ini_file( 49[General] 50 Test1=BARasdf 51 Test2=bar 52 53[Junk] 54Test3=yo 55Test4=mama 56 57[Foo] 58Foo1=89 59Foo2=384 60 61[General] 62Test3=89 63 64[Junk] 65Test4+=mia 66)ini_file"); 67 68}; 69 70TEST(Initest, MatchFound) 71{ 72 IniFile simConfigDB; 73 simConfigDB.load(iniFile); 74 75 std::string value; 76 77 auto ret = simConfigDB.find("General", "Test2", value); 78 ASSERT_TRUE(ret); 79 ASSERT_STREQ(value.c_str(), "bar"); 80 81 ret = simConfigDB.find("Junk", "Test3", value); 82 ASSERT_TRUE(ret); 83 ASSERT_STREQ(value.c_str(), "yo"); 84 85 ret = simConfigDB.find("Junk", "Test4", value); 86 ASSERT_TRUE(ret); 87 ASSERT_STREQ(value.c_str(), "mama mia"); 88 89 ret = simConfigDB.find("General", "Test1", value); 90 ASSERT_TRUE(ret); 91 ASSERT_STREQ(value.c_str(), "BARasdf"); 92 93 ret = simConfigDB.find("General", "Test3", value); 94 ASSERT_TRUE(ret); 95 ASSERT_STREQ(value.c_str(), "89"); 96} 97 98TEST(Initest, MatchNotFound) 99{ 100 IniFile simConfigDB; 101 simConfigDB.load(iniFile); 102 103 std::string value; 104 105 auto ret = simConfigDB.find("Junk2", "test3", value); 106 ASSERT_FALSE(ret); 107 108 ret = simConfigDB.find("Junk", "test4", value); 109 ASSERT_FALSE(ret); 110} 111