123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- using System.IO;
- using System.Threading.Tasks;
- using Masuit.Tools.Files;
- using Xunit;
- namespace Masuit.Tools.Abstractions.Test.Files;
- public class IniFileTests
- {
- private readonly string _testFilePath = Path.Combine(Path.GetTempPath(), "test.ini");
- public IniFileTests()
- {
- if (File.Exists(_testFilePath))
- {
- File.Delete(_testFilePath);
- }
- }
- [Fact]
- public void Constructor_ShouldLoadExistingFile()
- {
- File.WriteAllText(_testFilePath, "[Section1]\nKey1=Value1\nKey2=Value2");
- var iniFile = new IniFile(_testFilePath);
- var section = iniFile.GetSection("Section1");
- Assert.Equal("Value1", section["Key1"]);
- Assert.Equal("Value2", section["Key2"]);
- }
- [Fact]
- public void Reload_ShouldReloadFile()
- {
- File.WriteAllText(_testFilePath, "[Section1]\nKey1=Value1\nKey2=Value2");
- var iniFile = new IniFile(_testFilePath);
- File.WriteAllText(_testFilePath, "[Section1]\nKey1=NewValue1\nKey2=NewValue2");
- iniFile.Reload();
- var section = iniFile.GetSection("Section1");
- Assert.Equal("NewValue1", section["Key1"]);
- Assert.Equal("NewValue2", section["Key2"]);
- }
- [Fact]
- public void Save_ShouldSaveToFile()
- {
- var iniFile = new IniFile(_testFilePath);
- iniFile.SetValue("Section1", "Key1", "Value1");
- iniFile.SetValue("Section1", "Key2", "Value2");
- iniFile.Save();
- var content = File.ReadAllText(_testFilePath);
- Assert.Contains("[Section1]", content);
- Assert.Contains("Key1=Value1", content);
- Assert.Contains("Key2=Value2", content);
- }
- [Fact]
- public async Task SaveAsync_ShouldSaveToFile()
- {
- var iniFile = new IniFile(_testFilePath);
- iniFile.SetValue("Section1", "Key1", "Value1");
- iniFile.SetValue("Section1", "Key2", "Value2");
- await iniFile.SaveAsync();
- var content = await File.ReadAllTextAsync(_testFilePath);
- Assert.Contains("[Section1]", content);
- Assert.Contains("Key1=Value1", content);
- Assert.Contains("Key2=Value2", content);
- }
- [Fact]
- public void GetValue_ShouldReturnDefaultValueIfKeyNotFound()
- {
- var iniFile = new IniFile(_testFilePath);
- var value = iniFile.GetValue("Section1", "Key1", "DefaultValue");
- Assert.Equal("DefaultValue", value);
- }
- [Fact]
- public void GetValue_ShouldReturnValueIfKeyFound()
- {
- var iniFile = new IniFile(_testFilePath);
- iniFile.SetValue("Section1", "Key1", "Value1");
- var value = iniFile.GetValue("Section1", "Key1");
- Assert.Equal("Value1", value);
- }
- [Fact]
- public void GetValue_Generic_ShouldReturnConvertedValue()
- {
- var iniFile = new IniFile(_testFilePath);
- iniFile.SetValue("Section1", "Key1", "123");
- var value = iniFile.GetValue<int>("Section1", "Key1");
- Assert.Equal(123, value);
- }
- [Fact]
- public void GetSections_ShouldReturnAllSections()
- {
- var iniFile = new IniFile(_testFilePath);
- iniFile.SetValue("Section1", "Key1", "Value1");
- iniFile.SetValue("Section2", "Key2", "Value2");
- var sections = iniFile.GetSections();
- Assert.Contains(sections, s => s.Name == "Section1");
- Assert.Contains(sections, s => s.Name == "Section2");
- }
- [Fact]
- public void GetSection_ShouldReturnAllKeyValuesInSection()
- {
- var iniFile = new IniFile(_testFilePath);
- iniFile.SetValue("Section1", "Key1", "Value1");
- iniFile.SetValue("Section1", "Key2", "Value2");
- var section = iniFile.GetSection("Section1");
- Assert.Equal("Value1", section["Key1"]);
- Assert.Equal("Value2", section["Key2"]);
- }
- [Fact]
- public void GetSection_Generic_ShouldReturnBoundObject()
- {
- var iniFile = new IniFile(_testFilePath);
- iniFile.SetValue("Section1", "Key1", "Value1");
- iniFile.SetValue("Section1", "Key2", "Value2");
- var section = iniFile.GetSection<TestSection>("Section1");
- Assert.Equal("Value1", section.Key1);
- Assert.Equal("Value2", section.Key2);
- }
- [Fact]
- public void SetValue_ShouldSetKeyValue()
- {
- var iniFile = new IniFile(_testFilePath);
- iniFile.SetValue("Section1", "Key1", "Value1");
- var value = iniFile.GetValue("Section1", "Key1");
- Assert.Equal("Value1", value);
- }
- [Fact]
- public void SetValue_Bool_ShouldSetKeyValue()
- {
- var iniFile = new IniFile(_testFilePath);
- iniFile.SetValue("Section1", "Key1", true);
- var value = iniFile.GetValue("Section1", "Key1");
- Assert.Equal("true", value);
- }
- [Fact]
- public void SetValue_Generic_ShouldSetKeyValue()
- {
- var iniFile = new IniFile(_testFilePath);
- iniFile.SetValue("Section1", "Key1", 123);
- var value = iniFile.GetValue("Section1", "Key1");
- Assert.Equal("123", value);
- }
- [Fact]
- public void ClearSection_ShouldClearAllKeysInSection()
- {
- var iniFile = new IniFile(_testFilePath);
- iniFile.SetValue("Section1", "Key1", "Value1");
- iniFile.ClearSection("Section1");
- var section = iniFile.GetSection("Section1");
- Assert.Empty(section);
- }
- [Fact]
- public void ClearAllSection_ShouldClearAllSections()
- {
- var iniFile = new IniFile(_testFilePath);
- iniFile.SetValue("Section1", "Key1", "Value1");
- iniFile.SetValue("Section2", "Key2", "Value2");
- iniFile.ClearAllSection();
- var sections = iniFile.GetSections();
- Assert.Empty(sections);
- }
- private class TestSection
- {
- public string Key1 { get; set; }
- public string Key2 { get; set; }
- }
- }
|