選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

93 行
2.8KB

  1. using EnvelopeRenderer.Desktop.Core.Design;
  2. namespace EnvelopeRenderer.Desktop.Tests;
  3. public class AddressLineCollapserTests
  4. {
  5. [Fact]
  6. public void Resolve_NoLineCollapses_EveryLineVisibleAtOriginalY()
  7. {
  8. var lines = new[]
  9. {
  10. new AddressLineCollapser.Line(100, 300, false),
  11. new AddressLineCollapser.Line(100, 285, false),
  12. };
  13. var resolved = AddressLineCollapser.Resolve(lines);
  14. Assert.All(resolved, r => Assert.True(r.Visible));
  15. Assert.Equal(300, resolved[0].EffectiveY, precision: 6);
  16. Assert.Equal(285, resolved[1].EffectiveY, precision: 6);
  17. }
  18. [Fact]
  19. public void Resolve_SingleBlankLine_SubsequentLineShiftsUpByItsRowHeight()
  20. {
  21. var lines = new[]
  22. {
  23. new AddressLineCollapser.Line(100, 300, false),
  24. new AddressLineCollapser.Line(100, 285, true),
  25. new AddressLineCollapser.Line(100, 270, false),
  26. };
  27. var resolved = AddressLineCollapser.Resolve(lines);
  28. Assert.True(resolved[0].Visible);
  29. Assert.False(resolved[1].Visible);
  30. Assert.True(resolved[2].Visible);
  31. Assert.Equal(285, resolved[2].EffectiveY, precision: 6);
  32. }
  33. [Fact]
  34. public void Resolve_MultipleConsecutiveBlankLines_CollapseWithoutLeavingExtraGaps()
  35. {
  36. var lines = new[]
  37. {
  38. new AddressLineCollapser.Line(100, 300, false),
  39. new AddressLineCollapser.Line(100, 285, true),
  40. new AddressLineCollapser.Line(100, 270, true),
  41. new AddressLineCollapser.Line(100, 255, false),
  42. };
  43. var resolved = AddressLineCollapser.Resolve(lines);
  44. Assert.False(resolved[1].Visible);
  45. Assert.False(resolved[2].Visible);
  46. Assert.True(resolved[3].Visible);
  47. Assert.Equal(285, resolved[3].EffectiveY, precision: 6);
  48. }
  49. [Fact]
  50. public void Resolve_LinesAtDifferentX_DoNotAffectEachOther()
  51. {
  52. var lines = new[]
  53. {
  54. new AddressLineCollapser.Line(100, 300, false),
  55. new AddressLineCollapser.Line(100, 285, true),
  56. new AddressLineCollapser.Line(400, 300, false),
  57. new AddressLineCollapser.Line(400, 285, false),
  58. };
  59. var resolved = AddressLineCollapser.Resolve(lines);
  60. Assert.False(resolved[1].Visible);
  61. Assert.True(resolved[3].Visible);
  62. Assert.Equal(285, resolved[3].EffectiveY, precision: 6);
  63. }
  64. [Fact]
  65. public void Resolve_LastLineBlank_IsANoOp()
  66. {
  67. var lines = new[]
  68. {
  69. new AddressLineCollapser.Line(100, 300, false),
  70. new AddressLineCollapser.Line(100, 285, true),
  71. };
  72. var resolved = AddressLineCollapser.Resolve(lines);
  73. Assert.True(resolved[0].Visible);
  74. Assert.False(resolved[1].Visible);
  75. }
  76. }

Powered by TurnKey Linux.