123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- namespace Terminal.Gui.ApplicationTests;
- public class StackExtensionsTests
- {
- [Fact]
- public void Stack_Toplevels_Contains ()
- {
- Stack<Toplevel> Toplevels = CreateToplevels ();
- var 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_CreateToplevels ()
- {
- Stack<Toplevel> Toplevels = CreateToplevels ();
- int index = Toplevels.Count - 1;
- foreach (Toplevel top in Toplevels)
- {
- if (top.GetType () == typeof (Toplevel))
- {
- Assert.Equal ("Top", top.Id);
- }
- else
- {
- Assert.Equal ($"w{index}", top.Id);
- }
- index--;
- }
- Toplevel [] 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_FindDuplicates ()
- {
- Stack<Toplevel> Toplevels = CreateToplevels ();
- var comparer = new ToplevelEqualityComparer ();
- Toplevels.Push (new Toplevel { Id = "w4" });
- Toplevels.Push (new Toplevel { Id = "w1" });
- Toplevel [] dup = Toplevels.FindDuplicates (comparer).ToArray ();
- Assert.Equal ("w4", dup [0].Id);
- Assert.Equal ("w1", dup [^1].Id);
- }
- [Fact]
- public void Stack_Toplevels_MoveNext ()
- {
- Stack<Toplevel> Toplevels = CreateToplevels ();
- Toplevels.MoveNext ();
- Toplevel [] 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 ();
- Toplevel [] 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 Stack_Toplevels_MoveTo ()
- {
- Stack<Toplevel> Toplevels = CreateToplevels ();
- var valueToMove = new Window { Id = "w1" };
- var comparer = new ToplevelEqualityComparer ();
- Toplevels.MoveTo (valueToMove, 1, comparer);
- Toplevel [] 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" };
- var comparer = new ToplevelEqualityComparer ();
- Toplevels.MoveTo (valueToMove, 0, comparer);
- Toplevel [] 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 Stack_Toplevels_Replace ()
- {
- Stack<Toplevel> Toplevels = CreateToplevels ();
- var valueToReplace = new Window { Id = "w1" };
- var valueToReplaceWith = new Window { Id = "new" };
- var comparer = new ToplevelEqualityComparer ();
- Toplevels.Replace (valueToReplace, valueToReplaceWith, comparer);
- Toplevel [] 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" };
- var comparer = new ToplevelEqualityComparer ();
- Toplevels.Swap (valueToSwapFrom, valueToSwapTo, comparer);
- Toplevel [] 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 ToplevelEqualityComparer_GetHashCode ()
- {
- Stack<Toplevel> Toplevels = CreateToplevels ();
- // Only allows unique keys
- HashSet<int> hCodes = new ();
- foreach (Toplevel top in Toplevels)
- {
- Assert.True (hCodes.Add (top.GetHashCode ()));
- }
- }
- private Stack<Toplevel> CreateToplevels ()
- {
- Stack<Toplevel> Toplevels = new ();
- 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;
- }
- }
|