Example #1
0
        public void DeclareMachine(PrtImplMachine machine)
        {
            var machineName = machine.GetType().Name;

            if (CoverageInfo.MachinesToStates.ContainsKey(machineName))
            {
                return;
            }

            // enumerate states
            var type   = machine.GetType();
            var fields = type.GetFields(BindingFlags.Public | BindingFlags.Static);

            foreach (var field in fields)
            {
                if (!field.FieldType.IsSubclassOf(typeof(PrtState)))
                {
                    continue;
                }
                var state = field.GetValue(machine) as PrtState;

                CoverageInfo.DeclareMachineState(machineName, state.name);

                foreach (var tup in state.transitions)
                {
                    var evt = tup.Key as PrtEventValue;
                    if (evt == null)
                    {
                        continue;
                    }
                    var evtName = evt.evt.name;

                    CoverageInfo.DeclareStateEvent(machineName, state.name, evtName);
                }
            }
        }
Example #2
0
 public void ReportStateTransition(PrtImplMachine machine, PrtState from, PrtState to, string reason)
 {
     CoverageInfo.AddTransition(machine.Name, from.name, reason, machine.Name, to.name);
 }
Example #3
0
 public void ReportDequeue(PrtImplMachine machine, string evName, string senderMachineName, string senderMachineStateName)
 {
     CoverageInfo.AddTransition(senderMachineName, senderMachineStateName, evName, machine.Name, machine.CurrentState.name);
 }