PageRenderTime 51ms CodeModel.GetById 23ms RepoModel.GetById 0ms app.codeStats 0ms

/UnitTests/GitUI.Tests/UserControls/RevisionGrid/Graph/RevisionGraphRowTests.cs

https://github.com/gitextensions/gitextensions
C# | 100 lines | 87 code | 13 blank | 0 comment | 0 complexity | 76f3992c40ee9740c97a6171845a6e44 MD5 | raw file
Possible License(s): GPL-3.0
  1. using System.Collections.Generic;
  2. using FluentAssertions;
  3. using GitUI.UserControls.RevisionGrid.Graph;
  4. using GitUIPluginInterfaces;
  5. using NUnit.Framework;
  6. namespace GitUITests.UserControls.RevisionGrid.Graph
  7. {
  8. [TestFixture]
  9. public class RevisionGraphRowTests
  10. {
  11. private RevisionGraphSegment _segment = new(parent: new(ObjectId.IndexId, guessScore: 0), child: new(ObjectId.WorkTreeId, guessScore: 0));
  12. private RevisionGraphSegment _segment1 = new(parent: new(ObjectId.Random(), guessScore: 0), child: new(ObjectId.Random(), guessScore: 0));
  13. private RevisionGraphSegment _segment2 = new(parent: new(ObjectId.Random(), guessScore: 0), child: new(ObjectId.Random(), guessScore: 0));
  14. [Test]
  15. public void MoveLanesRight_should_do_nothing_if_empty([Values(-1, 0, 1)] int fromLane)
  16. {
  17. List<RevisionGraphSegment> segments = new();
  18. IRevisionGraphRow revisionGraphRow = new RevisionGraphRow(_segment.Child, segments);
  19. revisionGraphRow.GetLaneCount().Should().Be(1);
  20. revisionGraphRow.MoveLanesRight(fromLane);
  21. revisionGraphRow.GetLaneCount().Should().Be(1);
  22. revisionGraphRow.Segments.Should().BeEmpty();
  23. }
  24. [TestCase(-1, 1)]
  25. [TestCase(0, 1)]
  26. [TestCase(1, 0)]
  27. [TestCase(2, 0)]
  28. public void MoveLanesRight_should_move_single_segment(int fromLane, int expectedLane)
  29. {
  30. List<RevisionGraphSegment> segments = new() { _segment };
  31. IRevisionGraphRow revisionGraphRow = new RevisionGraphRow(_segment.Child, segments);
  32. revisionGraphRow.GetLaneCount().Should().Be(segments.Count);
  33. revisionGraphRow.MoveLanesRight(fromLane);
  34. revisionGraphRow.GetLaneCount().Should().Be(fromLane >= segments.Count ? segments.Count : segments.Count + 1);
  35. revisionGraphRow.GetLaneIndexForSegment(_segment).Should().Be(expectedLane);
  36. }
  37. [TestCase(-1, 1, 2, 3)]
  38. [TestCase(0, 1, 2, 3)]
  39. [TestCase(1, 0, 2, 3)]
  40. [TestCase(2, 0, 1, 3)]
  41. [TestCase(3, 0, 1, 2)]
  42. [TestCase(4, 0, 1, 2)]
  43. public void MoveLanesRight_should_move_segments(int fromLane, int expectedLane, int expectedLane1, int expectedLane2)
  44. {
  45. List<RevisionGraphSegment> segments = new() { _segment, _segment1, _segment2 };
  46. IRevisionGraphRow revisionGraphRow = new RevisionGraphRow(_segment.Child, segments);
  47. revisionGraphRow.GetLaneCount().Should().Be(3);
  48. revisionGraphRow.MoveLanesRight(fromLane);
  49. revisionGraphRow.GetLaneCount().Should().Be(fromLane >= segments.Count ? segments.Count : segments.Count + 1);
  50. revisionGraphRow.GetLaneIndexForSegment(_segment).Should().Be(expectedLane);
  51. revisionGraphRow.GetLaneIndexForSegment(_segment1).Should().Be(expectedLane1);
  52. revisionGraphRow.GetLaneIndexForSegment(_segment2).Should().Be(expectedLane2);
  53. }
  54. [TestCase(-1, 4, 1, 2, 3)]
  55. [TestCase(0, 1, 2, 3, 4)]
  56. [TestCase(0, 2, 1, 3, 4)]
  57. [TestCase(0, 3, 1, 2, 4)]
  58. [TestCase(0, 4, 1, 2, 3)]
  59. [TestCase(1, 0, 1, 2, 3)]
  60. [TestCase(1, 1, 0, 3, 4)]
  61. [TestCase(1, 2, 0, 3, 4)]
  62. [TestCase(1, 3, 0, 2, 4)]
  63. [TestCase(1, 4, 0, 2, 3)]
  64. [TestCase(2, 0, 1, 2, 3)]
  65. [TestCase(2, 1, 0, 2, 3)]
  66. [TestCase(2, 2, 0, 1, 4)]
  67. [TestCase(2, 3, 0, 1, 4)]
  68. [TestCase(2, 4, 0, 1, 3)]
  69. [TestCase(3, 0, 1, 2, 3)]
  70. [TestCase(3, 1, 0, 2, 3)]
  71. [TestCase(3, 2, 0, 1, 3)]
  72. [TestCase(3, 3, 0, 1, 2)]
  73. [TestCase(4, 3, 0, 1, 2)]
  74. public void MoveLanesRight_should_move_segments_twice(int fromLane1, int fromLane2, int expectedLane, int expectedLane1, int expectedLane2)
  75. {
  76. List<RevisionGraphSegment> segments = new() { _segment, _segment1, _segment2 };
  77. IRevisionGraphRow revisionGraphRow = new RevisionGraphRow(_segment.Child, segments);
  78. revisionGraphRow.GetLaneCount().Should().Be(3);
  79. revisionGraphRow.MoveLanesRight(fromLane1);
  80. revisionGraphRow.MoveLanesRight(fromLane2);
  81. revisionGraphRow.GetLaneCount().Should().Be(expectedLane2 + 1);
  82. revisionGraphRow.GetLaneIndexForSegment(_segment).Should().Be(expectedLane);
  83. revisionGraphRow.GetLaneIndexForSegment(_segment1).Should().Be(expectedLane1);
  84. revisionGraphRow.GetLaneIndexForSegment(_segment2).Should().Be(expectedLane2);
  85. }
  86. }
  87. }