123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 |
- using System;
- using System.Collections.Generic;
- using Xunit;
- namespace Terminal.Gui.Core {
- public class StackExtensionsTests {
- [Fact]
- public void Stack_Toplevels_CreateToplevels ()
- {
- Stack<Toplevel> toplevels = CreateToplevels ();
- int index = toplevels.Count - 1;
- foreach (var top in toplevels) {
- if (top.GetType () == typeof (Toplevel)) {
- Assert.Equal ("Top", top.Id);
- } else {
- Assert.Equal ($"w{index}", top.Id);
- }
- index--;
- }
- var tops = toplevels.ToArray ();
- Assert.Equal ("w4", tops [0].Id);
- Assert.Equal ("w3", tops [1].Id);
- Assert.Equal ("w2", tops [2].Id);
- Assert.Equal ("w1", tops [3].Id);
- Assert.Equal ("Top", tops [^1].Id);
- }
- [Fact]
- public void Stack_Toplevels_Replace ()
- {
- Stack<Toplevel> toplevels = CreateToplevels ();
- var valueToReplace = new Window () { Id = "w1" };
- var valueToReplaceWith = new Window () { Id = "new" };
- ToplevelEqualityComparer comparer = new ToplevelEqualityComparer ();
- toplevels.Replace (valueToReplace, valueToReplaceWith, comparer);
- var tops = toplevels.ToArray ();
- Assert.Equal ("w4", tops [0].Id);
- Assert.Equal ("w3", tops [1].Id);
- Assert.Equal ("w2", tops [2].Id);
- Assert.Equal ("new", tops [3].Id);
- Assert.Equal ("Top", tops [^1].Id);
- }
- [Fact]
- public void Stack_Toplevels_Swap ()
- {
- Stack<Toplevel> toplevels = CreateToplevels ();
- var valueToSwapFrom = new Window () { Id = "w3" };
- var valueToSwapTo = new Window () { Id = "w1" };
- ToplevelEqualityComparer comparer = new ToplevelEqualityComparer ();
- toplevels.Swap (valueToSwapFrom, valueToSwapTo, comparer);
- var tops = toplevels.ToArray ();
- Assert.Equal ("w4", tops [0].Id);
- Assert.Equal ("w1", tops [1].Id);
- Assert.Equal ("w2", tops [2].Id);
- Assert.Equal ("w3", tops [3].Id);
- Assert.Equal ("Top", tops [^1].Id);
- }
- [Fact]
- public void Stack_Toplevels_MoveNext ()
- {
- Stack<Toplevel> toplevels = CreateToplevels ();
- toplevels.MoveNext ();
- var tops = toplevels.ToArray ();
- Assert.Equal ("w3", tops [0].Id);
- Assert.Equal ("w2", tops [1].Id);
- Assert.Equal ("w1", tops [2].Id);
- Assert.Equal ("Top", tops [3].Id);
- Assert.Equal ("w4", tops [^1].Id);
- }
- [Fact]
- public void Stack_Toplevels_MovePrevious ()
- {
- Stack<Toplevel> toplevels = CreateToplevels ();
- toplevels.MovePrevious ();
- var tops = toplevels.ToArray ();
- Assert.Equal ("Top", tops [0].Id);
- Assert.Equal ("w4", tops [1].Id);
- Assert.Equal ("w3", tops [2].Id);
- Assert.Equal ("w2", tops [3].Id);
- Assert.Equal ("w1", tops [^1].Id);
- }
- [Fact]
- public void ToplevelEqualityComparer_GetHashCode ()
- {
- Stack<Toplevel> toplevels = CreateToplevels ();
- // Only allows unique keys
- HashSet<int> hCodes = new HashSet<int> ();
- foreach (var top in toplevels) {
- Assert.True (hCodes.Add (top.GetHashCode ()));
- }
- }
- [Fact]
- public void Stack_Toplevels_FindDuplicates ()
- {
- Stack<Toplevel> toplevels = CreateToplevels ();
- ToplevelEqualityComparer comparer = new ToplevelEqualityComparer ();
- toplevels.Push (new Toplevel () { Id = "w4" });
- toplevels.Push (new Toplevel () { Id = "w1" });
- var dup = toplevels.FindDuplicates (comparer).ToArray ();
- Assert.Equal ("w4", dup [0].Id);
- Assert.Equal ("w1", dup [^1].Id);
- }
- [Fact]
- public void Stack_Toplevels_Contains ()
- {
- Stack<Toplevel> toplevels = CreateToplevels ();
- ToplevelEqualityComparer comparer = new ToplevelEqualityComparer ();
- Assert.True (toplevels.Contains (new Window () { Id = "w2" }, comparer));
- Assert.False (toplevels.Contains (new Toplevel () { Id = "top2" }, comparer));
- }
- [Fact]
- public void Stack_Toplevels_MoveTo ()
- {
- Stack<Toplevel> toplevels = CreateToplevels ();
- var valueToMove = new Window () { Id = "w1" };
- ToplevelEqualityComparer comparer = new ToplevelEqualityComparer ();
- toplevels.MoveTo (valueToMove, 1, comparer);
- var tops = toplevels.ToArray ();
- Assert.Equal ("w4", tops [0].Id);
- Assert.Equal ("w1", tops [1].Id);
- Assert.Equal ("w3", tops [2].Id);
- Assert.Equal ("w2", tops [3].Id);
- Assert.Equal ("Top", tops [^1].Id);
- }
- [Fact]
- public void Stack_Toplevels_MoveTo_From_Last_To_Top ()
- {
- Stack<Toplevel> toplevels = CreateToplevels ();
- var valueToMove = new Window () { Id = "Top" };
- ToplevelEqualityComparer comparer = new ToplevelEqualityComparer ();
- toplevels.MoveTo (valueToMove, 0, comparer);
- var tops = toplevels.ToArray ();
- Assert.Equal ("Top", tops [0].Id);
- Assert.Equal ("w4", tops [1].Id);
- Assert.Equal ("w3", tops [2].Id);
- Assert.Equal ("w2", tops [3].Id);
- Assert.Equal ("w1", tops [^1].Id);
- }
- private Stack<Toplevel> CreateToplevels ()
- {
- Stack<Toplevel> toplevels = new Stack<Toplevel> ();
- toplevels.Push (new Toplevel () { Id = "Top" });
- toplevels.Push (new Window () { Id = "w1" });
- toplevels.Push (new Window () { Id = "w2" });
- toplevels.Push (new Window () { Id = "w3" });
- toplevels.Push (new Window () { Id = "w4" });
- return toplevels;
- }
- }
- }
|