public void Clear() { int edgesRemoved = 0; var graph = new EdgeListGraph <int, Edge <int> >(); // ReSharper disable once ParameterOnlyUsedForPreconditionCheck.Local graph.EdgeRemoved += e => { Assert.IsNotNull(e); // ReSharper disable once AccessToModifiedClosure ++edgesRemoved; }; AssertEmptyGraph(graph); graph.Clear(); AssertEmptyGraph(graph); CheckCounter(0); graph.AddVerticesAndEdge(new Edge <int>(1, 2)); graph.AddVerticesAndEdge(new Edge <int>(2, 3)); graph.AddVerticesAndEdge(new Edge <int>(3, 1)); graph.Clear(); AssertEmptyGraph(graph); CheckCounter(3); #region Local function void CheckCounter(int expectedEdgesRemoved) { Assert.AreEqual(expectedEdgesRemoved, edgesRemoved); edgesRemoved = 0; } #endregion }