Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

89 lignes
3.2KB

  1. using EnvelopeRenderer.Desktop.Core.Launch;
  2. namespace EnvelopeRenderer.Desktop.Tests;
  3. public class ProgressEventParserTests
  4. {
  5. [Fact]
  6. public void TryParse_StartupLine_ParsesFields()
  7. {
  8. var parsed = ProgressEventParser.TryParse("PROGRESS startup elapsedMs=0 completed=0", out var progressEvent);
  9. Assert.True(parsed);
  10. Assert.Equal(ProgressEventKind.Startup, progressEvent!.Kind);
  11. Assert.Equal(0, progressEvent.ElapsedMs);
  12. Assert.Equal(0, progressEvent.Completed);
  13. Assert.Null(progressEvent.Reason);
  14. }
  15. [Fact]
  16. public void TryParse_RenderLine_ParsesFields()
  17. {
  18. var parsed = ProgressEventParser.TryParse("PROGRESS render elapsedMs=802 completed=1", out var progressEvent);
  19. Assert.True(parsed);
  20. Assert.Equal(ProgressEventKind.Render, progressEvent!.Kind);
  21. Assert.Equal(802, progressEvent.ElapsedMs);
  22. Assert.Equal(1, progressEvent.Completed);
  23. Assert.Null(progressEvent.Reason);
  24. }
  25. [Fact]
  26. public void TryParse_CompleteLine_ParsesFields()
  27. {
  28. var parsed = ProgressEventParser.TryParse("PROGRESS complete elapsedMs=1900 completed=392", out var progressEvent);
  29. Assert.True(parsed);
  30. Assert.Equal(ProgressEventKind.Complete, progressEvent!.Kind);
  31. Assert.Equal(1900, progressEvent.ElapsedMs);
  32. Assert.Equal(392, progressEvent.Completed);
  33. Assert.Null(progressEvent.Reason);
  34. }
  35. [Fact]
  36. public void TryParse_FailureLine_CapturesReasonToEndOfLineVerbatim()
  37. {
  38. const string line = "PROGRESS failure elapsedMs=1805 completed=392 reason=Failed to save PDF to 'out.pdf' (error code 999).";
  39. var parsed = ProgressEventParser.TryParse(line, out var progressEvent);
  40. Assert.True(parsed);
  41. Assert.Equal(ProgressEventKind.Failure, progressEvent!.Kind);
  42. Assert.Equal(1805, progressEvent.ElapsedMs);
  43. Assert.Equal(392, progressEvent.Completed);
  44. Assert.Equal("Failed to save PDF to 'out.pdf' (error code 999).", progressEvent.Reason);
  45. }
  46. [Fact]
  47. public void TryParse_ReasonContainingSpaces_KeepsWholeReasonTogether()
  48. {
  49. const string line = "PROGRESS failure elapsedMs=5 completed=0 reason=multiple words here";
  50. var parsed = ProgressEventParser.TryParse(line, out var progressEvent);
  51. Assert.True(parsed);
  52. Assert.Equal("multiple words here", progressEvent!.Reason);
  53. }
  54. [Theory]
  55. [InlineData(null)]
  56. [InlineData("")]
  57. [InlineData(" ")]
  58. [InlineData("not a progress line")]
  59. [InlineData("PROGRESS")]
  60. [InlineData("PROGRESS startup")]
  61. [InlineData("PROGRESS unknownkind elapsedMs=0 completed=0")]
  62. [InlineData("PROGRESS startup notElapsed=0 completed=0")]
  63. [InlineData("PROGRESS startup elapsedMs=abc completed=0")]
  64. [InlineData("PROGRESS startup elapsedMs=0 notCompleted=0")]
  65. [InlineData("PROGRESS startup elapsedMs=0 completed=abc")]
  66. [InlineData("PROGRESS startup elapsedMs=0 completed=0 notreason=x")]
  67. public void TryParse_MalformedOrUnrelatedLine_ReturnsFalseAndNullEvent(string? line)
  68. {
  69. var parsed = ProgressEventParser.TryParse(line, out var progressEvent);
  70. Assert.False(parsed);
  71. Assert.Null(progressEvent);
  72. }
  73. }

Powered by TurnKey Linux.