public void DoesNotThrowWhenThereAreNoCycles()
        {
            var mockContainer = new Mock <IContainer>();

            mockContainer.Setup(x => x.GetDependencies(typeof(A)))
            .Returns(new[] { typeof(B) });

            mockContainer.Setup(x => x.GetDependencies(typeof(B)))
            .Returns(new[] { typeof(C) });

            CycleDetector.CheckForCycles(typeof(A), mockContainer.Object);
        }
        public void ThrowsExceptionWhenCycleExists()
        {
            var mockContainer = new Mock <IContainer>();

            mockContainer.Setup(x => x.GetDependencies(typeof(A)))
            .Returns(new[] { typeof(B) });

            mockContainer.Setup(x => x.GetDependencies(typeof(B)))
            .Returns(new[] { typeof(C) });

            mockContainer.Setup(x => x.GetDependencies(typeof(C)))
            .Returns(new[] { typeof(A) });

            CycleDetector.CheckForCycles(typeof(A), mockContainer.Object);
        }