class TestSealConfigFile(unittest.TestCase): CfgDefaultWithTitle = \ """[DEFAULT] key1:value1 key2:value2 """ CfgSection1 = \ """[DEFAULT] key1:value1 key2:value2 [ Section1 ] keyS1: valueS1 """ CfgSection2 = \ """[DEFAULT] key1:value1 key2:value2 [ Section1 ] keyS1: valueS1 [ Section2 ] keyS2: valueS2 """ def setUp(self): self.emptyConfig = SealConfigFile() self.config = SealConfigFile() def test_empty(self): self.assertFalse( self.emptyConfig.has_section("bla") ) self.assertTrue( self.emptyConfig.has_section("DEFAULT") ) self.assertEqual(0, len(self.emptyConfig.sections()) ) self.assertEqual(0, len(self.emptyConfig.items("non existent"))) def test_default(self): self.config.readfp(io.BytesIO(self.__class__.CfgDefaultWithTitle)) self.assertTrue( self.config.has_section("DEFAULT") ) self.assertTrue( self.config.has_section("default") ) self.assertTrue( self.config.has_section("deFAult") ) items = self.config.items("anything") self.assertEqual(2, len(items)) kv = dict(items) self.assertEqual(2, len(kv)) self.assertEqual("value1", kv.get("key1")) self.assertEqual("value2", kv.get("key2")) def test_equals(self): self.config.readfp( io.BytesIO("key1=value1\n") ) self.assertEqual("value1", self.config.get("default", "key1")) def test_colon(self): self.config.readfp( io.BytesIO("key1:value1\n") ) self.assertEqual("value1", self.config.get("default", "key1")) def test_trim_key(self): self.config.readfp( io.BytesIO(" key1 :value1\n") ) self.assertEqual("value1", self.config.get("default", "key1")) def test_trim_value(self): self.config.readfp( io.BytesIO("key1: value1 \n") ) self.assertEqual("value1", self.config.get("default", "key1")) def test_section1(self): self.config.readfp( io.BytesIO(self.__class__.CfgSection1) ) self.assertEqual("value1", self.config.get("Section1", "key1")) self.assertEqual("valueS1", self.config.get("Section1", "keyS1")) kv = dict(self.config.items("Section1")) # make sure the iterator goes through all k-v pairs, even the ones inherited from DEFAULT self.assertEqual(3, len(kv)) self.assertEqual("value1", kv.get("key1")) self.assertEqual("value2", kv.get("key2")) self.assertEqual("valueS1", kv.get("keyS1")) def test_section2(self): self.config.readfp( io.BytesIO(self.__class__.CfgSection2) ) self.assertEqual("value1", self.config.get("Section1", "key1")) self.assertEqual("valueS1", self.config.get("Section1", "keyS1")) self.assertTrue( self.config.get("Section2", "keyS1") is None) self.assertEqual("valueS2", self.config.get("Section2", "keyS2")) def test_section_that_doesnt_exist(self): self.config.readfp( io.BytesIO(self.__class__.CfgSection1) ) self.assertFalse( self.config.has_section("MySection") ) self.assertTrue( self.config.get("MySection", "option") is None ) def test_space_in_section_name(self): self.assertRaises(FormatError, self.config.readfp, io.BytesIO("[ Section 1 ]") ) def test_hash_comment(self): self.config.readfp( io.BytesIO(" #key1=value1\nkey2=value2;\n") ) self.assertTrue( self.config.get("default", "key1") is None) self.assertEqual("value2;", self.config.get("default", "key2")) def test_semi_colon_comment(self): self.config.readfp( io.BytesIO(" ;key1=value1\nkey2=value2;\n") ) self.assertTrue( self.config.get("default", "key1") is None) self.assertEqual("value2;", self.config.get("default", "key2"))
class TestSealConfigFile(unittest.TestCase): CfgDefaultWithTitle = \ """[DEFAULT] key1:value1 key2:value2 """ CfgSection1 = \ """[DEFAULT] key1:value1 key2:value2 [ Section1 ] keyS1: valueS1 """ CfgSection2 = \ """[DEFAULT] key1:value1 key2:value2 [ Section1 ] keyS1: valueS1 [ Section2 ] keyS2: valueS2 """ def setUp(self): self.emptyConfig = SealConfigFile() self.config = SealConfigFile() def test_empty(self): self.assertFalse(self.emptyConfig.has_section("bla")) self.assertTrue(self.emptyConfig.has_section("DEFAULT")) self.assertEqual(0, len(self.emptyConfig.sections())) self.assertEqual(0, len(self.emptyConfig.items("non existent"))) def test_default(self): self.config.readfp(io.BytesIO(self.__class__.CfgDefaultWithTitle)) self.assertTrue(self.config.has_section("DEFAULT")) self.assertTrue(self.config.has_section("default")) self.assertTrue(self.config.has_section("deFAult")) items = self.config.items("anything") self.assertEqual(2, len(items)) kv = dict(items) self.assertEqual(2, len(kv)) self.assertEqual("value1", kv.get("key1")) self.assertEqual("value2", kv.get("key2")) def test_equals(self): self.config.readfp(io.BytesIO("key1=value1\n")) self.assertEqual("value1", self.config.get("default", "key1")) def test_colon(self): self.config.readfp(io.BytesIO("key1:value1\n")) self.assertEqual("value1", self.config.get("default", "key1")) def test_trim_key(self): self.config.readfp(io.BytesIO(" key1 :value1\n")) self.assertEqual("value1", self.config.get("default", "key1")) def test_trim_value(self): self.config.readfp(io.BytesIO("key1: value1 \n")) self.assertEqual("value1", self.config.get("default", "key1")) def test_section1(self): self.config.readfp(io.BytesIO(self.__class__.CfgSection1)) self.assertEqual("value1", self.config.get("Section1", "key1")) self.assertEqual("valueS1", self.config.get("Section1", "keyS1")) kv = dict(self.config.items("Section1")) # make sure the iterator goes through all k-v pairs, even the ones inherited from DEFAULT self.assertEqual(3, len(kv)) self.assertEqual("value1", kv.get("key1")) self.assertEqual("value2", kv.get("key2")) self.assertEqual("valueS1", kv.get("keyS1")) def test_section2(self): self.config.readfp(io.BytesIO(self.__class__.CfgSection2)) self.assertEqual("value1", self.config.get("Section1", "key1")) self.assertEqual("valueS1", self.config.get("Section1", "keyS1")) self.assertTrue(self.config.get("Section2", "keyS1") is None) self.assertEqual("valueS2", self.config.get("Section2", "keyS2")) def test_section_that_doesnt_exist(self): self.config.readfp(io.BytesIO(self.__class__.CfgSection1)) self.assertFalse(self.config.has_section("MySection")) self.assertTrue(self.config.get("MySection", "option") is None) def test_space_in_section_name(self): self.assertRaises(FormatError, self.config.readfp, io.BytesIO("[ Section 1 ]")) def test_hash_comment(self): self.config.readfp(io.BytesIO(" #key1=value1\nkey2=value2;\n")) self.assertTrue(self.config.get("default", "key1") is None) self.assertEqual("value2;", self.config.get("default", "key2")) def test_semi_colon_comment(self): self.config.readfp(io.BytesIO(" ;key1=value1\nkey2=value2;\n")) self.assertTrue(self.config.get("default", "key1") is None) self.assertEqual("value2;", self.config.get("default", "key2"))