public void SMG_04_03_CodeLabels() { GateCache.Instance.Purge(); var cc = new StateMachineCompiler(); var sm = cc.CompileString( "SMG test " + "DECLARE State (a, b, c) s, t " + "TRIGGER e WHEN s(a => b) AND t(b) " + "GUARD WHEN s(* => b) AND t(b) CALL m1 " + "" ); sm.Calculate(); PrintEventEffectConditions(sm); var ev = sm.Events.Where(e => e.Name == "e").First(); using (var gc = new GateConverter()) { ev.EffectsAfter.Schedule(gc); var cle = new SimpleCodeLabelEvaluator(); // Trace("gc: \n{0}", gc.ToDebugString()); gc.Emit(cle, 0); } var eclist = ev.EffectsAfter.GetEffectConditions(); var ec = eclist.Where(a => a.Effect.UniqueID == "CALL m1").First(); Assert.AreEqual("<_c0><_c1>", ec.ConditionLabel.ToString()); /*var sb = new StringBuilder(); * using (var w = new StringWriter(sb)) * { * w.Write(sm.GenerateCode()); * } * * Trace("code:\n{0}", sb);*/ }
public void SMG_04_03_CodeLabels() { GateCache.Instance.Purge(); var cc = new StateMachineCompiler(); var sm = cc.CompileString( "SMG test " + "DECLARE State (a, b, c) s, t " + "TRIGGER e WHEN s(a => b) AND t(b) " + "GUARD WHEN s(* => b) AND t(b) CALL m1 " + "" ); sm.Calculate(); PrintEventEffectConditions(sm); var ev = sm.Events.Where(e => e.Name == "e").First(); using (var gc = new GateConverter()) { ev.EffectsAfter.Schedule(gc); var cle = new SimpleCodeLabelEvaluator(); // Trace("gc: \n{0}", gc.ToDebugString()); gc.Emit(cle, 0); } var eclist = ev.EffectsAfter.GetEffectConditions(); var ec = eclist.Where(a => a.Effect.UniqueID == "CALL m1").First(); Assert.AreEqual("<_c0><_c1>", ec.ConditionLabel.ToString()); /*var sb = new StringBuilder(); using (var w = new StringWriter(sb)) { w.Write(sm.GenerateCode()); } Trace("code:\n{0}", sb);*/ }