diff --git a/Terminal.Gui/View/ViewDrawing.cs b/Terminal.Gui/View/ViewDrawing.cs
index d49d4ae0b..262c914af 100644
--- a/Terminal.Gui/View/ViewDrawing.cs
+++ b/Terminal.Gui/View/ViewDrawing.cs
@@ -566,8 +566,8 @@ namespace Terminal.Gui {
/// be greater or equal to the start and for and the end position must
/// be less or equal to the start.
///
- /// The start and side position screen relative.
- /// The end and side position screen relative.
+ /// The view relative of the start and side position.
+ /// The view relative of the end and side position.
/// The view relative location and size of the frame.
/// The line style.
/// The colors to be used.
@@ -582,20 +582,42 @@ namespace Terminal.Gui {
} else {
lc = LineCanvas;
}
- var start = startPos.start;
- var end = endPos.end;
+
+ int pStart = startPos.start;
+ int pEnd = endPos.end;
+
switch (startPos.side) {
case Side.Left:
- if (start == vts.Y) {
- lc.AddLine (new Point (vts.X, start), 1,
+ case Side.Right:
+ pStart += vts.Y;
+ break;
+ case Side.Top:
+ case Side.Bottom:
+ pStart += vts.X;
+ break;
+ }
+ switch (endPos.side) {
+ case Side.Left:
+ case Side.Right:
+ pEnd += vts.Y;
+ break;
+ case Side.Top:
+ case Side.Bottom:
+ pEnd += vts.X;
+ break;
+ }
+ switch (startPos.side) {
+ case Side.Left:
+ if (pStart == vts.Y) {
+ lc.AddLine (new Point (vts.X, pStart), 1,
Orientation.Vertical, lineStyle, attribute);
} else {
- if (end <= start && startPos.side == endPos.side) {
- lc.AddLine (new Point (vts.X, start), end - start - 1,
+ if (pEnd <= pStart && startPos.side == endPos.side) {
+ lc.AddLine (new Point (vts.X, pStart), pEnd - pStart - 1,
Orientation.Vertical, lineStyle, attribute);
break;
} else {
- lc.AddLine (new Point (vts.X, start), vts.Y - start - 1,
+ lc.AddLine (new Point (vts.X, pStart), vts.Y - pStart - 1,
Orientation.Vertical, lineStyle, attribute);
}
}
@@ -607,19 +629,19 @@ namespace Terminal.Gui {
Orientation.Vertical, lineStyle, attribute);
lc.AddLine (new Point (vts.Right - 1, vts.Bottom - 1), -vts.Width,
Orientation.Horizontal, lineStyle, attribute);
- if (end <= vts.Bottom - 1 && startPos.side == endPos.side) {
- lc.AddLine (new Point (vts.X, vts.Bottom - 1), -(vts.Bottom - end),
+ if (pEnd <= vts.Bottom - 1 && startPos.side == endPos.side) {
+ lc.AddLine (new Point (vts.X, vts.Bottom - 1), -(vts.Bottom - pEnd),
Orientation.Vertical, lineStyle, attribute);
}
break;
case Side.Top:
- lc.AddLine (new Point (vts.X, vts.Y), end,
+ lc.AddLine (new Point (vts.X, vts.Y), pEnd - 1,
Orientation.Horizontal, lineStyle, attribute);
break;
case Side.Right:
lc.AddLine (new Point (vts.X, vts.Y), vts.Width,
Orientation.Horizontal, lineStyle, attribute);
- lc.AddLine (new Point (vts.Right - 1, vts.Y), end + 1,
+ lc.AddLine (new Point (vts.Right - 1, vts.Y), pEnd - 1,
Orientation.Vertical, lineStyle, attribute);
break;
case Side.Bottom:
@@ -627,23 +649,25 @@ namespace Terminal.Gui {
Orientation.Horizontal, lineStyle, attribute);
lc.AddLine (new Point (vts.Right - 1, vts.Y), vts.Height,
Orientation.Vertical, lineStyle, attribute);
- lc.AddLine (new Point (vts.Right - 1, vts.Bottom - 1), -end,
+ lc.AddLine (new Point (vts.Right - 1, vts.Bottom - 1), -(vts.Right - pEnd),
Orientation.Horizontal, lineStyle, attribute);
break;
}
break;
case Side.Top:
- if (start == vts.Width - 1) {
- lc.AddLine (new Point (vts.X + start, vts.Y), -1,
- Orientation.Horizontal, lineStyle, attribute);
- } else if (end >= start && startPos.side == endPos.side) {
- lc.AddLine (new Point (vts.X + start, vts.Y), end - start + 1,
- Orientation.Horizontal, lineStyle, attribute);
- break;
- } else if (vts.Width - start > 0) {
- lc.AddLine (new Point (vts.X + start, vts.Y), Math.Max (vts.Width - start, 0),
+ if (pStart == vts.Right - 1) {
+ lc.AddLine (new Point (pStart, vts.Y), -1,
Orientation.Horizontal, lineStyle, attribute);
+ } else {
+ if (pEnd >= pStart && startPos.side == endPos.side) {
+ lc.AddLine (new Point (pStart, vts.Y), pEnd - pStart + 1,
+ Orientation.Horizontal, lineStyle, attribute);
+ break;
+ } else {
+ lc.AddLine (new Point (pStart, vts.Y), vts.Right - pStart,
+ Orientation.Horizontal, lineStyle, attribute);
+ }
}
switch (endPos.side) {
case Side.Left:
@@ -651,7 +675,7 @@ namespace Terminal.Gui {
Orientation.Vertical, lineStyle, attribute);
lc.AddLine (new Point (vts.Right - 1, vts.Bottom - 1), -vts.Width,
Orientation.Horizontal, lineStyle, attribute);
- lc.AddLine (new Point (vts.X, vts.Bottom - 1), -end,
+ lc.AddLine (new Point (vts.X, vts.Bottom - 1), -(vts.Bottom - pEnd),
Orientation.Vertical, lineStyle, attribute);
break;
case Side.Top:
@@ -661,91 +685,93 @@ namespace Terminal.Gui {
Orientation.Horizontal, lineStyle, attribute);
lc.AddLine (new Point (vts.X, vts.Bottom - 1), -vts.Height,
Orientation.Vertical, lineStyle, attribute);
- if (end >= 0 && startPos.side == endPos.side) {
- lc.AddLine (new Point (vts.X, vts.Y), end + 1,
+ if (pEnd >= vts.X && startPos.side == endPos.side) {
+ lc.AddLine (new Point (vts.X, vts.Y), pEnd - vts.X + 1,
Orientation.Horizontal, lineStyle, attribute);
}
break;
case Side.Right:
- lc.AddLine (new Point (vts.Right - 1, vts.Y), end,
+ lc.AddLine (new Point (vts.Right - 1, vts.Y), pEnd - pStart + 1,
Orientation.Vertical, lineStyle, attribute);
break;
case Side.Bottom:
lc.AddLine (new Point (vts.Right - 1, vts.Y), vts.Height,
Orientation.Vertical, lineStyle, attribute);
- lc.AddLine (new Point (vts.Right - 1, vts.Bottom - 1), -(vts.Width - end),
+ lc.AddLine (new Point (vts.Right - 1, vts.Bottom - 1), -(vts.Right - pEnd),
Orientation.Horizontal, lineStyle, attribute);
break;
}
break;
case Side.Right:
- if (start == vts.Bottom - 1) {
- lc.AddLine (new Point (vts.Width - 1, start), -1,
+ if (pStart == vts.Bottom - 1) {
+ lc.AddLine (new Point (vts.Right - 1, pStart), -1,
Orientation.Vertical, lineStyle, attribute);
} else {
- if (end >= start && startPos.side == endPos.side) {
- lc.AddLine (new Point (vts.Width - 1, start), end - start + 1,
+ if (pEnd >= pStart && startPos.side == endPos.side) {
+ lc.AddLine (new Point (vts.Right - 1, pStart), pEnd - pStart + 1,
Orientation.Vertical, lineStyle, attribute);
break;
} else {
- lc.AddLine (new Point (vts.Width - 1, start), vts.Bottom - start,
+ lc.AddLine (new Point (vts.Right - 1, pStart), vts.Bottom - pStart,
Orientation.Vertical, lineStyle, attribute);
}
}
switch (endPos.side) {
case Side.Left:
- lc.AddLine (new Point (vts.Width - 1, vts.Bottom - 1), -vts.Width,
+ lc.AddLine (new Point (vts.Right - 1, vts.Bottom - 1), -vts.Width,
Orientation.Horizontal, lineStyle, attribute);
- lc.AddLine (new Point (vts.X, vts.Bottom - 1), -(vts.Bottom - end),
+ lc.AddLine (new Point (vts.X, vts.Bottom - 1), -(vts.Bottom - pEnd),
Orientation.Vertical, lineStyle, attribute);
break;
case Side.Top:
- lc.AddLine (new Point (vts.Width - 1, vts.Bottom - 1), -vts.Width,
+ lc.AddLine (new Point (vts.Right - 1, vts.Bottom - 1), -vts.Width,
Orientation.Horizontal, lineStyle, attribute);
lc.AddLine (new Point (vts.X, vts.Bottom - 1), -vts.Height,
Orientation.Vertical, lineStyle, attribute);
- lc.AddLine (new Point (vts.X, vts.Y), end,
+ lc.AddLine (new Point (vts.X, vts.Y), pEnd - vts.X + 1,
Orientation.Horizontal, lineStyle, attribute);
break;
case Side.Right:
- lc.AddLine (new Point (vts.Width - 1, vts.Bottom - 1), -vts.Width,
+ lc.AddLine (new Point (vts.Right - 1, vts.Bottom - 1), -vts.Width,
Orientation.Horizontal, lineStyle, attribute);
lc.AddLine (new Point (vts.X, vts.Bottom - 1), -vts.Height,
Orientation.Vertical, lineStyle, attribute);
lc.AddLine (new Point (vts.X, vts.Y), vts.Width,
Orientation.Horizontal, lineStyle, attribute);
- if (end >= 0 && end < vts.Bottom - 1 && startPos.side == endPos.side) {
- lc.AddLine (new Point (vts.Width - 1, vts.Y), end + 1,
+ if (pEnd >= vts.Y && pEnd < vts.Bottom - 1 && startPos.side == endPos.side) {
+ lc.AddLine (new Point (vts.Right - 1, vts.Y), pEnd - vts.Y + 1,
Orientation.Vertical, lineStyle, attribute);
}
break;
case Side.Bottom:
- lc.AddLine (new Point (vts.Width - 1, vts.Bottom - 1), -(vts.Width - end),
+ lc.AddLine (new Point (vts.Right - 1, vts.Bottom - 1), -(vts.Right - pEnd),
Orientation.Horizontal, lineStyle, attribute);
break;
}
break;
case Side.Bottom:
- if (start == vts.X) {
+ if (pStart == vts.X) {
lc.AddLine (new Point (vts.X, vts.Bottom - 1), 1,
Orientation.Horizontal, lineStyle, attribute);
- } else if (end <= start && startPos.side == endPos.side) {
- lc.AddLine (new Point (vts.X + start, vts.Bottom - 1), -(start - end + 1),
- Orientation.Horizontal, lineStyle, attribute);
- break;
} else {
- lc.AddLine (new Point (vts.X + start, vts.Bottom - 1), -(start + 1),
- Orientation.Horizontal, lineStyle, attribute);
+ if (pEnd <= pStart && startPos.side == endPos.side) {
+ lc.AddLine (new Point (pStart, vts.Bottom - 1), -(pStart - pEnd + 1),
+ Orientation.Horizontal, lineStyle, attribute);
+ break;
+ } else {
+ lc.AddLine (new Point (pStart, vts.Bottom - 1), -(pStart - 1),
+ Orientation.Horizontal, lineStyle, attribute);
+ }
}
switch (endPos.side) {
case Side.Left:
- lc.AddLine (new Point (vts.X, vts.Bottom - 1), -(vts.Bottom - end),
+ lc.AddLine (new Point (vts.X, vts.Bottom - 1), -(vts.Bottom - pEnd),
Orientation.Vertical, lineStyle, attribute);
break;
case Side.Top:
lc.AddLine (new Point (vts.X, vts.Bottom - 1), -vts.Height,
Orientation.Vertical, lineStyle, attribute);
- lc.AddLine (new Point (vts.X, vts.Y), end + 1,
+ lc.AddLine (new Point (vts.X, vts.Y), pEnd - 1,
Orientation.Horizontal, lineStyle, attribute);
break;
case Side.Right:
@@ -753,7 +779,7 @@ namespace Terminal.Gui {
Orientation.Vertical, lineStyle, attribute);
lc.AddLine (new Point (vts.X, vts.Y), vts.Width,
Orientation.Horizontal, lineStyle, attribute);
- lc.AddLine (new Point (vts.Width - 1, vts.Y), end,
+ lc.AddLine (new Point (vts.Right - 1, vts.Y), pEnd - 1,
Orientation.Vertical, lineStyle, attribute);
break;
case Side.Bottom:
@@ -761,10 +787,10 @@ namespace Terminal.Gui {
Orientation.Vertical, lineStyle, attribute);
lc.AddLine (new Point (vts.X, vts.Y), vts.Width,
Orientation.Horizontal, lineStyle, attribute);
- lc.AddLine (new Point (vts.Width - 1, vts.Y), vts.Height,
+ lc.AddLine (new Point (vts.Right - 1, vts.Y), vts.Height,
Orientation.Vertical, lineStyle, attribute);
- if (vts.Width - end > 0 && startPos.side == endPos.side) {
- lc.AddLine (new Point (vts.Width - 1, vts.Bottom - 1), -(vts.Width - end),
+ if (pEnd <= vts.Right - 1 && startPos.side == endPos.side) {
+ lc.AddLine (new Point (vts.Right - 1, vts.Bottom - 1), -(vts.Right - pEnd),
Orientation.Horizontal, lineStyle, attribute);
}
break;
diff --git a/UnitTests/View/DrawTests.cs b/UnitTests/View/DrawTests.cs
index d5fa06c77..8fd0d44ce 100644
--- a/UnitTests/View/DrawTests.cs
+++ b/UnitTests/View/DrawTests.cs
@@ -375,128 +375,67 @@ t ", output);
└────────┘", output);
}
+ private static View GetViewsForDrawFrameTests (int start, Side startSide, int end, Side endSide)
+ {
+ var label = new View () { X = Pos.Center (), Y = Pos.Center (), Text = "test", AutoSize = true };
+ // Using a non 0 location to avoids bugs on testing.
+ var view = new View () { X = 2, Y = 2, Width = 10, Height = 5 };
+ view.DrawContent += (s, e) =>
+ view.DrawIncompleteFrame (new (start, startSide), new (end, endSide), view.Bounds, LineStyle.Single);
+ view.Add (label);
+ return view;
+ }
+
[Theory, AutoInitShutdown]
- [InlineData (1, Side.Left, 5, Side.Left, @"
-┌────────┐
-│ │
- test │
- │
-─────────┘")]
- [InlineData (1, Side.Left, 4, Side.Left, @"
-┌────────┐
-│ │
- test │
- │
-└────────┘")]
- [InlineData (0, Side.Left, 3, Side.Left, @"
-┌────────┐
- │
- test │
-│ │
-└────────┘")]
- [InlineData (5, Side.Top, -1, Side.Top, @"
-│ ────┐
-│ │
-│ test │
-│ │
-└────────┘")]
- [InlineData (5, Side.Top, 0, Side.Top, @"
-┌ ────┐
-│ │
-│ test │
-│ │
-└────────┘")]
- [InlineData (6, Side.Top, 1, Side.Top, @"
-┌─ ───┐
-│ │
-│ test │
-│ │
-└────────┘")]
- [InlineData (7, Side.Top, 2, Side.Top, @"
-┌── ──┐
-│ │
-│ test │
-│ │
-└────────┘")]
- [InlineData (8, Side.Top, 3, Side.Top, @"
-┌─── ─┐
-│ │
-│ test │
-│ │
-└────────┘")]
- [InlineData (9, Side.Top, 4, Side.Top, @"
-┌──── ┐
-│ │
-│ test │
-│ │
-└────────┘")]
- [InlineData (10, Side.Top, 5, Side.Top, @"
-┌───── │
-│ │
-│ test │
-│ │
-└────────┘")]
- [InlineData (3, Side.Right, -1, Side.Right, @"
-┌─────────
-│
-│ test
-│ │
-└────────┘")]
- [InlineData (3, Side.Right, 0, Side.Right, @"
-┌────────┐
-│
-│ test
-│ │
-└────────┘")]
- [InlineData (4, Side.Right, 1, Side.Right, @"
-┌────────┐
-│ │
-│ test
-│
-└────────┘")]
- [InlineData (4, Side.Bottom, 10, Side.Bottom, @"
-┌────────┐
-│ │
-│ test │
-│ │
-└──── │")]
- [InlineData (4, Side.Bottom, 9, Side.Bottom, @"
-┌────────┐
-│ │
-│ test │
-│ │
-└──── ┘")]
- [InlineData (3, Side.Bottom, 8, Side.Bottom, @"
-┌────────┐
-│ │
-│ test │
-│ │
-└─── ─┘")]
- [InlineData (2, Side.Bottom, 7, Side.Bottom, @"
-┌────────┐
-│ │
-│ test │
-│ │
-└── ──┘")]
- [InlineData (1, Side.Bottom, 6, Side.Bottom, @"
-┌────────┐
-│ │
-│ test │
-│ │
-└─ ───┘")]
- [InlineData (0, Side.Bottom, 5, Side.Bottom, @"
-┌────────┐
-│ │
-│ test │
-│ │
-└ ────┘")]
- [InlineData (-1, Side.Bottom, 5, Side.Bottom, @"
-┌────────┐
-│ │
-│ test │
-│ │
-│ ────┘")]
- public void DrawIncompleteFrame_All_Sides (int start, Side startSide, int end, Side endSide, string expected)
+ [InlineData (3, Side.Left, 0, Side.Bottom, @"
+ ┌────────┐
+ │ │
+ │ test │
+ │ │
+ ─────────┘")]
+ [InlineData (1, Side.Top, 0, Side.Left, @"
+ │────────┐
+ │ │
+ │ test │
+ │ │
+ └────────┘")]
+ [InlineData (1, Side.Right, 9, Side.Top, @"
+ ┌─────────
+ │ │
+ │ test │
+ │ │
+ └────────┘")]
+ [InlineData (8, Side.Bottom, 4, Side.Right, @"
+ ┌────────┐
+ │ │
+ │ test │
+ │ │
+ └────────│")]
+ [InlineData (0, Side.Right, 8, Side.Top, @"
+ ┌────────│
+ │ │
+ │ test │
+ │ │
+ └────────┘")]
+ [InlineData (4, Side.Left, 1, Side.Bottom, @"
+ ┌────────┐
+ │ │
+ │ test │
+ │ │
+ │────────┘")]
+ [InlineData (0, Side.Top, 1, Side.Left, @"
+ ─────────┐
+ │ │
+ │ test │
+ │ │
+ └────────┘")]
+ [InlineData (9, Side.Bottom, 3, Side.Right, @"
+ ┌────────┐
+ │ │
+ │ test │
+ │ │
+ └─────────")]
+ public void DrawIncompleteFrame_All_Sides_Width_One (int start, Side startSide, int end, Side endSide, string expected)
{
View view = GetViewsForDrawFrameTests (start, startSide, end, endSide);
Application.Top.Add (view);
@@ -505,41 +444,161 @@ t ", output);
TestHelpers.AssertDriverContentsWithFrameAre (expected, output);
}
- private static View GetViewsForDrawFrameTests (int start, Side startSide, int end, Side endSide)
+ [Theory, AutoInitShutdown]
+ [InlineData (1, Side.Left, 5, Side.Left, @"
+ ┌────────┐
+ │ │
+ test │
+ │
+ ─────────┘")]
+ [InlineData (1, Side.Left, 4, Side.Left, @"
+ ┌────────┐
+ │ │
+ test │
+ │
+ └────────┘")]
+ [InlineData (0, Side.Left, 3, Side.Left, @"
+ ┌────────┐
+ │
+ test │
+ │ │
+ └────────┘")]
+ [InlineData (5, Side.Top, -1, Side.Top, @"
+ │ ────┐
+ │ │
+ │ test │
+ │ │
+ └────────┘")]
+ [InlineData (5, Side.Top, 0, Side.Top, @"
+ ┌ ────┐
+ │ │
+ │ test │
+ │ │
+ └────────┘")]
+ [InlineData (6, Side.Top, 1, Side.Top, @"
+ ┌─ ───┐
+ │ │
+ │ test │
+ │ │
+ └────────┘")]
+ [InlineData (7, Side.Top, 2, Side.Top, @"
+ ┌── ──┐
+ │ │
+ │ test │
+ │ │
+ └────────┘")]
+ [InlineData (8, Side.Top, 3, Side.Top, @"
+ ┌─── ─┐
+ │ │
+ │ test │
+ │ │
+ └────────┘")]
+ [InlineData (9, Side.Top, 4, Side.Top, @"
+ ┌──── ┐
+ │ │
+ │ test │
+ │ │
+ └────────┘")]
+ [InlineData (0, Side.Right, 5, Side.Top, @"
+ ┌───── │
+ │ │
+ │ test │
+ │ │
+ └────────┘")]
+ [InlineData (3, Side.Right, -1, Side.Right, @"
+ ┌─────────
+ │
+ │ test
+ │ │
+ └────────┘")]
+ [InlineData (3, Side.Right, 0, Side.Right, @"
+ ┌────────┐
+ │
+ │ test
+ │ │
+ └────────┘")]
+ [InlineData (4, Side.Right, 1, Side.Right, @"
+ ┌────────┐
+ │ │
+ │ test
+ │
+ └────────┘")]
+ [InlineData (4, Side.Bottom, 10, Side.Bottom, @"
+ ┌────────┐
+ │ │
+ │ test │
+ │ │
+ └──── │")]
+ [InlineData (4, Side.Bottom, 9, Side.Bottom, @"
+ ┌────────┐
+ │ │
+ │ test │
+ │ │
+ └──── ┘")]
+ [InlineData (3, Side.Bottom, 8, Side.Bottom, @"
+ ┌────────┐
+ │ │
+ │ test │
+ │ │
+ └─── ─┘")]
+ [InlineData (2, Side.Bottom, 7, Side.Bottom, @"
+ ┌────────┐
+ │ │
+ │ test │
+ │ │
+ └── ──┘")]
+ [InlineData (1, Side.Bottom, 6, Side.Bottom, @"
+ ┌────────┐
+ │ │
+ │ test │
+ │ │
+ └─ ───┘")]
+ [InlineData (0, Side.Bottom, 5, Side.Bottom, @"
+ ┌────────┐
+ │ │
+ │ test │
+ │ │
+ └ ────┘")]
+ [InlineData (4, Side.Left, 5, Side.Bottom, @"
+ ┌────────┐
+ │ │
+ │ test │
+ │ │
+ │ ────┘")]
+ public void DrawIncompleteFrame_All_Sides_Width_Greater_Than_One (int start, Side startSide, int end, Side endSide, string expected)
{
- var label = new View () { X = Pos.Center (), Y = Pos.Center (), Text = "test", AutoSize = true };
- var view = new View () { Width = 10, Height = 5 };
- view.DrawContent += (s, e) =>
- view.DrawIncompleteFrame (new (start, startSide), new (end, endSide), view.Bounds, LineStyle.Single);
- view.Add (label);
- return view;
+ View view = GetViewsForDrawFrameTests (start, startSide, end, endSide);
+ Application.Top.Add (view);
+ Application.Begin (Application.Top);
+
+ TestHelpers.AssertDriverContentsWithFrameAre (expected, output);
}
[Theory, AutoInitShutdown]
[InlineData (4, Side.Left, 4, Side.Right, @"
-┌────────┐
-│ │
-│ test │
-│ │
-│ │")]
+ ┌────────┐
+ │ │
+ │ test │
+ │ │
+ │ │")]
[InlineData (0, Side.Top, 0, Side.Bottom, @"
-─────────┐
- │
- test │
- │
-─────────┘")]
+ ─────────┐
+ │
+ test │
+ │
+ ─────────┘")]
[InlineData (0, Side.Right, 0, Side.Left, @"
-│ │
-│ │
-│ test │
-│ │
-└────────┘")]
+ │ │
+ │ │
+ │ test │
+ │ │
+ └────────┘")]
[InlineData (9, Side.Bottom, 9, Side.Top, @"
-┌─────────
-│
-│ test
-│
-└─────────")]
+ ┌─────────
+ │
+ │ test
+ │
+ └─────────")]
public void DrawIncompleteFrame_Three_Full_Sides (int start, Side startSide, int end, Side endSide, string expected)
{
View view = GetViewsForDrawFrameTests (start, startSide, end, endSide);
@@ -550,30 +609,30 @@ t ", output);
}
[Theory, AutoInitShutdown]
- [InlineData (4, Side.Left, 10, Side.Top, @"
-┌─────────
-│
-│ test
-│
-│ ")]
- [InlineData (0, Side.Top, 5, Side.Right, @"
-─────────┐
- │
- test │
- │
- │")]
+ [InlineData (4, Side.Left, 9, Side.Top, @"
+ ┌─────────
+ │
+ │ test
+ │
+ │ ")]
+ [InlineData (0, Side.Top, 4, Side.Right, @"
+ ─────────┐
+ │
+ test │
+ │
+ │")]
[InlineData (0, Side.Right, 0, Side.Bottom, @"
- │
- │
- test │
- │
-─────────┘")]
+ │
+ │
+ test │
+ │
+ ─────────┘")]
[InlineData (9, Side.Bottom, 0, Side.Left, @"
-│
-│
-│ test
-│
-└─────────")]
+ │
+ │
+ │ test
+ │
+ └─────────")]
public void DrawIncompleteFrame_Two_Full_Sides (int start, Side startSide, int end, Side endSide, string expected)
{
View view = GetViewsForDrawFrameTests (start, startSide, end, endSide);
@@ -585,25 +644,25 @@ t ", output);
[Theory, AutoInitShutdown]
[InlineData (4, Side.Left, 0, Side.Left, @"
-│
-│
-│ test
-│
-│ ")]
+ │
+ │
+ │ test
+ │
+ │ ")]
[InlineData (0, Side.Top, 9, Side.Top, @"
-──────────
-
- test ")]
+ ──────────
+
+ test ")]
[InlineData (0, Side.Right, 4, Side.Right, @"
- │
- │
- test │
- │
- │")]
+ │
+ │
+ test │
+ │
+ │")]
[InlineData (9, Side.Bottom, 0, Side.Bottom, @"
- test
-
-──────────")]
+ test
+
+ ──────────")]
public void DrawIncompleteFrame_One_Full_Sides (int start, Side startSide, int end, Side endSide, string expected)
{
View view = GetViewsForDrawFrameTests (start, startSide, end, endSide);
@@ -615,25 +674,25 @@ t ", output);
[Theory, AutoInitShutdown]
[InlineData (0, Side.Bottom, 0, Side.Top, @"
-┌
-│
-│ test
-│
-└ ")]
+ ┌
+ │
+ │ test
+ │
+ └ ")]
[InlineData (0, Side.Left, 0, Side.Right, @"
-┌────────┐
-
- test ")]
+ ┌────────┐
+
+ test ")]
[InlineData (9, Side.Top, 9, Side.Bottom, @"
- ┐
- │
- test │
- │
- ┘")]
+ ┐
+ │
+ test │
+ │
+ ┘")]
[InlineData (4, Side.Right, 4, Side.Left, @"
- test
-
-└────────┘")]
+ test
+
+ └────────┘")]
public void DrawIncompleteFrame_One_Full_Sides_With_Corner (int start, Side startSide, int end, Side endSide, string expected)
{
View view = GetViewsForDrawFrameTests (start, startSide, end, endSide);
@@ -645,17 +704,17 @@ t ", output);
[Theory, AutoInitShutdown]
[InlineData (2, Side.Left, 2, Side.Left, @"
-│ test")]
+ │ test")]
[InlineData (3, Side.Top, 6, Side.Top, @"
- ────
-
- test")]
+ ────
+
+ test")]
[InlineData (2, Side.Right, 2, Side.Right, @"
- test │")]
+ test │")]
[InlineData (6, Side.Bottom, 3, Side.Bottom, @"
- test
-
- ────")]
+ test
+
+ ────")]
public void DrawIncompleteFrame_One_Part_Sides (int start, Side startSide, int end, Side endSide, string expected)
{
View view = GetViewsForDrawFrameTests (start, startSide, end, endSide);