@@ -222,6 +222,81 @@ public void FivePoints_ValidTopology()
222222 Assert . True ( TopologyVerifier . VerifyTopology ( cdt ) ) ;
223223 Assert . Equal ( 5 , cdt . Vertices . Length ) ;
224224 }
225+
226+ // -------------------------------------------------------------------------
227+ // IsFinalized guard checks
228+ // -------------------------------------------------------------------------
229+
230+ [ Fact ]
231+ public void InsertVertices_AfterFinalized_ThrowsTriangulationFinalizedException ( )
232+ {
233+ var cdt = CreateCdt ( ) ;
234+ cdt . InsertVertices ( [ Pt ( 0 , 0 ) , Pt ( 1 , 0 ) , Pt ( 0.5 , 1 ) ] ) ;
235+ cdt . EraseSuperTriangle ( ) ;
236+
237+ Assert . True ( cdt . IsFinalized ) ;
238+ Assert . Throws < TriangulationFinalizedException > ( ( ) =>
239+ cdt . InsertVertices ( [ Pt ( 2 , 0 ) ] ) ) ;
240+ }
241+
242+ [ Fact ]
243+ public void InsertEdges_AfterFinalized_ThrowsTriangulationFinalizedException ( )
244+ {
245+ var cdt = CreateCdt ( ) ;
246+ cdt . InsertVertices ( [ Pt ( 0 , 0 ) , Pt ( 1 , 0 ) , Pt ( 1 , 1 ) , Pt ( 0 , 1 ) ] ) ;
247+ cdt . EraseSuperTriangle ( ) ;
248+
249+ Assert . True ( cdt . IsFinalized ) ;
250+ Assert . Throws < TriangulationFinalizedException > ( ( ) =>
251+ cdt . InsertEdges ( [ new Edge ( 0 , 2 ) ] ) ) ;
252+ }
253+
254+ [ Fact ]
255+ public void ConformToEdges_AfterFinalized_ThrowsTriangulationFinalizedException ( )
256+ {
257+ var cdt = CreateCdt ( ) ;
258+ cdt . InsertVertices ( [ Pt ( 0 , 0 ) , Pt ( 1 , 0 ) , Pt ( 1 , 1 ) , Pt ( 0 , 1 ) ] ) ;
259+ cdt . EraseSuperTriangle ( ) ;
260+
261+ Assert . True ( cdt . IsFinalized ) ;
262+ Assert . Throws < TriangulationFinalizedException > ( ( ) =>
263+ cdt . ConformToEdges ( [ new Edge ( 0 , 2 ) ] ) ) ;
264+ }
265+
266+ [ Fact ]
267+ public void EraseSuperTriangle_AfterFinalized_ThrowsTriangulationFinalizedException ( )
268+ {
269+ var cdt = CreateCdt ( ) ;
270+ cdt . InsertVertices ( [ Pt ( 0 , 0 ) , Pt ( 1 , 0 ) , Pt ( 0.5 , 1 ) ] ) ;
271+ cdt . EraseSuperTriangle ( ) ;
272+
273+ Assert . True ( cdt . IsFinalized ) ;
274+ Assert . Throws < TriangulationFinalizedException > ( ( ) => cdt . EraseSuperTriangle ( ) ) ;
275+ }
276+
277+ [ Fact ]
278+ public void EraseOuterTriangles_AfterFinalized_ThrowsTriangulationFinalizedException ( )
279+ {
280+ var cdt = CreateCdt ( ) ;
281+ cdt . InsertVertices ( [ Pt ( 0 , 0 ) , Pt ( 1 , 0 ) , Pt ( 1 , 1 ) , Pt ( 0 , 1 ) ] ) ;
282+ cdt . InsertEdges ( [ new Edge ( 0 , 1 ) , new Edge ( 1 , 2 ) , new Edge ( 2 , 3 ) , new Edge ( 3 , 0 ) ] ) ;
283+ cdt . EraseOuterTriangles ( ) ;
284+
285+ Assert . True ( cdt . IsFinalized ) ;
286+ Assert . Throws < TriangulationFinalizedException > ( ( ) => cdt . EraseOuterTriangles ( ) ) ;
287+ }
288+
289+ [ Fact ]
290+ public void EraseOuterTrianglesAndHoles_AfterFinalized_ThrowsTriangulationFinalizedException ( )
291+ {
292+ var cdt = CreateCdt ( ) ;
293+ cdt . InsertVertices ( [ Pt ( 0 , 0 ) , Pt ( 1 , 0 ) , Pt ( 1 , 1 ) , Pt ( 0 , 1 ) ] ) ;
294+ cdt . InsertEdges ( [ new Edge ( 0 , 1 ) , new Edge ( 1 , 2 ) , new Edge ( 2 , 3 ) , new Edge ( 3 , 0 ) ] ) ;
295+ cdt . EraseOuterTrianglesAndHoles ( ) ;
296+
297+ Assert . True ( cdt . IsFinalized ) ;
298+ Assert . Throws < TriangulationFinalizedException > ( ( ) => cdt . EraseOuterTrianglesAndHoles ( ) ) ;
299+ }
225300}
226301
227302/// <summary>Triangulation tests for <see cref="double"/>.</summary>
0 commit comments