ソースを参照

Added more BarTests

Tig 1 年間 前
コミット
b48d49e8c2
2 ファイル変更92 行追加2 行削除
  1. 8 2
      Terminal.Gui/Views/Bar.cs
  2. 84 0
      UnitTests/Views/BarTests.cs

+ 8 - 2
Terminal.Gui/Views/Bar.cs

@@ -85,6 +85,7 @@ public class Bar : View
         }
         }
     }
     }
 
 
+    // TODO: Move this to View
     /// <summary>Inserts a <see cref="Shortcut"/> in the specified index of <see cref="View.Subviews"/>.</summary>
     /// <summary>Inserts a <see cref="Shortcut"/> in the specified index of <see cref="View.Subviews"/>.</summary>
     /// <param name="index">The zero-based index at which item should be inserted.</param>
     /// <param name="index">The zero-based index at which item should be inserted.</param>
     /// <param name="item">The item to insert.</param>
     /// <param name="item">The item to insert.</param>
@@ -94,19 +95,24 @@ public class Bar : View
         int count = savedSubViewList.Count;
         int count = savedSubViewList.Count;
         RemoveAll ();
         RemoveAll ();
 
 
-        for (var i = 0; i < count; i++)
+        for (var i = 0; i <= count; i++)
         {
         {
             if (i == index)
             if (i == index)
             {
             {
                 Add (item);
                 Add (item);
             }
             }
 
 
-            Add (savedSubViewList [i]);
+            if (i < count)
+            {
+                Add (savedSubViewList [i]);
+            }
         }
         }
 
 
         SetNeedsDisplay ();
         SetNeedsDisplay ();
     }
     }
 
 
+    // TODO: Move this to View
+
     /// <summary>Removes a <see cref="Shortcut"/> at specified index of <see cref="View.Subviews"/>.</summary>
     /// <summary>Removes a <see cref="Shortcut"/> at specified index of <see cref="View.Subviews"/>.</summary>
     /// <param name="index">The zero-based index of the item to remove.</param>
     /// <param name="index">The zero-based index of the item to remove.</param>
     /// <returns>The <see cref="Shortcut"/> removed.</returns>
     /// <returns>The <see cref="Shortcut"/> removed.</returns>

+ 84 - 0
UnitTests/Views/BarTests.cs

@@ -18,4 +18,88 @@ public class BarTests
         // TOOD: more
         // TOOD: more
     }
     }
 
 
+    [Fact]
+    public void Constructor_InitializesEmpty_WhenNoShortcutsProvided ()
+    {
+        var bar = new Bar ();
+        Assert.Empty (bar.Subviews);
+    }
+
+    [Fact]
+    public void Constructor_InitializesWithShortcuts_WhenProvided ()
+    {
+        var shortcuts = new List<Shortcut>
+        {
+            new Shortcut(Key.Empty, "Command1", null, null),
+            new Shortcut(Key.Empty, "Command2", null, null)
+        };
+
+        var bar = new Bar (shortcuts);
+
+        Assert.Equal (shortcuts.Count, bar.Subviews.Count);
+        for (int i = 0; i < shortcuts.Count; i++)
+        {
+            Assert.Same (shortcuts [i], bar.Subviews [i]);
+        }
+    }
+
+    [Fact]
+    public void OrientationProperty_SetsCorrectly ()
+    {
+        var bar = new Bar ();
+        Assert.Equal (Orientation.Horizontal, bar.Orientation); // Default value
+
+        bar.Orientation = Orientation.Vertical;
+        Assert.Equal (Orientation.Vertical, bar.Orientation);
+    }
+
+    [Fact]
+    public void AlignmentModesProperty_SetsCorrectly ()
+    {
+        var bar = new Bar ();
+        Assert.Equal (AlignmentModes.StartToEnd, bar.AlignmentModes); // Default value
+
+        bar.AlignmentModes = AlignmentModes.EndToStart;
+        Assert.Equal (AlignmentModes.EndToStart, bar.AlignmentModes);
+    }
+
+    [Fact]
+    public void AddShortcutAt_InsertsShortcutCorrectly ()
+    {
+        var bar = new Bar ();
+        var shortcut = new Shortcut (Key.Empty, "Command", null, null);
+        bar.AddShortcutAt (0, shortcut);
+
+        Assert.Contains (shortcut, bar.Subviews);
+    }
+
+    [Fact]
+    public void RemoveShortcut_RemovesShortcutCorrectly ()
+    {
+        var shortcut1 = new Shortcut (Key.Empty, "Command1", null, null);
+        var shortcut2 = new Shortcut (Key.Empty, "Command2", null, null);
+        var bar = new Bar (new List<Shortcut> { shortcut1, shortcut2 });
+
+        var removedShortcut = bar.RemoveShortcut (0);
+
+        Assert.Same (shortcut1, removedShortcut);
+        Assert.DoesNotContain (shortcut1, bar.Subviews);
+        Assert.Contains (shortcut2, bar.Subviews);
+    }
+
+    [Fact]
+    public void Layout_ChangesBasedOnOrientation ()
+    {
+        var shortcut1 = new Shortcut (Key.Empty, "Command1", null, null);
+        var shortcut2 = new Shortcut (Key.Empty, "Command2", null, null);
+        var bar = new Bar (new List<Shortcut> { shortcut1, shortcut2 });
+
+        bar.Orientation = Orientation.Horizontal;
+        bar.LayoutSubviews ();
+        // TODO: Assert specific layout expectations for horizontal orientation
+
+        bar.Orientation = Orientation.Vertical;
+        bar.LayoutSubviews ();
+        // TODO: Assert specific layout expectations for vertical orientation
+    }
 }
 }