open Jest open Expect let makeTest = (~only=false, str, item1, item2) => only ? Only.test(str, () => expect(item1) -> toEqual(item2)) : test(str, () => expect(item1) -> toEqual(item2)) describe("Lodash", () => describe("Lodash", () => { makeTest( "split", SamplesToShape.Internals.T.splitContinuousAndDiscrete([1.432, 1.33455, 2.0]), ([1.432, 1.33455, 2.0], E.FloatFloatMap.empty()), ) makeTest( "split", SamplesToShape.Internals.T.splitContinuousAndDiscrete([ 1.432, 1.33455, 2.0, 2.0, 2.0, 2.0, ]) |> (((c, disc)) => (c, disc |> E.FloatFloatMap.toArray)), ([1.432, 1.33455], [(2.0, 4.0)]), ) let makeDuplicatedArray = count => { let arr = Belt.Array.range(1, count) |> E.A.fmap(float_of_int) let sorted = arr |> Belt.SortArray.stableSortBy(_, compare) E.A.concatMany([sorted, sorted, sorted, sorted]) |> Belt.SortArray.stableSortBy(_, compare) } let (_, discrete) = SamplesToShape.Internals.T.splitContinuousAndDiscrete( makeDuplicatedArray(10), ) let toArr = discrete |> E.FloatFloatMap.toArray makeTest("splitMedium", toArr |> Belt.Array.length, 10) let (c, discrete) = SamplesToShape.Internals.T.splitContinuousAndDiscrete( makeDuplicatedArray(500), ) let toArr = discrete |> E.FloatFloatMap.toArray makeTest("splitMedium", toArr |> Belt.Array.length, 500) }) )