From: Matthew Moss Date: 2008-04-20T07:49:49+09:00 Subject: Re: Triangle Area (#160) Some unit testing for y'all: require "test/unit" TOL = 0.0001 class Triangle def Triangle.[](*args) Triangle.new(*args) end end class TestTriArea < Test::Unit::TestCase def test_3pt_degen a = RANDOM_PT.call t = Triangle[a, a, a] assert_equal(0, t.area) end def test_2pt_degen a, b = RANDOM_PT.call, RANDOM_PT.call t = Triangle[a, b, b] assert_equal(0, t.area) end def test_easy t = Triangle[Vector[0, 0], Vector[3, 0], Vector[0, 1]] assert_in_delta(1.5, t.area, TOL) end def test_mostly_easy t = Triangle[Vector[-11, 0], Vector[5, 0], Vector[0, 3]] assert_in_delta(24, t.area, TOL) end SAMPLES = { Triangle[Vector[-42, 4], Vector[-26, -34], Vector[ 2, 8]] => 868.0, Triangle[Vector[ 45, -44], Vector[ 1, 43], Vector[ 42, 48]] => 1893.5, Triangle[Vector[-24, 29], Vector[ 42, -1], Vector[ 10, 43]] => 972.0, Triangle[Vector[ 48, -19], Vector[-19, 37], Vector[-15, 36]] => 78.5, Triangle[Vector[-10, -40], Vector[-35, -19], Vector[ 1, 33]] => 1028.0, Triangle[Vector[ 28, 23], Vector[-46, 31], Vector[-39, 5]] => 934.0, Triangle[Vector[-32, 17], Vector[-50, -8], Vector[-39, 27]] => 177.5, Triangle[Vector[ 40, -19], Vector[ 39, -34], Vector[-37, -15]] => 579.5, Triangle[Vector[ 47, -34], Vector[ 26, -37], Vector[ 50, -7]] => 279.0, Triangle[Vector[-49, 46], Vector[ 29, 46], Vector[ 5, -34]] => 3120.0 } def test_samples SAMPLES.each do |t, a| assert_in_delta(a, t.area, TOL) end end end