1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980open!Coreopen!ImportmoduleBonsai_lib=BonsaiopenProcmoduleChoice=structtypet=|Homepage|Loading|Search_results[@@derivingsexp,equal]endletapply_action~inject~schedule_event__new_page=(matchnew_pagewith|Choice.Homepage|Search_results->()|Loading->schedule_event(injectChoice.Search_results));new_page;;moduleResult=structtypet={view:string;incoming:Choice.t->unitUi_effect.t}[@@derivingfields]typeincoming=Choice.tendlet%expect_test_=letopenBonsai.Let_syntaxinletgraph=let%substate_machine=Bonsai.state_machine1[%here](moduleChoice)(moduleChoice)~default_model:Choice.Homepage~apply_action(Bonsai_lib.Value.return())inlet%subcurrent_page=Bonsai.read(let%mapcurrent_page,_=state_machineincurrent_page)inlet%subincoming=Bonsai.read(let%map_,incoming=state_machineinincoming)inletas_eithers=match%mapcurrent_pagewith|Loading->First(Second())|Homepage->First(Second())|Search_results->Second()in(* Before, this test was preventing a bug from popping up again. However,
this test depended on [match_either], which has now been deleted. Thus,
we can't know whether this test would catch any regressions of the bug,
so it's just an ordinary test now *)let%subbody=match%subas_eitherswith|First(First_)->Bonsai.const"1"|First(Second_)->Bonsai.const"2"|Second_->Bonsai.const"3"inBonsai.read(let%mapview=bodyandincoming=incomingin{Result.view;incoming})inlethandle=Handle.create(moduleResult)graphinHandle.showhandle;[%expect{| 2 |}];Handle.do_actionshandle[Search_results];Handle.showhandle;[%expect{| 3 |}];;