Skip to content

Commit 52d55f6

Browse files
committed
[#336] [stbx-protocol] add first successful firing tests
1 parent 17ddf04 commit 52d55f6

File tree

1 file changed

+43
-1
lines changed
  • stbx-protocol/test/Statebox/Protocol

1 file changed

+43
-1
lines changed

stbx-protocol/test/Statebox/Protocol/Fire.purs

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,19 @@ import Prelude
44
import Data.Either (Either(..))
55
import Data.Maybe (Maybe(..))
66
import Data.NonEmpty (NonEmpty(..))
7+
import Data.Tuple.Nested ((/\))
78
import Test.Spec (Spec, describe, it)
89
import Test.Spec.Assertions (shouldEqual)
910

11+
import Data.Petrinet.Representation.Marking (fromFoldable)
1012
import Data.Petrinet.Representation.NLL (ErrNetEncoding(..))
1113
import Statebox.Core.Wiring (NetsAndDiagramsIndex(..))
1214
import Statebox.Core.WiringTree (LinearizationError(..))
1315
import Statebox.Protocol.Fire (FiringError(..), fire)
1416

1517
suite :: Spec Unit
1618
suite = do
17-
describe "Firing a firing" do
19+
describe "Firing" do
1820
it "fails if the wiring is not valid" do
1921
-- the only relevant thing here is that the wiring is not valid
2022
let wiring = { diagrams: [{ name: "diagram"
@@ -91,3 +93,43 @@ suite = do
9193
}
9294
marking = mempty
9395
fire wiring firing marking `shouldEqual` Left FireTransitionNotEnabled
96+
it "suceeds for an initial transition" do
97+
let wiring = { diagrams: [{ name: "diagram"
98+
, names: []
99+
, pixels: [1]
100+
, width: 1
101+
}]
102+
, nets: [{ name: "net"
103+
, names: ["a"]
104+
-- _ -> 1
105+
, partition: [0, 1, 0]
106+
, placeNames: Nothing
107+
}]
108+
, labels: [NetsAndDiagramsIndex 0]
109+
}
110+
firing = { execution: Nothing
111+
, message: Nothing
112+
, path: NonEmpty 0 []
113+
}
114+
marking = mempty
115+
fire wiring firing marking `shouldEqual` Right (fromFoldable [1 /\ 1])
116+
it "suceeds for a normal transition" do
117+
let wiring = { diagrams: [{ name: "diagram"
118+
, names: []
119+
, pixels: [1]
120+
, width: 1
121+
}]
122+
, nets: [{ name: "net"
123+
, names: ["a"]
124+
-- 1 -> 2
125+
, partition: [1, 0, 2, 0]
126+
, placeNames: Nothing
127+
}]
128+
, labels: [NetsAndDiagramsIndex 0]
129+
}
130+
firing = { execution: Nothing
131+
, message: Nothing
132+
, path: NonEmpty 0 []
133+
}
134+
marking = fromFoldable [1 /\ 1]
135+
fire wiring firing marking `shouldEqual` Right (fromFoldable [2 /\ 1])

0 commit comments

Comments
 (0)