public void PackageUsingStatePatternExample() { // given var collectedMessages = new List <string>(); void MessageCollector(string msg) { collectedMessages.Add(msg); } var package = new PackageUsingStatePattern(MessageCollector); // when package.Operation(); // should send state 1 message package.Operation(); // should send state 2 message package.Operation(); // should send state 1 message again // then Check.That(collectedMessages).ContainsExactly("Handling state 1", "Handling state 2", "Handling state 1"); }
protected PackageState(PackageUsingStatePattern package) { _package = package; }
protected static PackageState State2(PackageUsingStatePattern package) { return(new PackageState2(package)); }
public static PackageState State1(PackageUsingStatePattern package) { return(new PackageState1(package)); }
public PackageState2(PackageUsingStatePattern package) : base(package) { }