@@ -121,26 +121,48 @@ def test_fire_success(self):
121121 result = compute_fire_transition (
122122 FireTransitionRequest (net = net , marking = marking , transition = 0 )
123123 )
124- assert result .fired is True
125- assert result .new_marking == (1 , 0 )
124+ assert result .status == "FIRED"
125+ assert result .new_marking == Marking (tokens = (1 , 0 ))
126+ assert result .envelope_escape is None
126127
127128 def test_fire_disabled (self ):
128129 net = _simple_net ()
129130 marking = Marking (tokens = (0 , 0 ))
130131 result = compute_fire_transition (
131132 FireTransitionRequest (net = net , marking = marking , transition = 0 )
132133 )
133- assert result .fired is False
134- assert result .new_marking == (0 , 0 )
134+ assert result .status == "NOT_ENABLED"
135+ assert result .new_marking == Marking (tokens = (0 , 0 ))
136+ assert result .envelope_escape is None
135137
136138 def test_fire_cyclic (self ):
137139 net = _token_passing_net ()
138140 marking = Marking (tokens = (1 , 0 ))
139141 result = compute_fire_transition (
140142 FireTransitionRequest (net = net , marking = marking , transition = 0 )
141143 )
142- assert result .fired is True
143- assert result .new_marking == (0 , 1 )
144+ assert result .status == "FIRED"
145+ assert result .new_marking == Marking (tokens = (0 , 1 ))
146+ assert result .envelope_escape is None
147+
148+ def test_fire_reports_successor_outside_marking_envelope (self ):
149+ net = PetriNet (
150+ place_count = 1 ,
151+ transition_count = 1 ,
152+ pre = ((0 ,),),
153+ post = ((MAX_PETRI_ARC_WEIGHT ,),),
154+ )
155+ result = compute_fire_transition (
156+ FireTransitionRequest (
157+ net = net ,
158+ marking = Marking (tokens = (MAX_PETRI_MARKING ,)),
159+ transition = 0 ,
160+ )
161+ )
162+
163+ assert result .status == "ESCAPES_DECLARED_ENVELOPE"
164+ assert result .new_marking is None
165+ assert result .envelope_escape == (2 * MAX_PETRI_MARKING ,)
144166
145167
146168# ---------------------------------------------------------------------------
0 commit comments