github.com/pavlo67/common@v0.5.3/common/mathlib/interpolation_test.go (about) 1 package mathlib 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7 ) 8 9 func TestInterpolateByTable(t *testing.T) { 10 table := [][2]float64{{1, 10}, {-1, 2}, {5, 20}} 11 12 x, err := InterpolateByTable(-1, table) 13 require.NoError(t, err) 14 require.Equal(t, 2., x) 15 16 x, err = InterpolateByTable(-2, table) 17 require.Error(t, err) 18 require.Equal(t, 0., x) 19 20 x, err = InterpolateByTable(0, table) 21 require.NoError(t, err) 22 require.Equal(t, 6., x) 23 24 x, err = InterpolateByTable(2, table) 25 require.NoError(t, err) 26 require.Equal(t, 12.5, x) 27 28 x, err = InterpolateByTable(10, table) 29 require.Error(t, err) 30 require.Equal(t, 0., x) 31 32 } 33 34 func TestInterpolateByTwoPoints(t *testing.T) { 35 tp1 := [2][2]float64{{1, 10}, {-1, 2}} 36 37 x, err := InterpolateByTwoPoints(-1, tp1) 38 require.NoError(t, err) 39 require.Equal(t, 2., x) 40 41 x, err = InterpolateByTwoPoints(1, tp1) 42 require.NoError(t, err) 43 require.Equal(t, 10., x) 44 45 x, err = InterpolateByTwoPoints(0, tp1) 46 require.NoError(t, err) 47 require.Equal(t, 6., x) 48 49 x, err = InterpolateByTwoPoints(2, tp1) 50 require.Error(t, err) 51 52 tp2 := [2][2]float64{{-1, 2}, {5, 20}} 53 54 x, err = InterpolateByTwoPoints(-1, tp2) 55 require.NoError(t, err) 56 require.Equal(t, 2., x) 57 58 x, err = InterpolateByTwoPoints(5, tp2) 59 require.NoError(t, err) 60 require.Equal(t, 20., x) 61 62 x, err = InterpolateByTwoPoints(0, tp2) 63 require.NoError(t, err) 64 require.Equal(t, 5., x) 65 66 x, err = InterpolateByTwoPoints(-2, tp2) 67 require.Error(t, err) 68 69 x, err = InterpolateByTwoPoints(20, tp2) 70 require.Error(t, err) 71 72 tp3 := [2][2]float64{{5, 20}, {5, 21}} 73 74 x, err = InterpolateByTwoPoints(-10, tp3) 75 require.Error(t, err) 76 77 x, err = InterpolateByTwoPoints(-5, tp3) 78 require.Error(t, err) 79 80 x, err = InterpolateByTwoPoints(6, tp3) 81 require.Error(t, err) 82 83 }