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); }) });