Simple tests for function library
This commit is contained in:
parent
b502e21a0f
commit
08a7b8586b
|
@ -1,5 +1,6 @@
|
||||||
open Jest
|
open Jest
|
||||||
open Expect
|
open Expect
|
||||||
|
open Reducer_TestHelpers
|
||||||
|
|
||||||
let expectEvalToBeOk = (expr: string) =>
|
let expectEvalToBeOk = (expr: string) =>
|
||||||
Reducer.evaluate(expr)->Reducer_Helpers.rRemoveDefaultsExternal->E.R.isOk->expect->toBe(true)
|
Reducer.evaluate(expr)->Reducer_Helpers.rRemoveDefaultsExternal->E.R.isOk->expect->toBe(true)
|
||||||
|
@ -29,3 +30,49 @@ describe("Fn auto-testing", () => {
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe("FunctionRegistry Library", () => {
|
||||||
|
testEvalToBe("List.make(3, 'HI')", "Ok(['HI','HI','HI'])")
|
||||||
|
testEvalToBe("make(3, 'HI')", "Error(Function not found: make(Number,String))")
|
||||||
|
testEvalToBe("List.upTo(1,3)", "Ok([1,2,3])")
|
||||||
|
testEvalToBe("List.first([3,5,8])", "Ok(3)")
|
||||||
|
testEvalToBe("List.last([3,5,8])", "Ok(8)")
|
||||||
|
testEvalToBe("List.reverse([3,5,8])", "Ok([8,5,3])")
|
||||||
|
testEvalToBe("Dist.normal(5,2)", "Ok(Normal(5,2))")
|
||||||
|
testEvalToBe("normal(5,2)", "Ok(Normal(5,2))")
|
||||||
|
testEvalToBe("normal({mean:5,stdev:2})", "Ok(Normal(5,2))")
|
||||||
|
testEvalToBe("-2 to 4", "Ok(Normal(1,1.8238704957353074))")
|
||||||
|
testEvalToBe("pointMass(5)", "Ok(PointMass(5))")
|
||||||
|
testEvalToBe("Number.floor(5.5)", "Ok(5)")
|
||||||
|
testEvalToBe("Number.ceil(5.5)", "Ok(6)")
|
||||||
|
testEvalToBe("floor(5.5)", "Ok(5)")
|
||||||
|
testEvalToBe("ceil(5.5)", "Ok(6)")
|
||||||
|
testEvalToBe("Number.abs(5.5)", "Ok(5.5)")
|
||||||
|
testEvalToBe("abs(5.5)", "Ok(5.5)")
|
||||||
|
testEvalToBe("Number.exp(10)", "Ok(22026.465794806718)")
|
||||||
|
testEvalToBe("Number.log10(10)", "Ok(1)")
|
||||||
|
testEvalToBe("Number.log2(10)", "Ok(3.321928094887362)")
|
||||||
|
testEvalToBe("Number.sum([2,5,3])", "Ok(10)")
|
||||||
|
testEvalToBe("sum([2,5,3])", "Ok(10)")
|
||||||
|
testEvalToBe("Number.product([2,5,3])", "Ok(30)")
|
||||||
|
testEvalToBe("Number.min([2,5,3])", "Ok(2)")
|
||||||
|
testEvalToBe("Number.max([2,5,3])", "Ok(5)")
|
||||||
|
testEvalToBe("Number.mean([0,5,10])", "Ok(5)")
|
||||||
|
testEvalToBe("Number.geomean([1,5,18])", "Ok(4.481404746557164)")
|
||||||
|
testEvalToBe("Number.stdev([0,5,10,15])", "Ok(5.5901699437494745)")
|
||||||
|
testEvalToBe("Number.variance([0,5,10,15])", "Ok(31.25)")
|
||||||
|
testEvalToBe("Number.sort([10,0,15,5])", "Ok([0,5,10,15])")
|
||||||
|
testEvalToBe("Number.cumsum([1,5,3])", "Ok([1,6,9])")
|
||||||
|
testEvalToBe("Number.cumprod([1,5,3])", "Ok([1,5,15])")
|
||||||
|
testEvalToBe("Number.diff([1,5,3])", "Ok([4,-2])")
|
||||||
|
testEvalToBe(
|
||||||
|
"Dist.logScore({estimate: normal(5,2), answer: normal(5.2,1), prior: normal(5.5,3)})",
|
||||||
|
"Ok(-0.33591375663884876)",
|
||||||
|
)
|
||||||
|
testEvalToBe(
|
||||||
|
"Dist.logScore({estimate: normal(5,2), answer: normal(5.2,1)})",
|
||||||
|
"Ok(0.32244107041564646)",
|
||||||
|
)
|
||||||
|
testEvalToBe("Dist.logScore({estimate: normal(5,2), answer: 4.5})", "Ok(1.6433360626394853)")
|
||||||
|
testEvalToBe("Dist.klDivergence(normal(5,2), normal(5,1.5))", "Ok(0.06874342818671068)")
|
||||||
|
})
|
||||||
|
|
|
@ -15,7 +15,6 @@
|
||||||
"start": "rescript build -w -with-deps",
|
"start": "rescript build -w -with-deps",
|
||||||
"clean": "rescript clean && rm -rf dist",
|
"clean": "rescript clean && rm -rf dist",
|
||||||
"test:reducer": "jest __tests__/Reducer*/",
|
"test:reducer": "jest __tests__/Reducer*/",
|
||||||
"test:reducer2": "jest __tests__/FunctionRegistry_test",
|
|
||||||
"benchmark": "ts-node benchmark/conversion_tests.ts",
|
"benchmark": "ts-node benchmark/conversion_tests.ts",
|
||||||
"test": "jest",
|
"test": "jest",
|
||||||
"test:ts": "jest __tests__/TS/",
|
"test:ts": "jest __tests__/TS/",
|
||||||
|
|
|
@ -192,7 +192,7 @@ let library = [
|
||||||
~output=EvtNumber,
|
~output=EvtNumber,
|
||||||
~examples=[`variance([3,5,2,3,5])`],
|
~examples=[`variance([3,5,2,3,5])`],
|
||||||
~definitions=[
|
~definitions=[
|
||||||
ArrayNumberDist.make("variance", r => r->E.A.Floats.stdev->Wrappers.evNumber->Ok),
|
ArrayNumberDist.make("variance", r => r->E.A.Floats.variance->Wrappers.evNumber->Ok),
|
||||||
],
|
],
|
||||||
(),
|
(),
|
||||||
),
|
),
|
||||||
|
@ -217,7 +217,7 @@ let library = [
|
||||||
~examples=[`cumsum([3,5,2,3,5])`],
|
~examples=[`cumsum([3,5,2,3,5])`],
|
||||||
~definitions=[
|
~definitions=[
|
||||||
ArrayNumberDist.make("cumsum", r =>
|
ArrayNumberDist.make("cumsum", r =>
|
||||||
r->E.A.Floats.cumsum->E.A2.fmap(Wrappers.evNumber)->Wrappers.evArray->Ok
|
r->E.A.Floats.cumSum->E.A2.fmap(Wrappers.evNumber)->Wrappers.evArray->Ok
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
(),
|
(),
|
||||||
|
@ -230,7 +230,7 @@ let library = [
|
||||||
~examples=[`cumprod([3,5,2,3,5])`],
|
~examples=[`cumprod([3,5,2,3,5])`],
|
||||||
~definitions=[
|
~definitions=[
|
||||||
ArrayNumberDist.make("cumprod", r =>
|
ArrayNumberDist.make("cumprod", r =>
|
||||||
r->E.A.Floats.cumsum->E.A2.fmap(Wrappers.evNumber)->Wrappers.evArray->Ok
|
r->E.A.Floats.cumProd->E.A2.fmap(Wrappers.evNumber)->Wrappers.evArray->Ok
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
(),
|
(),
|
||||||
|
|
|
@ -752,7 +752,7 @@ module A = {
|
||||||
let diff = (t: t): array<float> =>
|
let diff = (t: t): array<float> =>
|
||||||
Belt.Array.zipBy(t, Belt.Array.sliceToEnd(t, 1), (left, right) => right -. left)
|
Belt.Array.zipBy(t, Belt.Array.sliceToEnd(t, 1), (left, right) => right -. left)
|
||||||
|
|
||||||
let cumsum = (t: t): array<float> => accumulate((a, b) => a +. b, t)
|
let cumSum = (t: t): array<float> => accumulate((a, b) => a +. b, t)
|
||||||
let cumProd = (t: t): array<float> => accumulate((a, b) => a *. b, t)
|
let cumProd = (t: t): array<float> => accumulate((a, b) => a *. b, t)
|
||||||
|
|
||||||
exception RangeError(string)
|
exception RangeError(string)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user