using System; using System.Collections.Generic; using System.Linq; using System.Text; using UnitTestSharp; using Azimuth.Polynomials; namespace Azimuth.UnitTests.Polynomials { public class QuadraticTests : TestFixture { public void Basic() { RootList actual = Quadratic.Solve(1, 18, 17); RootList expected = new Scalar?[] {-17, -1}; CheckEqual(expected, actual); } public void A0() { RootList actual = Quadratic.Solve(0, 9, 4.25); RootList expected = new Scalar?[] { -4.25 / 9.0 }; CheckEqual(expected, actual); } public void B0() { RootList actual = Quadratic.Solve(9, 0, -9); RootList expected = new Scalar?[] { -1, 1 }; CheckEqual(expected, actual); } public void C0() { RootList actual = Quadratic.Solve(9, 3, 0); RootList expected = new Scalar?[] { -1.0 / 3.0, 0 }; CheckEqual(expected, actual); } public void AB0() { RootList actual = Quadratic.Solve(0, 0, 17); RootList expected = new RootList(); CheckEqual(expected, actual); } public void AC0() { RootList actual = Quadratic.Solve(0, 10, 0); RootList expected = new Scalar?[] { 0 }; CheckEqual(expected, actual); } public void BC0() { RootList actual = Quadratic.Solve(10, 0, 0); RootList expected = new Scalar?[] { 0, 0 }; CheckEqual(expected, actual); } public void ABC0() { RootList actual = Quadratic.Solve(0, 0, 0); RootList expected = new Scalar?[] { Scalar.PositiveInfinity }; CheckEqual(expected, actual); } public void Discriminant0() { RootList actual = Quadratic.Solve(2, 4, 2); RootList expected = new Scalar?[] { -1, -1 }; CheckEqual(expected, actual); } public void Multiplicity_2() { RootList actual = Quadratic.Solve(1, -2, 1); RootList expected = new Scalar?[] { 1, 1 }; CheckEqual(expected, actual); } public void RootsOrderedProperly_Pos() { RootList actual = Quadratic.Solve(1, 0, -4); RootList expected = new Scalar?[] { -2, 2 }; CheckEqual(expected, actual); } public void RootsOrderedProperly_Neg() { RootList actual = Quadratic.Solve(-1, 0, 4); RootList expected = new Scalar?[] { -2, 2 }; CheckEqual(expected, actual); } public void QWouldBe0() { RootList actual = Quadratic.Solve(10, 5, 0); RootList expected = new Scalar?[] { -1.0 / 2.0, 0 }; CheckEqual(expected, actual); } } }