def test_inf_strings_should_throw_on_bad_input(self):
        Strings = InfStrings()

        with self.assertRaises(TypeError):
            Strings.AddLocalizableString(1, 2)

        with self.assertRaises(ValueError):
            Strings.AddLocalizableString("foo bar", "value")

        with self.assertRaises(ValueError):
            Strings.AddLocalizableString("ThisIsNotAllowed;", "value")

        with self.assertRaises(TypeError):
            Strings.AddNonLocalizableString(1, 2)

        with self.assertRaises(ValueError):
            Strings.AddNonLocalizableString("foo bar", "value")

        with self.assertRaises(ValueError):
            Strings.AddNonLocalizableString("ThisIsNotAllowed;", "value")
    def test_inf_strings(self):
        Strings = InfStrings()
        Strings.AddLocalizableString("DiskName", "Firmware Update")
        Strings.AddLocalizableString("Provider", "Test Provider")
        Strings.AddLocalizableString("Tag1Desc", "Test Firmware")

        Strings.AddNonLocalizableString("DIRID_WINDOWS", "10")
        Strings.AddNonLocalizableString("REG_DWORD", "0x00010001")

        ExpectedStr = textwrap.dedent("""\
            [Strings]
            ; localizable
            DiskName = "Firmware Update"
            Provider = "Test Provider"
            Tag1Desc = "Test Firmware"

            ; non-localizable
            DIRID_WINDOWS = 10
            REG_DWORD     = 0x00010001
            """)

        self.assertEqual(ExpectedStr, str(Strings))