namespace Nonemm.Session.Tests; public class CallStackTests { [Fact] public void ACallThatIsNotAMultiplierGoesToTheBack() { CallStack stack = new(); stack.Add("DL1ABC", isMultiplier: false); stack.Add("G4ABC", isMultiplier: false); Assert.Equal(["DL1ABC", "G4ABC"], stack.Calls); } [Fact] public void AMultiplierGoesToTheFront() { CallStack stack = new(); stack.Add("DL1ABC", isMultiplier: false); stack.Add("G4ABC", isMultiplier: false); stack.Add("JA1XYZ", isMultiplier: true); Assert.Equal(["JA1XYZ", "DL1ABC", "G4ABC"], stack.Calls); } [Fact] public void ACallAlreadyOnTheStackIsMovedRatherThanRepeated() { CallStack stack = new(); stack.Add("DL1ABC", isMultiplier: false); stack.Add("G4ABC", isMultiplier: false); stack.Add("DL1ABC", isMultiplier: true); Assert.Equal(["DL1ABC", "G4ABC"], stack.Calls); } [Fact] public void ACallTooShortToBeOneIsNotStacked() { CallStack stack = new(); stack.Add("D", isMultiplier: false); Assert.True(stack.IsEmpty); } [Fact] public void TheCallsComeOffTheFront() { CallStack stack = new(); stack.Add("DL1ABC", isMultiplier: false); stack.Add("G4ABC", isMultiplier: false); Assert.Equal("DL1ABC", stack.Next()); Assert.Equal("G4ABC", stack.Next()); Assert.Equal("", stack.Next()); } [Fact] public void MoveToTopBringsACallForward() { CallStack stack = new(); stack.Add("DL1ABC", isMultiplier: false); stack.Add("G4ABC", isMultiplier: false); stack.MoveToTop("G4ABC"); Assert.Equal(["G4ABC", "DL1ABC"], stack.Calls); } [Fact] public void MoveToTopLeavesACallThatIsNotThereAlone() { CallStack stack = new(); stack.Add("DL1ABC", isMultiplier: false); stack.MoveToTop("G4ABC"); Assert.Equal(["DL1ABC"], stack.Calls); } }