ConfigPresetTests.cs 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. using System.Collections.Generic;
  2. using System.IO;
  3. using Content.Server.Entry;
  4. using Robust.Shared.Configuration;
  5. using Robust.Shared.ContentPack;
  6. namespace Content.IntegrationTests.Tests;
  7. [TestFixture]
  8. public sealed class ConfigPresetTests
  9. {
  10. [Test]
  11. public async Task TestLoadAll()
  12. {
  13. var pair = await PoolManager.GetServerClient();
  14. var server = pair.Server;
  15. var resources = server.ResolveDependency<IResourceManager>();
  16. var config = server.ResolveDependency<IConfigurationManager>();
  17. await server.WaitPost(() =>
  18. {
  19. var originalCVars = new List<(string, object)>();
  20. foreach (var cvar in config.GetRegisteredCVars())
  21. {
  22. var value = config.GetCVar<object>(cvar);
  23. originalCVars.Add((cvar, value));
  24. }
  25. var originalCVarsStream = new MemoryStream();
  26. config.SaveToTomlStream(originalCVarsStream, config.GetRegisteredCVars());
  27. originalCVarsStream.Position = 0;
  28. var presets = resources.ContentFindFiles(EntryPoint.ConfigPresetsDir);
  29. Assert.Multiple(() =>
  30. {
  31. foreach (var preset in presets)
  32. {
  33. var stream = resources.ContentFileRead(preset);
  34. Assert.DoesNotThrow(() => config.LoadDefaultsFromTomlStream(stream));
  35. }
  36. });
  37. config.LoadDefaultsFromTomlStream(originalCVarsStream);
  38. foreach (var (cvar, value) in originalCVars)
  39. {
  40. config.SetCVar(cvar, value);
  41. }
  42. foreach (var originalCVar in originalCVars)
  43. {
  44. var (name, originalValue) = originalCVar;
  45. var newValue = config.GetCVar<object>(name);
  46. var originalValueType = originalValue.GetType();
  47. var newValueType = newValue.GetType();
  48. if (originalValueType.IsEnum || newValueType.IsEnum)
  49. {
  50. originalValue = Enum.ToObject(originalValueType, originalValue);
  51. newValue = Enum.ToObject(originalValueType, newValue);
  52. }
  53. if (originalValueType == typeof(float) || newValueType == typeof(float))
  54. {
  55. originalValue = Convert.ToSingle(originalValue);
  56. newValue = Convert.ToSingle(newValue);
  57. }
  58. if (!Equals(newValue, originalValue))
  59. Assert.Fail($"CVar {name} was not reset to its original value.");
  60. }
  61. });
  62. await pair.CleanReturnAsync();
  63. }
  64. }