public void FindRoots_RealRootsAllIdentical_ReturnsCorrectAnswer()
        {
            double a = 1;
            double b = -3;
            double c = 3;
            double d = -1;

            List <Complex> roots = CubicSolver.FindRoots(a, b, c, d);

            Complex root = new Complex(1, 0);

            Assert.AreEqual(3, roots.Count);
            Assert.AreEqual(3, roots.Count(x => x == root));
        }
        public void FindRoots_RealRootsTwoIdentical_ReturnsCorrectAnswer()
        {
            double a = 1;
            double b = -5;
            double c = 8;
            double d = -4;

            List <Complex> roots = CubicSolver.FindRoots(a, b, c, d);

            Complex root1 = new Complex(1, 0);
            Complex root2 = new Complex(2, 0);

            Assert.AreEqual(3, roots.Count);
            Assert.IsTrue(roots.Exists(x => x == root1));
            Assert.AreEqual(2, roots.Count(x => x == root2));
        }
        public void FindRoots_QuadraticEquation_ReturnsCorrectAnswer()
        {
            double a = 0;
            double b = 1;
            double c = -4;
            double d = 4;

            List <Complex> roots = CubicSolver.FindRoots(a, b, c, d);

            Complex root1 = new Complex(2, 0);
            Complex root2 = new Complex(2, 0);

            Assert.AreEqual(2, roots.Count);
            Assert.IsTrue(roots.Exists(x => x == root1));
            Assert.IsTrue(roots.Exists(x => x == root2));
        }
        public void FindRoots_TwoComplexRoots_ReturnsCorrectAnswer()
        {
            double a = 1;
            double b = 3;
            double c = 1;
            double d = 3;

            List <Complex> roots = CubicSolver.FindRoots(a, b, c, d);

            Complex root1 = new Complex(-3, 0);
            Complex root2 = new Complex(0, 1);
            Complex root3 = new Complex(0, -1);

            Assert.AreEqual(3, roots.Count);
            Assert.IsTrue(roots.Exists(x => x == root1));
            Assert.IsTrue(roots.Exists(x => x == root2));
            Assert.IsTrue(roots.Exists(x => x == root3));
        }
        public void FindRoots_ThreeDistinctRealRoots_ReturnsCorrectAnswer()
        {
            double a = 1;
            double b = -6;
            double c = 11;
            double d = -6;

            List <Complex> roots = CubicSolver.FindRoots(a, b, c, d);

            Complex root1 = new Complex(1, 0);
            Complex root2 = new Complex(2, 0);
            Complex root3 = new Complex(3, 0);

            Assert.AreEqual(3, roots.Count);
            Assert.IsTrue(roots.Exists(x => x == root1));
            Assert.IsTrue(roots.Exists(x => x == root2));
            Assert.IsTrue(roots.Exists(x => x == root3));
        }