z_mirror/flib
git clone https://git.raiguard.me/z_mirror/flib
bd469be
trunk
1local Test =require ( "tests.factorio_luaunit" ) 2local math =require ( "__flib__.math" ) 3-- FIXME: Use Factorio testing framework 4--- @diagnostic disable-next-line 5math . randomseed ( os . clock ()) 6 7--- @diagnostic disable: undefined-field 8 9function Test_radians () 10for i =1 , 90 do 11Test . assertAlmostEquals ( i * math . deg_to_rad , math . rad ( i ), 0.1 ) 12end 13end 14 15function Test_degrees () 16for i =1 , 90 do 17Test . assertAlmostEquals ( i * math . rad_to_deg , math . deg ( i ), 0.1 ) 18end 19end 20 21function Test_round () 22Test . assertEquals ( math . round ( 3.51 ), 4 ) 23Test . assertEquals ( math . round ( 3.51 , 0.1 ), 3.5 ) 24end 25 26function Test_ceiled () 27Test . assertEquals ( math . ceiled ( 3.7 ), 4 ) 28Test . assertEquals ( math . ceiled ( 3.7 ), math . ceil ( 3.7 )) 29Test . assertEquals ( math . ceiled ( - 3.7 ), - 3 ) 30Test . assertEquals ( math . ceiled ( - 3.7 ), math . ceil ( - 3.7 )) 31Test . assertAlmostEquals ( math . ceiled ( - 3.75 , 0.1 ), - 3.8 , 0.1 ) 32end 33 34function Test_floored () 35Test . assertEquals ( math . floored ( 3.7 ), 3 ) 36Test . assertEquals ( math . floored ( 3.7 ), math . floor ( 3.7 )) 37Test . assertEquals ( math . floored ( - 3.7 ), - 4 ) 38Test . assertEquals ( math . floored ( - 3.7 ), math . floor ( - 3.7 )) 39Test . assertAlmostEquals ( math . floored ( - 3.75 , 0.1 ), - 3.8 , 0.1 ) 40end 41 42function Test_clamp () 43Test . assertEquals ( math . clamp ( 0 , 1 , 2 ), 1 ) 44Test . assertEquals ( math . clamp ( 0 , 0 , 2 ), 0 ) 45Test . assertEquals ( math . clamp ( 0 , 0 , 0 ), 0 ) 46 47Test . assertEquals ( math . clamp ( 0 , - 10 , 10 ), 0 ) 48Test . assertEquals ( math . clamp ( - 100 , - 10 , 10 ), - 10 ) 49Test . assertEquals ( math . clamp ( 100 , - 10 , 10 ), 10 ) 50 51Test . assertEquals ( math . clamp ( - 2 ), 0 ) 52Test . assertEquals ( math . clamp ( 0.5 ), 0.5 ) 53Test . assertEquals ( math . clamp ( 3 ), 1 ) 54 55--- Max is smaller than min 56Test . assertEquals ( math . clamp ( 0 , 1 , 0 ), 1 ) 57Test . assertEquals ( math . clamp ( 2 , 1 , 0 ), 0 ) 58Test . assertEquals ( math . clamp ( 1 , 1 , 0 ), 0 ) 59end 60 61local values1 ={ 25 , 25 , 25 , 25 } 62local values2 ={ 10 , 25 , 40 , 45 , 50 } 63local values3 ={ 10 , 25 , 40 , - 50 , - 45 } 64local values4 ={ - 23 , - 12 , - 50 , - 10 , - 33 } 65 66function Test_maximum () 67Test . assertEquals ( math . maximum ( values1 ), 25 ) 68Test . assertEquals ( math . maximum ( values2 ), 50 ) 69Test . assertEquals ( math . maximum ( values3 ), 40 ) 70Test . assertEquals ( math . maximum ( values4 ), - 10 ) 71for _ =1 , 5 do 72local rando ={} 73while # rando < 11 do 74rando [ # rando + 1 ] =math . random ( - 50 , 50 ) 75end 76Test . assertEquals ( math . maximum ( rando ), math . max ( table . unpack ( rando ))) 77end 78end 79 80function Test_minimum () 81Test . assertEquals ( math . minimum ( values1 ), 25 ) 82Test . assertEquals ( math . minimum ( values2 ), 10 ) 83Test . assertEquals ( math . minimum ( values3 ), - 50 ) 84Test . assertEquals ( math . minimum ( values4 ), - 50 ) 85for _ =1 , 5 do 86local rando ={} 87while # rando < 11 do 88rando [ # rando + 1 ] =math . random ( - 50 , 50 ) 89end 90Test . assertEquals ( math . minimum ( rando ), math . min ( table . unpack ( rando ))) 91end 92end 93 94function Test_sum () 95Test . assertEquals ( math . sum ( values1 ), 100 ) 96Test . assertEquals ( math . sum ( values2 ), 170 ) 97Test . assertEquals ( math . sum ( values3 ), - 20 ) 98Test . assertEquals ( math . sum ( values4 ), - 128 ) 99end 100 101function Test_mean () 102Test . assertEquals ( math . mean ( values1 ), 25 ) 103Test . assertEquals ( math . mean ( values2 ), 34 ) 104Test . assertEquals ( math . mean ( values3 ), - 4 ) 105Test . assertEquals ( math . mean ( values4 ), - 25.6 ) 106end 107 108function Test_midrange () 109Test . assertEquals ( math . midrange ( values1 ), 25 ) 110Test . assertEquals ( math . midrange ( values2 ), 30 ) 111Test . assertEquals ( math . midrange ( values3 ), - 5 ) 112Test . assertEquals ( math . midrange ( values4 ), - 30 ) 113end 114 115function Test_range () 116Test . assertEquals ( math . range ( values1 ), 0 ) 117Test . assertEquals ( math . range ( values2 ), 40 ) 118Test . assertEquals ( math . range ( values3 ), 90 ) 119Test . assertEquals ( math . range ( values4 ), 40 ) 120end 121 122function Test_sign () 123Test . assertEquals ( math . sign ( 0 ), 1 ) 124Test . assertEquals ( math . sign ( 1 ), 1 ) 125Test . assertEquals ( math . sign ( - 1 ), - 1 ) 126end 127 128function Test_lerp () 129Test . assertEquals ( math . lerp ( 1 , 2 , 0.5 ), 1.5 ) 130Test . assertEquals ( math . lerp ( 0 , 10 , 0.25 ), 2.5 ) 131end 132 133Test . Run ()