test/polynomial_test.rb in polynomials-0.1.7 vs test/polynomial_test.rb in polynomials-0.2.0

- old
+ new

@@ -1,11 +1,16 @@ require_relative 'test_helper' +Infinity = 1.0/0 class TestPolynomial < MiniTest::Unit::TestCase def test_to_s polynomial = Polynomial.parse('5x + 2x^2 + 20') - assert_equal '+ 2.0 x^2 + 5.0 x + 20.0', polynomial.to_s + assert_equal '2x^2 + 5x + 20', polynomial.to_s + polynomial = Polynomial.parse('6.5435x^234 + 5.0 + 20x') + assert_equal '6.5435x^234 + 20x + 5', polynomial.to_s + polynomial = Polynomial.parse('0x^0') + assert_equal "0", polynomial.to_s end def test_derivative_of_linear_functions polynomial = Polynomial.parse('5x + 2') assert_equal Polynomial.parse('5') ,polynomial.derivative @@ -56,33 +61,64 @@ assert_equal({max: Set[ -1.0/0, 1.0/0 ]}, polynomial.extrema) end def test_no_inflection_points polynomial = Polynomial.parse('1 x^4') - assert_equal({ left: Set[-1.0/0..+1.0/0] }, polynomial.curvature_behaviour) + assert_equal({ left: [-1.0/0..+1.0/0] }, polynomial.curvature_behaviour) polynomial = Polynomial.parse('-1 x^4') - assert_equal({ right: Set[-1.0/0..+1.0/0] }, polynomial.curvature_behaviour) + assert_equal({ right: [-1.0/0..+1.0/0] }, polynomial.curvature_behaviour) polynomial = Polynomial.parse('5x^2') - assert_equal({ left: Set[-1.0/0..+1.0/0] }, polynomial.curvature_behaviour) + assert_equal({ left: [-1.0/0..+1.0/0] }, polynomial.curvature_behaviour) end def test_no_extremums polynomial = Polynomial.parse('5') assert_equal({}, polynomial.extrema) end - def test_no_curve_and_no_inflection_points + def test_no_curvature polynomials = [] polynomials << Polynomial.parse('5 x + 4') polynomials << Polynomial.parse('4') polynomials.each do |polynomial| assert_equal({}, polynomial.curvature_behaviour) end end + def test_local_extrema_of_derivative_leads_to_no_curvature + polynomial = Polynomial.parse('50x^10 - 20x^2') + assert_equal({}, polynomial.curvature_behaviour) + end + def test_two_inflection_points polynomial = Polynomial.parse('+ 1.0 x^4 + 5.0 x^3 - 1.0 x^2 + 3.0 x + 5.0') - assert_equal({left:Set[-1.0/0..-2.5649778198, 0.0649778198..1.0/0], right: Set[-2.5649778198..0.0649778198] } , polynomial.curvature_behaviour) + assert_equal({left:[-1.0/0..-2.5649778198, 0.0649778198..1.0/0], right: [-2.5649778198..0.0649778198] } , polynomial.curvature_behaviour) + end + + def test_three_inflection_points + polynomial = Polynomial.new(20,4,0,-1,-200) + assert_equal( {:right=>[(-1/10)..0.0], :left=>[-Infinity..(-1/10), 0.0..Infinity]}, polynomial.curvature_behaviour) + end + + + def test_efficient_roots_calculation + polynomial = Polynomial.parse('200x^2342435 + 6x^20') + assert_equal(Set[0.0], polynomial.roots) + end + + def test_lt + polynomial = Polynomial.parse('1x^2342435 + 5x') + assert_euqal Term.new(5,1), polynomial.lt + end + + def test_lt + polynomial = Polynomial.parse('1x^2342435 + 5x') + assert_equal Term.new(2342435,1), polynomial.gt + end + + def test_initalizer + polynomial = Polynomial.new(5,0,2,-1) + assert_equal '5x^3 + 2x - 1', polynomial.to_s end end