@@ -55,31 +55,12 @@ class TestCFGReadWriteTXT {
5555 fun `'g1' cfg` () {
5656 val nonterminalS = Nonterminal (" S" )
5757 nonterminalS.addAlternative(
58- Alternative (
59- listOf (
60- Terminal (" subClassOf_r" ),
61- nonterminalS,
62- Terminal (" subClassOf" ),
63- )))
58+ Alternative (listOf (Terminal (" subClassOf_r" ), nonterminalS, Terminal (" subClassOf" ))))
6459 nonterminalS.addAlternative(
65- Alternative (
66- listOf (
67- Terminal (" subClassOf_r" ),
68- Terminal (" subClassOf" ),
69- )))
70- nonterminalS.addAlternative(
71- Alternative (
72- listOf (
73- Terminal (" type_r" ),
74- nonterminalS,
75- Terminal (" type" ),
76- )))
60+ Alternative (listOf (Terminal (" subClassOf_r" ), Terminal (" subClassOf" ))))
7761 nonterminalS.addAlternative(
78- Alternative (
79- listOf (
80- Terminal (" type_r" ),
81- Terminal (" type" ),
82- )))
62+ Alternative (listOf (Terminal (" type_r" ), nonterminalS, Terminal (" type" ))))
63+ nonterminalS.addAlternative(Alternative (listOf (Terminal (" type_r" ), Terminal (" type" ))))
8364
8465 val pathToTXT = " src/test/resources/cli/TestCFGReadWriteTXT/g1.txt"
8566 writeCFGToTXT(nonterminalS, pathToTXT)
@@ -93,17 +74,8 @@ class TestCFGReadWriteTXT {
9374 fun `'g2' cfg` () {
9475 val nonterminalS = Nonterminal (" S" )
9576 nonterminalS.addAlternative(
96- Alternative (
97- listOf (
98- Terminal (" subClassOf_r" ),
99- nonterminalS,
100- Terminal (" subClassOf" ),
101- )))
102- nonterminalS.addAlternative(
103- Alternative (
104- listOf (
105- Terminal (" subClassOf" ),
106- )))
77+ Alternative (listOf (Terminal (" subClassOf_r" ), nonterminalS, Terminal (" subClassOf" ))))
78+ nonterminalS.addAlternative(Alternative (listOf (Terminal (" subClassOf" ))))
10779
10880 val pathToTXT = " src/test/resources/cli/TestCFGReadWriteTXT/g2.txt"
10981 writeCFGToTXT(nonterminalS, pathToTXT)
@@ -137,4 +109,118 @@ class TestCFGReadWriteTXT {
137109 assertEquals(expected = nonterminalS, actual = actualNonterminal)
138110 assertEquals(expected = nonterminalS.alternatives, actual = actualNonterminal.alternatives)
139111 }
112+
113+ @Test
114+ fun `'c_analysis' rsm` () {
115+ val nonterminalS = Nonterminal (" S" )
116+ val nonterminalV = Nonterminal (" V" )
117+ val nonterminalV1 = Nonterminal (" V1" )
118+ val nonterminalV2 = Nonterminal (" V2" )
119+ val nonterminalV3 = Nonterminal (" V3" )
120+
121+ nonterminalS.addAlternative(Alternative (listOf (Terminal (" d_r" ), nonterminalV, Terminal (" d" ))))
122+ nonterminalV.addAlternative(Alternative (listOf (nonterminalV1, nonterminalV2, nonterminalV3)))
123+ nonterminalV1.addAlternative(Alternative (listOf ()))
124+ nonterminalV1.addAlternative(Alternative (listOf (nonterminalV2, Terminal (" a_r" ), nonterminalV1)))
125+ nonterminalV2.addAlternative(Alternative (listOf ()))
126+ nonterminalV2.addAlternative(Alternative (listOf (nonterminalS)))
127+ nonterminalV3.addAlternative(Alternative (listOf ()))
128+ nonterminalV3.addAlternative(Alternative (listOf (Terminal (" a" ), nonterminalV2, nonterminalV3)))
129+
130+ val pathToTXT = " src/test/resources/cli/TestCFGReadWriteTXT/c_analysis.txt"
131+ writeCFGToTXT(nonterminalS, pathToTXT)
132+ val actualNonterminal = readCFGFromTXT(pathToTXT)
133+
134+ assertEquals(expected = nonterminalS, actual = actualNonterminal)
135+ assertEquals(expected = nonterminalS.alternatives, actual = actualNonterminal.alternatives)
136+ }
137+
138+ @Test
139+ fun `'reg1' cfg` () {
140+ val nonterminalS = Nonterminal (" S" )
141+
142+ nonterminalS.addAlternative(Alternative (listOf ()))
143+ nonterminalS.addAlternative(Alternative (listOf (Terminal (" type" ))))
144+ nonterminalS.addAlternative(Alternative (listOf (Terminal (" subClassOf" ))))
145+ nonterminalS.addAlternative(Alternative (listOf (nonterminalS, nonterminalS)))
146+
147+ val pathToTXT = " src/test/resources/cli/TestCFGReadWriteTXT/reg1.txt"
148+ writeCFGToTXT(nonterminalS, pathToTXT)
149+ val actualNonterminal = readCFGFromTXT(pathToTXT)
150+
151+ assertEquals(expected = nonterminalS, actual = actualNonterminal)
152+ assertEquals(expected = nonterminalS.alternatives, actual = actualNonterminal.alternatives)
153+ }
154+
155+ @Test
156+ fun `'reg2' cfg` () {
157+ val nonterminalS = Nonterminal (" S" )
158+
159+ nonterminalS.addAlternative(Alternative (listOf ()))
160+ nonterminalS.addAlternative(Alternative (listOf (Terminal (" type" ))))
161+ nonterminalS.addAlternative(Alternative (listOf (Terminal (" type_r" ))))
162+ nonterminalS.addAlternative(Alternative (listOf (Terminal (" subClassOf" ))))
163+ nonterminalS.addAlternative(Alternative (listOf (Terminal (" subClassOf_r" ))))
164+ nonterminalS.addAlternative(Alternative (listOf (nonterminalS, nonterminalS)))
165+
166+ val pathToTXT = " src/test/resources/cli/TestCFGReadWriteTXT/reg2.txt"
167+ writeCFGToTXT(nonterminalS, pathToTXT)
168+ val actualNonterminal = readCFGFromTXT(pathToTXT)
169+
170+ assertEquals(expected = nonterminalS, actual = actualNonterminal)
171+ assertEquals(expected = nonterminalS.alternatives, actual = actualNonterminal.alternatives)
172+ }
173+
174+ @Test
175+ fun `'reg3' cfg` () {
176+ val nonterminalS = Nonterminal (" S" )
177+ val nonterminalA = Nonterminal (" A" )
178+ val nonterminalB = Nonterminal (" B" )
179+
180+ nonterminalS.addAlternative(Alternative (listOf (nonterminalA, nonterminalB)))
181+
182+ nonterminalA.addAlternative(Alternative (listOf ()))
183+ nonterminalA.addAlternative(Alternative (listOf (Terminal (" type" ), nonterminalA)))
184+
185+ nonterminalB.addAlternative(Alternative (listOf ()))
186+ nonterminalB.addAlternative(Alternative (listOf (Terminal (" subClassOf" ), nonterminalB)))
187+
188+ val pathToTXT = " src/test/resources/cli/TestCFGReadWriteTXT/reg3.txt"
189+ writeCFGToTXT(nonterminalS, pathToTXT)
190+ val actualNonterminal = readCFGFromTXT(pathToTXT)
191+
192+ assertEquals(expected = nonterminalS, actual = actualNonterminal)
193+ assertEquals(expected = nonterminalS.alternatives, actual = actualNonterminal.alternatives)
194+ }
195+
196+ @Test
197+ fun `'reg5' cfg` () {
198+ val nonterminalS = Nonterminal (" S" )
199+ val nonterminalA = Nonterminal (" A" )
200+ val nonterminalB = Nonterminal (" B" )
201+ val nonterminalC = Nonterminal (" C" )
202+ val nonterminalD = Nonterminal (" D" )
203+
204+ nonterminalS.addAlternative(
205+ Alternative (listOf (nonterminalA, nonterminalB, nonterminalC, nonterminalD)))
206+
207+ nonterminalA.addAlternative(Alternative (listOf ()))
208+ nonterminalA.addAlternative(Alternative (listOf (Terminal (" type" ), nonterminalA)))
209+
210+ nonterminalB.addAlternative(Alternative (listOf ()))
211+ nonterminalB.addAlternative(Alternative (listOf (Terminal (" subClassOf" ), nonterminalB)))
212+
213+ nonterminalC.addAlternative(Alternative (listOf ()))
214+ nonterminalC.addAlternative(Alternative (listOf (Terminal (" subClassOf_r" ), nonterminalC)))
215+
216+ nonterminalD.addAlternative(Alternative (listOf ()))
217+ nonterminalD.addAlternative(Alternative (listOf (Terminal (" type_r" ), nonterminalD)))
218+
219+ val pathToTXT = " src/test/resources/cli/TestCFGReadWriteTXT/reg4.txt"
220+ writeCFGToTXT(nonterminalS, pathToTXT)
221+ val actualNonterminal = readCFGFromTXT(pathToTXT)
222+
223+ assertEquals(expected = nonterminalS, actual = actualNonterminal)
224+ assertEquals(expected = nonterminalS.alternatives, actual = actualNonterminal.alternatives)
225+ }
140226}
0 commit comments