PreferencesSettingsTests.cs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. using System.Collections.Generic;
  2. using System.IO;
  3. using Newtonsoft.Json;
  4. using PixiEditor.Models.UserPreferences;
  5. using Xunit;
  6. namespace PixiEditorTests.ModelsTests.UserPreferencesTests
  7. {
  8. public class PreferencesSettingsTests
  9. {
  10. public static string PathToPreferencesFile { get; } = Path.Join("PixiEditor", "test_preferences.json");
  11. public PreferencesSettingsTests()
  12. {
  13. PreferencesSettings.Init(PathToPreferencesFile);
  14. }
  15. [Fact]
  16. public void TestThatPreferencesSettingsIsLoaded()
  17. {
  18. Assert.True(PreferencesSettings.IsLoaded);
  19. }
  20. [Fact]
  21. public void TestThatInitCreatesUserPreferencesJson()
  22. {
  23. Assert.True(File.Exists(PathToPreferencesFile));
  24. }
  25. [Theory]
  26. [InlineData(-2)]
  27. [InlineData(false)]
  28. [InlineData("string")]
  29. [InlineData(null)]
  30. public void TestThatGetPreferenceOnNonExistingKeyReturnsFallbackValue<T>(T value)
  31. {
  32. T fallbackValue = value;
  33. T preferenceValue = PreferencesSettings.GetPreference<T>("NonExistingPreference", fallbackValue);
  34. Assert.Equal(fallbackValue, preferenceValue);
  35. }
  36. [Theory]
  37. [InlineData("IntPreference", 1)]
  38. [InlineData("BoolPreference", true)]
  39. public void TestThatUpdatePreferenceUpdatesDictionary<T>(string name, T value)
  40. {
  41. PreferencesSettings.UpdatePreference(name, value);
  42. Assert.Equal(value, PreferencesSettings.GetPreference<T>(name));
  43. }
  44. [Theory]
  45. [InlineData("LongPreference", 1L)]
  46. public void TestThatSaveUpdatesFile<T>(string name, T value)
  47. {
  48. PreferencesSettings.Preferences[name] = value;
  49. PreferencesSettings.Save();
  50. using (var fs = new FileStream(PathToPreferencesFile, FileMode.Open, FileAccess.Read, FileShare.Read))
  51. {
  52. using StreamReader sr = new StreamReader(fs);
  53. string json = sr.ReadToEnd();
  54. var dict = JsonConvert.DeserializeObject<Dictionary<string, object>>(json);
  55. Assert.True(dict.ContainsKey(name));
  56. Assert.Equal(value, dict[name]);
  57. }
  58. }
  59. }
  60. }