1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ 2 /* 3 * This file is part of the LibreOffice project. 4 * 5 * This Source Code Form is subject to the terms of the Mozilla Public 6 * License, v. 2.0. If a copy of the MPL was not distributed with this 7 * file, You can obtain one at http://mozilla.org/MPL/2.0/. 8 */ 9 10 #include <test/bootstrapfixture.hxx> 11 12 #include <osl/file.hxx> 13 #include <rtl/ustring.hxx> 14 15 #include <tools/config.hxx> 16 17 class ToolsConfigTest : public test::BootstrapFixture 18 { 19 public: ToolsConfigTest()20 ToolsConfigTest() 21 : BootstrapFixture(true, false) 22 { 23 } 24 setUp()25 virtual void setUp() override 26 { 27 maOriginalConfigFile = m_directories.getURLFromSrc("/tools/qa/data/"); 28 maOriginalConfigFile += "testconfig.ini"; 29 30 auto const e = osl::FileBase::getTempDirURL(maConfigFile); 31 CPPUNIT_ASSERT_EQUAL_MESSAGE("cannot create temp folder", osl::File::RC::E_None, e); 32 maConfigFile += "/config.ini"; 33 34 osl::File::copy(maOriginalConfigFile, maConfigFile); 35 } 36 tearDown()37 virtual void tearDown() override { osl::File::remove(maConfigFile); } 38 testHasGroup()39 void testHasGroup() 40 { 41 Config aConfig(maConfigFile); 42 CPPUNIT_ASSERT(aConfig.HasGroup("TestGroup")); 43 CPPUNIT_ASSERT(aConfig.HasGroup("TestGroup2")); 44 } 45 testGetGroup()46 void testGetGroup() 47 { 48 Config aConfig(maConfigFile); 49 CPPUNIT_ASSERT_EQUAL(OString(""), aConfig.GetGroup()); 50 51 CPPUNIT_ASSERT_EQUAL(OString("TestGroup"), aConfig.GetGroupName(0)); 52 CPPUNIT_ASSERT_EQUAL(OString("TestGroup2"), aConfig.GetGroupName(1)); 53 CPPUNIT_ASSERT_EQUAL(OString(""), aConfig.GetGroupName(2)); 54 } 55 testSetGroup()56 void testSetGroup() 57 { 58 Config aConfig(maConfigFile); 59 60 aConfig.SetGroup("TestGroup"); 61 CPPUNIT_ASSERT_EQUAL(OString("TestGroup"), aConfig.GetGroup()); 62 63 // so this is a quirk of Config - you can set the group name, 64 // but it might not exist so you really should first check if 65 // it exists via HasGroup() 66 aConfig.SetGroup("TestGroupA"); 67 CPPUNIT_ASSERT(!aConfig.HasGroup("TestGroupA")); 68 CPPUNIT_ASSERT_EQUAL(OString("TestGroupA"), aConfig.GetGroup()); 69 } 70 testDeleteGroup()71 void testDeleteGroup() 72 { 73 { 74 Config aConfig(maConfigFile); 75 76 aConfig.DeleteGroup("TestGroup"); 77 CPPUNIT_ASSERT(!aConfig.HasGroup("TestGroup")); 78 CPPUNIT_ASSERT_EQUAL(OString("TestGroup2"), aConfig.GetGroupName(0)); 79 80 sal_uInt16 nActual = aConfig.GetGroupCount(); 81 CPPUNIT_ASSERT_EQUAL(sal_uInt16(1), nActual); 82 } 83 84 osl::File::copy(maOriginalConfigFile, maConfigFile); 85 86 { 87 Config aConfig(maConfigFile); 88 89 CPPUNIT_ASSERT(!aConfig.HasGroup("NonExistentTestGroup")); 90 aConfig.DeleteGroup("NonExistentTestGroup"); 91 CPPUNIT_ASSERT_EQUAL(OString("TestGroup"), aConfig.GetGroupName(0)); 92 93 sal_uInt16 nActual = aConfig.GetGroupCount(); 94 CPPUNIT_ASSERT_EQUAL(sal_uInt16(2), nActual); 95 } 96 97 osl::File::copy(maOriginalConfigFile, maConfigFile); 98 } 99 testGetGroupCount()100 void testGetGroupCount() 101 { 102 Config aConfig(maConfigFile); 103 sal_uInt16 nActual = aConfig.GetGroupCount(); 104 CPPUNIT_ASSERT_EQUAL(sal_uInt16(2), nActual); 105 } 106 testReadKey()107 void testReadKey() 108 { 109 Config aConfig(maConfigFile); 110 aConfig.SetGroup("TestGroup"); 111 CPPUNIT_ASSERT_EQUAL(OString("testvalue"), aConfig.ReadKey("testkey")); 112 CPPUNIT_ASSERT_EQUAL(OString(), aConfig.ReadKey("nonexistenttestkey")); 113 CPPUNIT_ASSERT_EQUAL(OString("notexists"), 114 aConfig.ReadKey("nonexistenttestkey", "notexists")); 115 116 aConfig.SetGroup("TestGroup2"); 117 CPPUNIT_ASSERT_EQUAL(OString("testvalue"), aConfig.ReadKey("testkey2")); 118 CPPUNIT_ASSERT_EQUAL(OString(), aConfig.ReadKey("nonexistenttestkey")); 119 CPPUNIT_ASSERT_EQUAL(OString("notexists"), 120 aConfig.ReadKey("nonexistenttestkey", "notexists")); 121 } 122 testGetKeyName()123 void testGetKeyName() 124 { 125 Config aConfig(maConfigFile); 126 aConfig.SetGroup("TestGroup"); 127 CPPUNIT_ASSERT_EQUAL(OString("testkey"), aConfig.GetKeyName(0)); 128 129 aConfig.SetGroup("TestGroup2"); 130 CPPUNIT_ASSERT_EQUAL(OString("testkey2"), aConfig.GetKeyName(0)); 131 } 132 testWriteDeleteKey()133 void testWriteDeleteKey() 134 { 135 Config aConfig(maConfigFile); 136 aConfig.SetGroup("TestGroup"); 137 aConfig.WriteKey("testkey_new", "testvalue"); 138 139 sal_uInt16 nExpected = 2; 140 sal_uInt16 nActual = aConfig.GetKeyCount(); 141 CPPUNIT_ASSERT_EQUAL(nExpected, nActual); 142 CPPUNIT_ASSERT_EQUAL(OString("testvalue"), aConfig.ReadKey("testkey_new")); 143 144 aConfig.DeleteKey("testkey_new"); 145 146 nExpected = 1; 147 nActual = aConfig.GetKeyCount(); 148 CPPUNIT_ASSERT_EQUAL(nExpected, nActual); 149 CPPUNIT_ASSERT_EQUAL(OString(), aConfig.ReadKey("testkey_new")); 150 151 aConfig.SetGroup("TestGroup2"); 152 aConfig.WriteKey("testkey_new", "testvalue"); 153 154 nActual = aConfig.GetKeyCount(); 155 nExpected = 2; 156 CPPUNIT_ASSERT_EQUAL(nExpected, nActual); 157 CPPUNIT_ASSERT_EQUAL(OString("testvalue"), aConfig.ReadKey("testkey_new")); 158 159 aConfig.DeleteKey("testkey_new"); 160 161 nActual = aConfig.GetKeyCount(); 162 nExpected = 1; 163 CPPUNIT_ASSERT_EQUAL(nExpected, nActual); 164 CPPUNIT_ASSERT_EQUAL(OString(), aConfig.ReadKey("testkey_new")); 165 166 aConfig.SetGroup("TestGroup3"); 167 aConfig.WriteKey("testkey_new_group3", "testvalue"); 168 169 nActual = aConfig.GetKeyCount(); 170 nExpected = 1; 171 CPPUNIT_ASSERT_EQUAL(nExpected, nActual); 172 CPPUNIT_ASSERT_EQUAL(OString("testvalue"), aConfig.ReadKey("testkey_new_group3")); 173 174 nExpected = 3; 175 CPPUNIT_ASSERT_EQUAL(nExpected, aConfig.GetGroupCount()); 176 177 osl::File::copy(maOriginalConfigFile, maConfigFile); 178 } 179 180 CPPUNIT_TEST_SUITE(ToolsConfigTest); 181 CPPUNIT_TEST(testHasGroup); 182 CPPUNIT_TEST(testGetGroup); 183 CPPUNIT_TEST(testSetGroup); 184 CPPUNIT_TEST(testDeleteGroup); 185 CPPUNIT_TEST(testReadKey); 186 CPPUNIT_TEST(testGetGroupCount); 187 CPPUNIT_TEST(testGetKeyName); 188 CPPUNIT_TEST(testWriteDeleteKey); 189 CPPUNIT_TEST_SUITE_END(); 190 191 private: 192 OUString maOriginalConfigFile; 193 OUString maConfigFile; 194 }; 195 196 CPPUNIT_TEST_SUITE_REGISTRATION(ToolsConfigTest); 197 198 CPPUNIT_PLUGIN_IMPLEMENT(); 199 200 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ 201