180 lines
4.1 KiB
ReasonML
180 lines
4.1 KiB
ReasonML
open Jest;
|
|
open Expect;
|
|
|
|
exception ShapeWrong(string);
|
|
describe("CDF", () => {
|
|
test("raise - w/o order", () => {
|
|
expect(() => {
|
|
module Cdf =
|
|
CDF.Make({
|
|
let shape: DistTypes.xyShape = {
|
|
xs: [|10., 4., 8.|],
|
|
ys: [|8., 9., 2.|],
|
|
};
|
|
});
|
|
();
|
|
})
|
|
|> toThrow
|
|
});
|
|
test("raise - with order", () => {
|
|
expect(() => {
|
|
module Cdf =
|
|
CDF.Make({
|
|
let shape: DistTypes.xyShape = {
|
|
xs: [|1., 4., 8.|],
|
|
ys: [|8., 9., 2.|],
|
|
};
|
|
});
|
|
();
|
|
})
|
|
|> not_
|
|
|> toThrow
|
|
});
|
|
test("order#1", () => {
|
|
let a = CDF.order({xs: [|1., 4., 8.|], ys: [|8., 9., 2.|]});
|
|
let b: DistTypes.xyShape = {xs: [|1., 4., 8.|], ys: [|8., 9., 2.|]};
|
|
expect(a) |> toEqual(b);
|
|
});
|
|
test("order#2", () => {
|
|
let a = CDF.order({xs: [|10., 5., 12.|], ys: [|8., 9., 2.|]});
|
|
let b: DistTypes.xyShape = {xs: [|5., 10., 12.|], ys: [|9., 8., 2.|]};
|
|
expect(a) |> toEqual(b);
|
|
});
|
|
|
|
describe("minX - maxX", () => {
|
|
module Dist =
|
|
CDF.Make({
|
|
let shape = CDF.order({xs: [|20., 4., 8.|], ys: [|8., 9., 2.|]});
|
|
});
|
|
test("minX", () => {
|
|
expect(Dist.minX()) |> toEqual(4.)
|
|
});
|
|
test("maxX", () => {
|
|
expect(Dist.maxX()) |> toEqual(20.)
|
|
});
|
|
});
|
|
|
|
describe("findY", () => {
|
|
module Dist =
|
|
CDF.Make({
|
|
let shape = CDF.order({xs: [|1., 2., 3.|], ys: [|5., 6., 7.|]});
|
|
});
|
|
test("#1", () => {
|
|
expect(Dist.findY(1.)) |> toEqual(5.)
|
|
});
|
|
test("#2", () => {
|
|
expect(Dist.findY(1.5)) |> toEqual(5.5)
|
|
});
|
|
test("#3", () => {
|
|
expect(Dist.findY(3.)) |> toEqual(7.)
|
|
});
|
|
test("#4", () => {
|
|
expect(Dist.findY(4.)) |> toEqual(7.)
|
|
});
|
|
test("#5", () => {
|
|
expect(Dist.findY(15.)) |> toEqual(7.)
|
|
});
|
|
test("#6", () => {
|
|
expect(Dist.findY(-1.)) |> toEqual(5.)
|
|
});
|
|
});
|
|
|
|
describe("findX", () => {
|
|
module Dist =
|
|
CDF.Make({
|
|
let shape = CDF.order({xs: [|1., 2., 3.|], ys: [|5., 6., 7.|]});
|
|
});
|
|
test("#1", () => {
|
|
expect(Dist.findX(5.)) |> toEqual(1.)
|
|
});
|
|
test("#2", () => {
|
|
expect(Dist.findX(7.)) |> toEqual(3.)
|
|
});
|
|
test("#3", () => {
|
|
expect(Dist.findX(5.5)) |> toEqual(1.5)
|
|
});
|
|
test("#4", () => {
|
|
expect(Dist.findX(8.)) |> toEqual(3.)
|
|
});
|
|
test("#5", () => {
|
|
expect(Dist.findX(4.)) |> toEqual(1.)
|
|
});
|
|
});
|
|
|
|
describe("convertWithAlternativeXs", () => {
|
|
open Functions;
|
|
let xs = up(1, 9);
|
|
let ys = up(20, 28);
|
|
module Dist =
|
|
CDF.Make({
|
|
let shape = CDF.order({xs, ys});
|
|
});
|
|
|
|
let xs2 = up(3, 7);
|
|
module Dist2 =
|
|
CDF.Make({
|
|
let shape = Dist.convertWithAlternativeXs(xs2);
|
|
});
|
|
|
|
test("#1", () => {
|
|
expect(Dist2.xs) |> toEqual([|3., 4., 5., 6., 7.|])
|
|
});
|
|
test("#2", () => {
|
|
expect(Dist2.ys) |> toEqual([|22., 23., 24., 25., 26.|])
|
|
});
|
|
});
|
|
|
|
describe("convertToNewLength", () => {
|
|
open Functions;
|
|
let xs = up(1, 9);
|
|
let ys = up(50, 58);
|
|
module Dist =
|
|
CDF.Make({
|
|
let shape = CDF.order({xs, ys});
|
|
});
|
|
module Dist2 =
|
|
CDF.Make({
|
|
let shape = Dist.convertToNewLength(3);
|
|
});
|
|
test("#1", () => {
|
|
expect(Dist2.xs) |> toEqual([|1., 5., 9.|])
|
|
});
|
|
test("#2", () => {
|
|
expect(Dist2.ys) |> toEqual([|50., 54., 58.|])
|
|
});
|
|
});
|
|
|
|
// @todo: Should each test expect 70.?
|
|
describe("sample", () => {
|
|
open Functions;
|
|
let xs = up(1, 9);
|
|
let ys = up(70, 78);
|
|
module Dist =
|
|
CDF.Make({
|
|
let shape = CDF.order({xs, ys});
|
|
});
|
|
|
|
let xs2 = Dist.sample(3);
|
|
test("#1", () => {
|
|
expect(xs2[0]) |> toBe(70.)
|
|
});
|
|
test("#2", () => {
|
|
expect(xs2[1]) |> toBe(70.)
|
|
});
|
|
test("#3", () => {
|
|
expect(xs2[2]) |> toBe(70.)
|
|
});
|
|
});
|
|
|
|
describe("integral", () => {
|
|
module Dist =
|
|
CDF.Make({
|
|
let shape =
|
|
CDF.order({xs: [|0., 1., 2., 4.|], ys: [|0.0, 1.0, 2.0, 2.0|]});
|
|
});
|
|
test("with regular inputs", () => {
|
|
expect(Dist.integral()) |> toBe(6.)
|
|
});
|
|
});
|
|
});
|