EngineTests.cs 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. using qdr.fnd.core.qconsole.test.Commands;
  2. using qdr.fnd.core.qconsole.test.Contexts;
  3. using Quadarax.Foundation.Core.IO.FileSystem.Memory;
  4. using Quadarax.Foundation.Core.QConsole;
  5. using Quadarax.Foundation.Core.QConsole.Configuration;
  6. using System.Reflection;
  7. using System.Threading;
  8. using System.Threading.Tasks;
  9. namespace qdr.fnd.core.qconsole.test
  10. {
  11. public class Tests
  12. {
  13. private StartupConfiguration? _configuration;
  14. [SetUp]
  15. public void Setup()
  16. {
  17. _configuration = new StartupConfiguration("Quadarax QConsole Test",Version.Parse("1.0.0.0"))
  18. {
  19. ConsoleCopyright = "Me",
  20. AllowInteractive = false,
  21. WaitOnKeyInNonInteractiveMode = false,
  22. CommandDefinitionAssembly = new Assembly[] { Assembly.GetExecutingAssembly()! }
  23. };
  24. _configuration.DisableDefaultCommands();
  25. _configuration.ShowStatusOnEveryCommand = false;
  26. _configuration.IsConsoleDebug = false;
  27. _configuration.ThrowExceptionWhenNotSuccess = true;
  28. }
  29. [Test]
  30. public void DummyCommandOk()
  31. {
  32. var arguments = new string[] { DummyCmd.CommandName };
  33. var engine = CreateEngine(arguments);
  34. engine.Start();
  35. }
  36. [Test]
  37. public void DummyCommandFailed()
  38. {
  39. var arguments = new string[] { DummyCmd.CommandName, "-result:false" };
  40. var engine = CreateEngine(arguments);
  41. Assert.Throws<AggregateException>(() => engine.Start(),"Dummy command execution failed by user request.");
  42. }
  43. [Test]
  44. public void DummyOrdinalCommandQuotedOk()
  45. {
  46. var filename = "D:\\temp\\file-some.dat";
  47. var arguments = new string[] { DummyOrdinalCmd.CommandName, "\"" + filename + "\"" };
  48. var engine = CreateEngine(arguments);
  49. engine.Start();
  50. Assert.That(engine.GetCommand(DummyOrdinalCmd.CommandName)?.Arguments.First(s=>s.Code == DummyOrdinalCmd.ArgOrdName).Value.AsString(), Is.EqualTo(filename));
  51. }
  52. private Engine CreateEngine(string[] args)
  53. {
  54. if (_configuration == null)
  55. {
  56. throw new InvalidOperationException("Configuration is not initialized.");
  57. }
  58. return new Engine(_configuration, new BasicEngineContext(new MemoryFileSystem()), args);
  59. }
  60. }
  61. }