using NUnit.Framework;using System;using VBASync.Model;namespace VBASync.Tests.UnitTests{[TestFixture]public class IniFileTests{[Test]public void IniDefaultBoolIsNull(){var content = "[General]" + Environment.NewLine;Assert.That(MakeIni(content).GetBool("General", "BoolTest"), Is.Null);}[Test]public void IniDefaultSubject(){var content = "BoolTest=0" + Environment.NewLine;Assert.That(MakeIni(content).GetBool("General", "BoolTest"), Is.EqualTo(false));}[Test]public void IniInvalidBoolIsNull(){var content = "[General]" + Environment.NewLine+ "BoolTest=bubba" + Environment.NewLine;Assert.That(MakeIni(content).GetBool("General", "BoolTest"), Is.Null);}[Test]public void IniOverride(){var content = "[General]" + Environment.NewLine+ "BoolTest=0" + Environment.NewLine+ "BoolTest=1" + Environment.NewLine;Assert.That(MakeIni(content).GetBool("General", "BoolTest"), Is.EqualTo(true));}[TestCase("0", ExpectedResult = false)][TestCase("1", ExpectedResult = true)][TestCase("False", ExpectedResult = false)][TestCase("FALSE", ExpectedResult = false)][TestCase("No", ExpectedResult = false)][TestCase("NO", ExpectedResult = false)][TestCase("True", ExpectedResult = true)][TestCase("TRUE", ExpectedResult = true)][TestCase("Yes", ExpectedResult = true)][TestCase("YES", ExpectedResult = true)]public bool? IniParsesBool(string value){var content = "[General]" + Environment.NewLine+ "BoolTest=" + value + Environment.NewLine;return MakeIni(content).GetBool("General", "BoolTest");}[Test]public void IniParsesGuid(){var content = "[General]" + Environment.NewLine+ "GuidTest=b5b92f29-a4e3-4da0-8a93-608143212733" + Environment.NewLine;Assert.That(MakeIni(content).GetGuid("General", "GuidTest"),Is.EqualTo(new Guid("b5b92f29-a4e3-4da0-8a93-608143212733")));}[TestCase(@"""-7""", ExpectedResult = -7)][TestCase(@"""5""", ExpectedResult = 5)][TestCase("-23", ExpectedResult = -23)][TestCase("4", ExpectedResult = 4)]public int? IniParsesInt(string value){var content = "[General]" + Environment.NewLine+ "IntTest=" + value + Environment.NewLine;return MakeIni(content).GetInt("General", "IntTest");}[TestCase(@" ""value with spaces inside "" ", ExpectedResult = "value with spaces inside ")][TestCase("bubba", ExpectedResult = "bubba")]public string IniParsesString(string value){var content = "[General]" + Environment.NewLine+ "StringTest=" + value + Environment.NewLine;return MakeIni(content).GetString("General", "StringTest");}[Test]public void IniParsesVersion(){var content = "[General]" + Environment.NewLine+ "VersionTest=215397.2" + Environment.NewLine;Assert.That(MakeIni(content).GetVersion("General", "VersionTest"),Is.EqualTo(new Version(215397, 2)));}[Test]public void IniParsesSpacedBool(){var content = " [General] " + Environment.NewLine+ " BoolTest = 1 " + Environment.NewLine;Assert.That(MakeIni(content).GetBool("General", "BoolTest"), Is.EqualTo(true));}[Test]public void IniSubjectIsCaseInsensitive(){var content = "[general]" + Environment.NewLine+ "BoolTest=1" + Environment.NewLine;Assert.That(MakeIni(content).GetBool("General", "BoolTest"), Is.EqualTo(true));}[Test]public void IniValueIsCaseInsensitive(){var content = "[General]" + Environment.NewLine+ "booltest=1" + Environment.NewLine;Assert.That(MakeIni(content).GetBool("General", "BoolTest"), Is.EqualTo(true));}[Test]public void IniWithNoNewLine(){Assert.That(MakeIni("BoolTest=1").GetBool("General", "BoolTest"), Is.EqualTo(true));}[Test]public void IniWithoutEndingNewLine(){var content = "[General]" + Environment.NewLine+ "BoolTest=1";Assert.That(MakeIni(content).GetBool("General", "BoolTest"), Is.EqualTo(true));}private IniFile MakeIni(string content){var ini = new IniFile();ini.ProcessString(content);return ini;}}}