71 lines
1.4 KiB
Go
71 lines
1.4 KiB
Go
|
|
||
|
package part1
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
"reflect"
|
||
|
)
|
||
|
|
||
|
func TestNextConst(t *testing.T) {
|
||
|
next, err := Next([]int{1, 1, 1})
|
||
|
equal(t, err, nil)
|
||
|
equal(t, next, 1)
|
||
|
next, err = Next([]int{2, 2, 2})
|
||
|
equal(t, err, nil)
|
||
|
equal(t, next, 2)
|
||
|
}
|
||
|
|
||
|
func TestNextLinear(t *testing.T) {
|
||
|
next, err := Next([]int{0, 1, 2, 3})
|
||
|
equal(t, err, nil)
|
||
|
equal(t, next, 4)
|
||
|
}
|
||
|
|
||
|
func TestNextQuad(t *testing.T) {
|
||
|
next, err := Next([]int{0, 1, 4, 9, 16})
|
||
|
equal(t, err, nil)
|
||
|
equal(t, next, 25)
|
||
|
}
|
||
|
|
||
|
func TestNextBadList(t *testing.T) {
|
||
|
v, err := Next([]int{0, 5, 2})
|
||
|
if err == nil {
|
||
|
t.Errorf("expected error, got %v", v)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestDerivConst(t *testing.T) {
|
||
|
equal(t, Deriv([]int{1,1,1}), []int{0,0})
|
||
|
equal(t, Deriv([]int{2,2,2}), []int{0,0})
|
||
|
}
|
||
|
|
||
|
func TestDerivLinear(t *testing.T) {
|
||
|
equal(t, Deriv([]int{0,1,2}), []int{1,1})
|
||
|
equal(t, Deriv([]int{0,2,4}), []int{2,2})
|
||
|
}
|
||
|
|
||
|
func TestDerivQuad(t *testing.T) {
|
||
|
equal(t, Deriv([]int{0,1,4,9,16}), []int{1,3,5,7})
|
||
|
}
|
||
|
|
||
|
func TestIsZero(t *testing.T) {
|
||
|
equal(t, IsZero([]int{0}), true)
|
||
|
equal(t, IsZero([]int{0, 0}), true)
|
||
|
equal(t, IsZero([]int{1}), false)
|
||
|
equal(t, IsZero([]int{1, 1}), false)
|
||
|
equal(t, IsZero([]int{1, 0}), false)
|
||
|
}
|
||
|
|
||
|
func TestLineConv(t *testing.T) {
|
||
|
r, err := LineConv("0 1 2 3")
|
||
|
equal(t, err, nil)
|
||
|
equal(t, r, []int{0, 1, 2, 3})
|
||
|
}
|
||
|
|
||
|
func equal(t *testing.T, actual any, target any) {
|
||
|
if !reflect.DeepEqual(actual, target) {
|
||
|
t.Errorf("expected %v, got %v", target, actual)
|
||
|
}
|
||
|
}
|
||
|
|