protected static void TryGetDistance_Throws_Test <TVertex, TEdge>(
            [NotNull] UndirectedShortestPathAlgorithmBase <TVertex, TEdge> algorithm)
            where TVertex : class, new()
            where TEdge : IEdge <TVertex>
        {
            // ReSharper disable once AssignNullToNotNullAttribute
            Assert.Throws <ArgumentNullException>(() => algorithm.TryGetDistance(null, out _));

            var vertex = new TVertex();

            Assert.Throws <InvalidOperationException>(() => algorithm.TryGetDistance(vertex, out _));
        }
        protected static void TryGetDistance_Test <TEdge>(
            [NotNull] UndirectedShortestPathAlgorithmBase <int, TEdge> algorithm)
            where TEdge : IEdge <int>
        {
            const int vertex1 = 1;

            algorithm.Compute(vertex1);
            Assert.IsTrue(algorithm.TryGetDistance(vertex1, out double distance));
            Assert.AreEqual(algorithm.Distances[vertex1], distance);

            const int vertex2 = 2;

            Assert.IsFalse(algorithm.TryGetDistance(vertex2, out _));
        }