Best Coyote code snippet using Microsoft.Coyote.Actors.BugFinding.Tests.EventHandlerTests.SetupEvent
EventHandlerTests.cs
Source:EventHandlerTests.cs  
...11        public EventHandlerTests(ITestOutputHelper output)12            : base(output)13        {14        }15        private class SetupEvent : Event16        {17            public ActorId Id;18            public SetupEvent(ActorId id)19            {20                this.Id = id;21            }22        }23        private class E1 : Event24        {25        }26        private class E2 : Event27        {28        }29        private class E3 : Event30        {31        }32        private class E4 : Event33        {34            public int Value;35            public E4(int value)36            {37                this.Value = value;38            }39        }40        [OnEventDoAction(typeof(UnitEvent), nameof(HandleUnitEvent))]41        [OnEventDoAction(typeof(E1), nameof(HandleE1))]42        private class A1 : Actor43        {44            private bool Test = false;45            protected override Task OnInitializeAsync(Event initialEvent)46            {47                this.SendEvent(this.Id, UnitEvent.Instance);48                this.SendEvent(this.Id, new E1());49                return Task.CompletedTask;50            }51            private void HandleUnitEvent(Event e)52            {53                this.Test = true;54                this.Assert(e is Event);55            }56            private void HandleE1(Event e)57            {58                this.Assert(e is Event);59                this.Assert(this.Test is false, "Reached test assertion.");60            }61        }62        [Fact(Timeout = 5000)]63        public void TestEventHandlerInActor1()64        {65            this.TestWithError(r =>66            {67                r.CreateActor(typeof(A1));68            },69            expectedError: "Reached test assertion.",70            replay: true);71        }72        [OnEventDoAction(typeof(E1), nameof(HandleE1))]73        private class A2 : Actor74        {75            protected override Task OnInitializeAsync(Event initialEvent)76            {77                this.SendEvent(this.Id, new E1());78                return Task.CompletedTask;79            }80            private void HandleE1()81            {82                this.Assert(false, "Reached test assertion.");83            }84        }85        [Fact(Timeout = 5000)]86        public void TestEventHandlerInActor2()87        {88            this.TestWithError(r =>89            {90                r.CreateActor(typeof(A2));91            },92            expectedError: "Reached test assertion.",93            replay: true);94        }95        [OnEventDoAction(typeof(UnitEvent), nameof(HandleUnitEvent))]96        private class A3 : Actor97        {98            private void HandleUnitEvent()99            {100                this.Assert(false, "Reached test assertion.");101            }102        }103        [Fact(Timeout = 5000)]104        public void TestEventHandlerInActor3()105        {106            this.TestWithError(r =>107            {108                var id = r.CreateActor(typeof(A3));109                r.SendEvent(id, UnitEvent.Instance);110            },111            configuration: this.GetConfiguration(),112            expectedError: "Reached test assertion.",113            replay: true);114        }115        private class M1 : StateMachine116        {117            private bool Test = false;118            [Start]119            [OnEntry(nameof(InitOnEntry))]120            [OnEventDoAction(typeof(UnitEvent), nameof(HandleUnitEvent))]121            [OnEventDoAction(typeof(E1), nameof(HandleE1))]122            private class Init : State123            {124            }125            private void InitOnEntry()126            {127                this.SendEvent(this.Id, new E1());128                this.RaiseEvent(UnitEvent.Instance);129            }130            private void HandleUnitEvent()131            {132                this.Test = true;133            }134            private void HandleE1()135            {136                this.Assert(this.Test is false, "Reached test assertion.");137            }138        }139        [Fact(Timeout = 5000)]140        public void TestEventHandlerInStateMachine1()141        {142            this.TestWithError(r =>143            {144                r.CreateActor(typeof(M1));145            },146            expectedError: "Reached test assertion.",147            replay: true);148        }149        private class M2 : StateMachine150        {151            [Start]152            [OnEntry(nameof(InitOnEntry))]153            [OnEventDoAction(typeof(E1), nameof(HandleE1))]154            private class Init : State155            {156            }157            private void InitOnEntry()158            {159                this.SendEvent(this.Id, new E1());160            }161            private void HandleE1()162            {163                this.Assert(false, "Reached test assertion.");164            }165        }166        [Fact(Timeout = 5000)]167        public void TestEventHandlerInStateMachine2()168        {169            this.TestWithError(r =>170            {171                r.CreateActor(typeof(M2));172            },173            expectedError: "Reached test assertion.",174            replay: true);175        }176        private class M3 : StateMachine177        {178            [Start]179            [OnEntry(nameof(InitOnEntry))]180            [OnExit(nameof(InitOnExit))]181            [OnEventGotoState(typeof(UnitEvent), typeof(Active))]182            private class Init : State183            {184            }185            private void InitOnEntry()186            {187                this.SendEvent(this.Id, UnitEvent.Instance);188            }189            private void InitOnExit()190            {191                this.SendEvent(this.Id, new E1());192            }193            private class Active : State194            {195            }196        }197        [Fact(Timeout = 5000)]198        public void TestEventHandlerInStateMachine3()199        {200            this.TestWithError(r =>201            {202                r.CreateActor(typeof(M3));203            },204            expectedError: "M3() received event 'E1' that cannot be handled.",205            replay: true);206        }207        private class M4 : StateMachine208        {209            private bool Test = false;210            [Start]211            [OnEntry(nameof(InitOnEntry))]212            [OnExit(nameof(InitOnExit))]213            [OnEventGotoState(typeof(UnitEvent), typeof(Active))]214            private class Init : State215            {216            }217            private void InitOnEntry()218            {219                this.SendEvent(this.Id, UnitEvent.Instance);220            }221            private void InitOnExit()222            {223                this.SendEvent(this.Id, new E1());224            }225            [OnEntry(nameof(ActiveOnEntry))]226            [OnEventDoAction(typeof(E1), nameof(HandleE1))]227            private class Active : State228            {229            }230            private void ActiveOnEntry()231            {232                this.Test = true;233            }234            private void HandleE1()235            {236                this.Assert(this.Test is false, "Reached test assertion.");237            }238        }239        [Fact(Timeout = 5000)]240        public void TestEventHandlerInStateMachine4()241        {242            this.TestWithError(r =>243            {244                r.CreateActor(typeof(M4));245            },246            expectedError: "Reached test assertion.",247            replay: true);248        }249        private class M5 : StateMachine250        {251            [Start]252            [OnEntry(nameof(InitOnEntry))]253            [OnExit(nameof(InitOnExit))]254            [OnEventGotoState(typeof(UnitEvent), typeof(Init))]255            [OnEventDoAction(typeof(E1), nameof(HandleE1))]256            private class Init : State257            {258            }259            private void InitOnEntry()260            {261                this.SendEvent(this.Id, UnitEvent.Instance);262            }263            private void InitOnExit()264            {265                this.SendEvent(this.Id, new E1());266            }267            private void HandleE1()268            {269                this.Assert(false, "Reached test assertion.");270            }271        }272        [Fact(Timeout = 5000)]273        public void TestEventHandlerInStateMachine5()274        {275            this.TestWithError(r =>276            {277                r.CreateActor(typeof(M5));278            },279            expectedError: "Reached test assertion.",280            replay: true);281        }282        private class M6 : StateMachine283        {284            [Start]285            [OnEntry(nameof(InitOnEntry))]286            [OnExit(nameof(InitOnExit))]287            [OnEventGotoState(typeof(UnitEvent), typeof(Init))]288            [OnEventPushState(typeof(E1), typeof(Init))]289            private class Init : State290            {291            }292            private void InitOnEntry()293            {294                this.SendEvent(this.Id, UnitEvent.Instance, options: new SendOptions(assert: 1));295            }296            private void InitOnExit()297            {298                this.SendEvent(this.Id, new E1());299            }300        }301        [Fact(Timeout = 5000)]302        public void TestEventHandlerInStateMachine6()303        {304            this.TestWithError(r =>305            {306                r.CreateActor(typeof(M6));307            },308            expectedError: "There are more than 1 instances of 'Events.UnitEvent' in the input queue of M6().",309            replay: true);310        }311        private class M7 : StateMachine312        {313            [Start]314            [OnEntry(nameof(InitOnEntry))]315            [OnExit(nameof(InitOnExit))]316            [OnEventGotoState(typeof(UnitEvent), typeof(Init))]317            [OnEventPushState(typeof(E1), typeof(Active))]318            private class Init : State319            {320            }321            private void InitOnEntry()322            {323                this.SendEvent(this.Id, UnitEvent.Instance);324            }325            private void InitOnExit()326            {327                this.SendEvent(this.Id, new E1());328            }329            [OnEntry(nameof(ActiveOnEntry))]330            private class Active : State331            {332            }333            private void ActiveOnEntry()334            {335                this.Assert(false, "Reached test assertion.");336            }337        }338        [Fact(Timeout = 5000)]339        public void TestEventHandlerInStateMachine7()340        {341            this.TestWithError(r =>342            {343                r.CreateActor(typeof(M7));344            },345            expectedError: "Reached test assertion.",346            replay: true);347        }348        private class M8 : StateMachine349        {350            private bool Test = false;351            [Start]352            [OnEntry(nameof(InitOnEntry))]353            [OnExit(nameof(InitOnExit))]354            [OnEventGotoState(typeof(UnitEvent), typeof(Init))]355            [OnEventPushState(typeof(E1), typeof(Active))]356            [OnEventDoAction(typeof(E2), nameof(HandleE2))]357            private class Init : State358            {359            }360            private void InitOnEntry()361            {362                this.SendEvent(this.Id, UnitEvent.Instance);363            }364            private void InitOnExit()365            {366                this.SendEvent(this.Id, new E1());367            }368            [OnEntry(nameof(ActiveOnEntry))]369            private class Active : State370            {371            }372            private void ActiveOnEntry()373            {374                this.Test = true;375                this.SendEvent(this.Id, new E2());376            }377            private void HandleE2()378            {379                this.Assert(this.Test is false, "Reached test assertion.");380            }381        }382        [Fact(Timeout = 5000)]383        public void TestEventHandlerInStateMachine8()384        {385            this.TestWithError(r =>386            {387                r.CreateActor(typeof(M8));388            },389            expectedError: "Reached test assertion.",390            replay: true);391        }392        private class M9 : StateMachine393        {394            private bool Test = false;395            [Start]396            [OnEntry(nameof(InitOnEntry))]397            [OnExit(nameof(InitOnExit))]398            [OnEventPushState(typeof(UnitEvent), typeof(Active))]399            [OnEventDoAction(typeof(E2), nameof(HandleE2))]400            private class Init : State401            {402            }403            private void InitOnEntry()404            {405                this.SendEvent(this.Id, UnitEvent.Instance);406            }407            private void InitOnExit()408            {409                this.SendEvent(this.Id, new E1());410            }411            [OnEntry(nameof(ActiveOnEntry))]412            private class Active : State413            {414            }415            private void ActiveOnEntry()416            {417                this.Test = true;418                this.SendEvent(this.Id, new E2());419                this.RaisePopStateEvent();420            }421            private void HandleE2()422            {423                this.Assert(this.Test is false, "Reached test assertion.");424            }425        }426        [Fact(Timeout = 5000)]427        public void TestEventHandlerInStateMachine9()428        {429            this.TestWithError(r =>430            {431                r.CreateActor(typeof(M9));432            },433            expectedError: "Reached test assertion.",434            replay: true);435        }436        private class M10 : StateMachine437        {438            private bool Test = false;439            [Start]440            [OnEntry(nameof(InitOnEntry))]441            [OnExit(nameof(InitOnExit))]442            [OnEventPushState(typeof(UnitEvent), typeof(Active))]443            [OnEventDoAction(typeof(E2), nameof(HandleE2))]444            private class Init : State445            {446            }447            private void InitOnEntry()448            {449                this.SendEvent(this.Id, UnitEvent.Instance);450            }451            private void InitOnExit()452            {453                this.SendEvent(this.Id, new E1());454            }455            [OnEntry(nameof(ActiveOnEntry))]456            private class Active : State457            {458            }459            private void ActiveOnEntry()460            {461                this.Test = true;462                this.SendEvent(this.Id, new E2());463            }464            private void HandleE2()465            {466                this.Assert(this.Test is false, "Reached test assertion.");467            }468        }469        [Fact(Timeout = 5000)]470        public void TestEventHandlerInStateMachine10()471        {472            this.TestWithError(r =>473            {474                r.CreateActor(typeof(M10));475            },476            expectedError: "Reached test assertion.",477            replay: true);478        }479        private class M11 : StateMachine480        {481            private bool Test = false;482            [Start]483            [OnEntry(nameof(InitOnEntry))]484            [OnEventGotoState(typeof(UnitEvent), typeof(Active))]485            [OnEventGotoState(typeof(E2), typeof(Checking))]486            private class Init : State487            {488            }489            private void InitOnEntry()490            {491                this.SendEvent(this.Id, UnitEvent.Instance);492            }493            [OnEntry(nameof(ActiveOnEntry))]494            [OnExit(nameof(ActiveOnExit))]495            [OnEventGotoState(typeof(E2), typeof(Init))]496            private class Active : State497            {498            }499            private void ActiveOnEntry()500            {501                this.Test = true;502                this.SendEvent(this.Id, new E2());503            }504            private void ActiveOnExit()505            {506                this.SendEvent(this.Id, new E2());507            }508            [OnEntry(nameof(CheckingOnEntry))]509            private class Checking : State510            {511            }512            private void CheckingOnEntry()513            {514                this.Assert(this.Test is false, "Reached test assertion.");515            }516        }517        [Fact(Timeout = 5000)]518        public void TestEventHandlerInStateMachine11()519        {520            this.TestWithError(r =>521            {522                r.CreateActor(typeof(M11));523            },524            expectedError: "Reached test assertion.",525            replay: true);526        }527        private class M12 : StateMachine528        {529            private bool Test = false;530            [Start]531            [OnEntry(nameof(InitOnEntry))]532            [OnExit(nameof(InitOnExit))]533            [OnEventGotoState(typeof(UnitEvent), typeof(Init))]534            [OnEventPushState(typeof(E1), typeof(Active))]535            [OnEventDoAction(typeof(E2), nameof(HandleE2))]536            private class Init : State537            {538            }539            private void InitOnEntry()540            {541                this.SendEvent(this.Id, UnitEvent.Instance);542            }543            private void InitOnExit()544            {545                this.SendEvent(this.Id, new E1());546            }547            [OnEntry(nameof(ActiveOnEntry))]548            [OnExit(nameof(ActiveOnExit))]549            [OnEventGotoState(typeof(E2), typeof(Init))]550            private class Active : State551            {552            }553            private void ActiveOnEntry()554            {555                this.Test = true;556                this.SendEvent(this.Id, new E2());557            }558            private void ActiveOnExit()559            {560                this.Assert(this.Test is false, "Reached test assertion.");561            }562#pragma warning disable CA1822 // Mark members as static563            private void HandleE2()564#pragma warning restore CA1822 // Mark members as static565            {566            }567        }568        [Fact(Timeout = 5000)]569        public void TestEventHandlerInStateMachine12()570        {571            this.TestWithError(r =>572            {573                r.CreateActor(typeof(M12));574            },575            expectedError: "Reached test assertion.",576            replay: true);577        }578        private class M13 : StateMachine579        {580            private bool Test = false;581            [Start]582            [OnEntry(nameof(InitOnEntry))]583            [OnExit(nameof(InitOnExit))]584            [OnEventPushState(typeof(UnitEvent), typeof(Active))]585            [OnEventDoAction(typeof(E2), nameof(HandleE2))]586            private class Init : State587            {588            }589            private void InitOnEntry()590            {591                this.SendEvent(this.Id, UnitEvent.Instance);592            }593            private void InitOnExit()594            {595                this.SendEvent(this.Id, new E1());596            }597            [OnEntry(nameof(ActiveOnEntry))]598            [OnExit(nameof(ActiveOnExit))]599            private class Active : State600            {601            }602            private void ActiveOnEntry()603            {604                this.Test = true;605                this.RaisePopStateEvent();606            }607            private void ActiveOnExit()608            {609                this.SendEvent(this.Id, new E2());610            }611            private void HandleE2()612            {613                this.Assert(this.Test is false, "Reached test assertion.");614            }615        }616        [Fact(Timeout = 5000)]617        public void TestEventHandlerInStateMachine13()618        {619            this.TestWithError(r =>620            {621                r.CreateActor(typeof(M13));622            },623            expectedError: "Reached test assertion.",624            replay: true);625        }626        private class M14 : StateMachine627        {628            [Start]629            [OnEntry(nameof(InitOnEntry))]630            [OnExit(nameof(InitOnExit))]631            [OnEventGotoState(typeof(UnitEvent), typeof(Init))]632            [OnEventPushState(typeof(E1), typeof(Active))]633            [OnEventDoAction(typeof(E2), nameof(HandleE2))]634            private class Init : State635            {636            }637            private void InitOnEntry()638            {639                this.SendEvent(this.Id, UnitEvent.Instance, options: new SendOptions(assert: 1));640            }641            private void InitOnExit()642            {643                this.SendEvent(this.Id, new E1());644            }645            [OnEntry(nameof(ActiveOnEntry))]646            private class Active : State647            {648            }649            private void ActiveOnEntry() => this.RaiseEvent(UnitEvent.Instance);650#pragma warning disable CA1822 // Mark members as static651            private void HandleE2()652#pragma warning restore CA1822 // Mark members as static653            {654            }655        }656        [Fact(Timeout = 5000)]657        public void TestEventHandlerInStateMachine14()658        {659            this.TestWithError(r =>660            {661                r.CreateActor(typeof(M14));662            },663            expectedError: "There are more than 1 instances of 'Events.UnitEvent' in the input queue of M14().",664            replay: true);665        }666        private class M15 : StateMachine667        {668            [Start]669            [OnEntry(nameof(InitOnEntry))]670            [OnEventPushState(typeof(UnitEvent), typeof(Active))]671            private class Init : State672            {673            }674            private void InitOnEntry() => this.RaiseEvent(UnitEvent.Instance);675            [OnEntry(nameof(ActiveOnEntry))]676            [OnExit(nameof(ActiveOnExit))]677            private class Active : State678            {679            }680            private void ActiveOnEntry() => this.RaisePopStateEvent();681            private void ActiveOnExit()682            {683                this.Assert(false, "Reached test assertion.");684            }685        }686        [Fact(Timeout = 5000)]687        public void TestEventHandlerInStateMachine15()688        {689            this.TestWithError(r =>690            {691                r.CreateActor(typeof(M15));692            },693            expectedError: "Reached test assertion.",694            replay: true);695        }696        private class M16 : StateMachine697        {698            private bool Test = false;699            [Start]700            [OnEntry(nameof(InitOnEntry))]701            [OnEventPushState(typeof(HaltEvent), typeof(Active))]702            [OnEventDoAction(typeof(UnitEvent), nameof(HandleUnitEvent))]703            private class Init : State704            {705            }706            private void InitOnEntry()707            {708                this.SendEvent(this.Id, UnitEvent.Instance);709                this.RaiseEvent(HaltEvent.Instance);710            }711            [OnEntry(nameof(ActiveOnEntry))]712            private class Active : State713            {714            }715            private void ActiveOnEntry()716            {717                this.Test = true;718            }719            private void HandleUnitEvent()720            {721                this.Assert(this.Test is false, "Reached test assertion.");722            }723        }724        [Fact(Timeout = 5000)]725        public void TestEventHandlerInStateMachine16()726        {727            this.TestWithError(r =>728            {729                r.CreateActor(typeof(M16));730            },731            expectedError: "Reached test assertion.",732            replay: true);733        }734        private class M17 : StateMachine735        {736            private bool Test = false;737            [Start]738            [OnEntry(nameof(InitOnEntry))]739            [OnEventGotoState(typeof(DefaultEvent), typeof(Active))]740            [OnEventDoAction(typeof(UnitEvent), nameof(HandleUnitEvent))]741            [OnEventDoAction(typeof(E1), nameof(HandleE1))]742            private class Init : State743            {744            }745            private void InitOnEntry() => this.RaiseEvent(new E1());746            private void HandleUnitEvent()747            {748                this.Test = true;749            }750            private void HandleE1()751            {752                this.SendEvent(this.Id, UnitEvent.Instance);753            }754            [OnEntry(nameof(ActiveOnEntry))]755            private class Active : State756            {757            }758            private void ActiveOnEntry()759            {760                this.Assert(this.Test is false, "Reached test assertion.");761            }762        }763        [Fact(Timeout = 5000)]764        public void TestEventHandlerInStateMachine17()765        {766            this.TestWithError(r =>767            {768                r.CreateActor(typeof(M17));769            },770            expectedError: "Reached test assertion.",771            replay: true);772        }773        private class M18 : StateMachine774        {775            private readonly bool Test = false;776            [Start]777            [OnEventGotoState(typeof(DefaultEvent), typeof(Active))]778            private class Init : State779            {780            }781            [OnEntry(nameof(ActiveOnEntry))]782            private class Active : State783            {784            }785            private void ActiveOnEntry()786            {787                this.Assert(this.Test is true, "Reached test assertion.");788            }789        }790        [Fact(Timeout = 5000)]791        public void TestEventHandlerInStateMachine18()792        {793            this.TestWithError(r =>794            {795                r.CreateActor(typeof(M18));796            },797            expectedError: "Reached test assertion.",798            replay: true);799        }800        private class M19 : StateMachine801        {802            private int Value;803            [Start]804            [OnEntry(nameof(InitOnEntry))]805            [OnEventPushState(typeof(UnitEvent), typeof(Active))]806            [OnEventDoAction(typeof(DefaultEvent), nameof(DefaultAction))]807            private class Init : State808            {809            }810            private void InitOnEntry()811            {812                this.Value = 0;813                this.RaiseEvent(UnitEvent.Instance);814            }815            private void DefaultAction()816            {817                this.Assert(false, "Reached test assertion.");818            }819            [OnEntry(nameof(ActiveOnEntry))]820            [IgnoreEvents(typeof(UnitEvent))]821            private class Active : State822            {823            }824            private void ActiveOnEntry()825            {826                if (this.Value is 0)827                {828                    this.RaiseEvent(UnitEvent.Instance);829                }830                else831                {832                    this.Value++;833                }834            }835        }836        [Fact(Timeout = 5000)]837        public void TestEventHandlerInStateMachine19()838        {839            this.TestWithError(r =>840            {841                r.CreateActor(typeof(M19));842            },843            expectedError: "Reached test assertion.",844            replay: true);845        }846        private class M20 : StateMachine847        {848            [Start]849            [OnEventGotoState(typeof(DefaultEvent), typeof(Active))]850            private class Init : State851            {852            }853            [OnEntry(nameof(ActiveOnEntry))]854            private class Active : State855            {856            }857            private void ActiveOnEntry(Event e)858            {859                this.Assert(e.GetType() == typeof(DefaultEvent));860            }861        }862        [Fact(Timeout = 5000)]863        public void TestEventHandlerInStateMachine20()864        {865            this.Test(r =>866            {867                r.CreateActor(typeof(M20));868            });869        }870        private class M21a : StateMachine871        {872            private ActorId GhostMachine;873            private bool Test = false;874            [Start]875            [OnEntry(nameof(InitOnEntry))]876            [OnExit(nameof(ExitInit))]877            [OnEventGotoState(typeof(E1), typeof(S1))] // exit actions are performed before transition to S1878            [OnEventDoAction(typeof(E3), nameof(Action1))] // E3, E2 have no effect on reachability of assert(false)879            private class Init : State880            {881            }882            private void InitOnEntry()883            {884                this.GhostMachine = this.CreateActor(typeof(M21b));885                this.SendEvent(this.GhostMachine, new SetupEvent(this.Id));886                this.SendEvent(this.GhostMachine, UnitEvent.Instance);887            }888            private void ExitInit()889            {890                this.Test = true;891            }892            [OnEntry(nameof(EntryS1))]893            [OnEventGotoState(typeof(UnitEvent), typeof(S2))]894            private class S1 : State895            {896            }897            private void EntryS1()898            {899                this.Assert(this.Test is true);900                this.RaiseEvent(UnitEvent.Instance);901            }902            [OnEntry(nameof(EntryS2))]903            private class S2 : State904            {905            }906            private void EntryS2()907            {908                // This assert is reachable: M1A -UnitEvent-> M1B -E1-> M1A;909                // then Real_S1 (assert holds), Real_S2 (assert fails)910                this.Assert(false, "Reached test assertion.");911            }912            private void Action1()913            {914                this.SendEvent(this.GhostMachine, new E2());915            }916        }917        private class M21b : StateMachine918        {919            private ActorId RealMachine;920            [Start]921            [OnEventDoAction(typeof(SetupEvent), nameof(SetupEvent))]922            [OnEventGotoState(typeof(UnitEvent), typeof(S1))]923            private class Init : State924            {925            }926            private void SetupEvent(Event e)927            {928                this.RealMachine = (e as SetupEvent).Id;929            }930            [OnEntry(nameof(EntryS1))]931            [OnEventGotoState(typeof(E2), typeof(S2))]932            private class S1 : State933            {934            }935            private void EntryS1()936            {937                this.SendEvent(this.RealMachine, new E3());938                this.SendEvent(this.RealMachine, new E1());939            }940            private class S2 : State941            {942            }943        }944        [Fact(Timeout = 5000)]945        public void TestEventHandlerInStateMachine21()946        {947            this.TestWithError(r =>948            {949                r.CreateActor(typeof(M21a));950            },951            configuration: this.GetConfiguration().WithDFSStrategy(),952            expectedError: "Reached test assertion.",953            replay: true);954        }955        private class M22a : StateMachine956        {957            private ActorId GhostMachine;958            [Start]959            [OnEntry(nameof(InitOnEntry))]960            [OnEventGotoState(typeof(E3), typeof(S2))]961            [OnEventPushState(typeof(UnitEvent), typeof(S1))]962            [OnEventDoAction(typeof(E1), nameof(Action1))]963            private class Init : State964            {965            }966            private void InitOnEntry()967            {968                this.GhostMachine = this.CreateActor(typeof(M22b));969                this.SendEvent(this.GhostMachine, new SetupEvent(this.Id));970                this.RaiseEvent(UnitEvent.Instance);971            }972            [OnEntry(nameof(EntryS1))]973            private class S1 : State974            {975            }976            private void EntryS1()977            {978                this.SendEvent(this.GhostMachine, UnitEvent.Instance);979                // We wait in this state until E1 comes from M2B,980                // then handle E1 using the inherited handler Action1981                // installed by Init.982                // Then wait until E3 comes from M2B, and since983                // there's no handler for E3 in this pushed state,984                // this state is popped, and E3 goto handler from Init985                // is invoked.986            }987            [OnEntry(nameof(EntryS2))]988            private class S2 : State989            {990            }991            private void EntryS2()992            {993                // This assert is reachable.994                this.Assert(false, "Reached test assertion.");995            }996            private void Action1()997            {998                this.SendEvent(this.GhostMachine, new E2());999            }1000        }1001        private class M22b : StateMachine1002        {1003            private ActorId RealMachine;1004            [Start]1005            [OnEventDoAction(typeof(SetupEvent), nameof(SetupEvent))]1006            [OnEventGotoState(typeof(UnitEvent), typeof(S1))]1007            private class Init : State1008            {1009            }1010            private void SetupEvent(Event e)1011            {1012                this.RealMachine = (e as SetupEvent).Id;1013            }1014            [OnEntry(nameof(EntryS1))]1015            [OnEventGotoState(typeof(E2), typeof(S2))]1016            private class S1 : State1017            {1018            }1019            private void EntryS1()1020            {1021                this.SendEvent(this.RealMachine, new E1());1022            }1023            [OnEntry(nameof(EntryS2))]1024            private class S2 : State1025            {1026            }1027            private void EntryS2()1028            {1029                this.SendEvent(this.RealMachine, new E3());1030            }1031        }1032        [Fact(Timeout = 5000)]1033        public void TestEventHandlerInStateMachine22()1034        {1035            this.TestWithError(r =>1036            {1037                r.CreateActor(typeof(M22a));1038            },1039            configuration: this.GetConfiguration().WithDFSStrategy(),1040            expectedError: "Reached test assertion.",1041            replay: true);1042        }1043        private class M23a : StateMachine1044        {1045            private ActorId GhostMachine;1046            [Start]1047            [OnEntry(nameof(InitOnEntry))]1048            [OnEventGotoState(typeof(E3), typeof(S2))]1049            [OnEventPushState(typeof(UnitEvent), typeof(S1))]1050            [OnEventDoAction(typeof(E4), nameof(Action1))]1051            private class Init : State1052            {1053            }1054            private void InitOnEntry()1055            {1056                this.GhostMachine = this.CreateActor(typeof(M23b));1057                this.SendEvent(this.GhostMachine, new SetupEvent(this.Id));1058                this.RaiseEvent(UnitEvent.Instance);1059            }1060            [OnEntry(nameof(EntryS1))]1061            private class S1 : State1062            {1063            }1064            private void EntryS1()1065            {1066                this.SendEvent(this.GhostMachine, UnitEvent.Instance);1067            }1068            [OnEntry(nameof(EntryS2))]1069            private class S2 : State1070            {1071            }1072            private void EntryS2()1073            {1074                // This assert is reachable.1075                this.Assert(false, "Reached test assertion.");1076            }1077            private void Action1()1078            {1079                this.SendEvent(this.GhostMachine, new E2());1080            }1081        }1082        private class M23b : StateMachine1083        {1084            private ActorId RealMachine;1085            [Start]1086            [OnEventDoAction(typeof(SetupEvent), nameof(SetupEvent))]1087            [OnEventGotoState(typeof(UnitEvent), typeof(S1))]1088            private class Init : State1089            {1090            }1091            private void SetupEvent(Event e)1092            {1093                this.RealMachine = (e as SetupEvent).Id;1094            }1095            [OnEntry(nameof(EntryS1))]1096            [OnEventGotoState(typeof(E2), typeof(S2))]1097            private class S1 : State1098            {1099            }1100            private void EntryS1()1101            {1102                this.SendEvent(this.RealMachine, new E4(100));1103            }1104            [OnEntry(nameof(EntryS2))]1105            private class S2 : State1106            {1107            }...SetupEvent
Using AI Code Generation
1using System;2using System.Collections.Generic;3using System.Linq;4using System.Text;5using System.Threading.Tasks;6using Microsoft.Coyote;7using Microsoft.Coyote.Actors;8using Microsoft.Coyote.Testing;9using Microsoft.Coyote.Actors.BugFinding.Tests;10using Microsoft.Coyote.Actors.BugFinding;11using Microsoft.Coyote.Actors.BugFinding.Tests;12using Microsoft.Coyote.Actors.BugFinding.Tests.SetupEvent;13using Microsoft.Coyote.Actors.BugFinding.Tests.SetupEvent.Events;14using Microsoft.Coyote.Actors.BugFinding.Tests.SetupEvent.Machines;15{16    {17        private static int s_count;18        public void TestSetupEvent()19        {20            this.Test(r =>21            {22                r.RegisterMonitor<SetupEventMonitor>();23                r.CreateActor(typeof(M1));24            });25        }26        {27            [OnEventDoAction(typeof(SetupEventMonitor.SetupEvent), nameof(HandleSetupEvent))]28            {29            }30            private void HandleSetupEvent(Event e)31            {32                SetupEventMonitor.SetupEvent se = e as SetupEventMonitor.SetupEvent;33                this.SendEvent(se.Machine, new E());34            }35        }36        {37            [OnEntry(nameof(InitOnEntry))]38            [OnEventGotoState(typeof(E), typeof(Next))]39            {40            }41            private void InitOnEntry()42            {43                this.Raise(new Halt());44            }45            [OnEntry(nameof(NextOnEntry))]46            {47            }48            private void NextOnEntry()49            {50                s_count++;51            }52        }53        {54            [OnEventGotoState(typeof(SetupEvent), typeof(Setup))]55            {56            }57            [OnEventDoAction(typeof(E), nameof(HandleEvent))]58            {59            }60            {61                public MachineId Machine;62                public SetupEvent(MachineId machine)SetupEvent
Using AI Code Generation
1using Microsoft.Coyote.Actors;2using Microsoft.Coyote.Actors.BugFinding.Tests;3using Microsoft.Coyote.TestingServices;4using Microsoft.Coyote.TestingServices.Coverage;5using Microsoft.Coyote.TestingServices.SchedulingStrategies;6using System;7using System.Collections.Generic;8using System.Linq;9using System.Threading.Tasks;10{11    static void Main(string[] args)12    {13        var config = Configuration.Create();14        config.SchedulingStrategy = SchedulingStrategy.DFS;15        config.SchedulingIterations = 1000;16        config.TestingIterations = 1000;17        config.MaxSchedulingSteps = 1000;18        config.EnableCycleDetection = true;19        config.EnableDataRaceDetection = true;20        config.EnableHotStateDetection = true;21        config.EnableBuggyStateExploration = true;22        config.EnableHotStateExploration = true;23        config.EnableDataRaceExploration = true;24        config.EnableCycleExploration = true;25        config.TestReporters.Add(new HtmlReporter());26        config.TestReporters.Add(new CoverageHtmlReporter());27        config.TestReporters.Add(new TextReporter());28        config.TestReporters.Add(new CoverageTextReporter());29        TestingEngine engine = TestingEngineFactory.CreateBugFindingEngine(config);30        engine.RunAsync(new EventHandlerTests()).Wait();31    }32}33using Microsoft.Coyote.Actors;34using Microsoft.Coyote.Actors.BugFinding.Tests;35using Microsoft.Coyote.TestingServices;36using Microsoft.Coyote.TestingServices.Coverage;37using Microsoft.Coyote.TestingServices.SchedulingStrategies;38using System;39using System.Collections.Generic;40using System.Linq;41using System.Threading.Tasks;42{43    static void Main(string[] args)44    {45        var config = Configuration.Create();46        config.SchedulingStrategy = SchedulingStrategy.DFS;47        config.SchedulingIterations = 1000;48        config.TestingIterations = 1000;49        config.MaxSchedulingSteps = 1000;50        config.EnableCycleDetection = true;51        config.EnableDataRaceDetection = true;52        config.EnableHotStateDetection = true;53        config.EnableBuggyStateExploration = true;54        config.EnableHotStateExploration = true;55        config.EnableDataRaceExploration = true;SetupEvent
Using AI Code Generation
1using Microsoft.Coyote.Actors.BugFinding.Tests;2EventHandlerTests.SetupEvent();3using Microsoft.Coyote.Actors.BugFinding.Tests;4EventHandlerTests.SetupEvent();5using Microsoft.Coyote.Actors.BugFinding.Tests;6EventHandlerTests.SetupEvent();7using Microsoft.Coyote.Actors.BugFinding.Tests;8EventHandlerTests.SetupEvent();9using Microsoft.Coyote.Actors.BugFinding.Tests;10EventHandlerTests.SetupEvent();11using Microsoft.Coyote.Actors.BugFinding.Tests;12EventHandlerTests.SetupEvent();13using Microsoft.Coyote.Actors.BugFinding.Tests;14EventHandlerTests.SetupEvent();15using Microsoft.Coyote.Actors.BugFinding.Tests;16EventHandlerTests.SetupEvent();17using Microsoft.Coyote.Actors.BugFinding.Tests;18EventHandlerTests.SetupEvent();19using Microsoft.Coyote.Actors.BugFinding.Tests;20EventHandlerTests.SetupEvent();21using Microsoft.Coyote.Actors.BugFinding.Tests;22EventHandlerTests.SetupEvent();SetupEvent
Using AI Code Generation
1using Microsoft.Coyote.Actors.BugFinding.Tests;2using Microsoft.Coyote.TestingServices.Runtime;3using System;4{5    {6        static void Main(string[] args)7        {8            var test = new EventHandlerTests();9            var runtime = new TestingEngine(test);10            runtime.SetupEvent(typeof(EventHandlerTests.SetupEvent));11            runtime.SetupEvent(typeof(EventHandlerTests.TestEvent));12            runtime.Run();13        }14    }15}16   at Microsoft.Coyote.TestingServices.Runtime.TestingEngine.SetupEvent(Type eventType) in C:\Users\paul\source\repos\coyote\Source\TestingServices\Runtime\TestingEngine.cs:line 28517   at CoyoteTests.Program.Main(String[] args) in C:\Users\paul\source\repos\coyote\Examples\BugFinding\BugFindingTests\3.cs:line 1418using Microsoft.Coyote.Actors.BugFinding.Tests;SetupEvent
Using AI Code Generation
1using Microsoft.Coyote.Actors.BugFinding.Tests;2using System;3using System.Threading.Tasks;4{5    {6        static async Task Main(string[] args)7        {8            await EventHandlerTests.SetupEvent();9        }10    }11}SetupEvent
Using AI Code Generation
1using Microsoft.Coyote.Actors.BugFinding.Tests;2using Microsoft.Coyote.Actors.BugFinding.Tests.Events;3using Microsoft.Coyote.Actors.BugFinding.Tests.Handlers;4using Microsoft.Coyote.Actors.BugFinding.Tests.Machines;5using Microsoft.Coyote.TestingServices;6using Microsoft.Coyote.TestingServices.Coverage;7using Microsoft.Coyote.TestingServices.SchedulingStrategies;8using Microsoft.Coyote.TestingServices.Tracing.Schedule;9using Microsoft.Coyote.TestingServices.Tracing.Schedule.Custom;10using Microsoft.Coyote.TestingServices.Tracing.Schedule.Custom.Coverage;11using System;12using System.Collections.Generic;13using System.Linq;14using System.Text;15using System.Threading.Tasks;16{17    {18        static void Main(string[] args)19        {20            var config = Configuration.Create();21            config.SchedulingStrategy = SchedulingStrategy.DFS;22            config.SchedulingIterations = 10000;23            config.SchedulingSeed = 1;24            config.TestingIterations = 1;25            config.TestReporters.Add(new TextCoverageReporter());26            config.TestReporters.Add(new TextScheduleReporter());27            config.TestReporters.Add(new TextTraceReporter());28            config.TestReporters.Add(new TextLogReporter());29            config.TestReporters.Add(new TextCoverageHtmlReporter());30            config.TestReporters.Add(new TextScheduleHtmlReporter());31            config.TestReporters.Add(new TextTraceHtmlReporter());32            config.TestReporters.Add(new TextLogHtmlReporter());33            config.TestReporters.Add(new TraceEventHtmlReporter());34            config.TestReporters.Add(new TraceEventReporter());35            config.TestReporters.Add(new TextTraceEventHtmlReporter());36            config.TestReporters.Add(new TextTraceEventReporter());37            config.TestReporters.Add(new TextCoverageEventHtmlReporter());38            config.TestReporters.Add(new TextCoverageEventReporter());39            config.TestReporters.Add(new TextScheduleEventHtmlReporter());40            config.TestReporters.Add(new TextScheduleEventReporter());41            config.TestReporters.Add(new TextLogEventHtmlReporter());42            config.TestReporters.Add(new TextLogEventReporter());43            config.TestReporters.Add(new TextHtmlReporter());44            config.TestReporters.Add(new TextReporter());45            config.TestReporters.Add(new TextCoverageEventHtmlReporter());46            config.TestReporters.Add(new TextCoverageEventReporterLearn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
