123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110open!Baseopen!ImportmoduleTest_scheduler(Scheduler:Common.Scheduler)=structmoduleTest_intf(Seq:Parallel.Sequence.S)=struct(* Adapted from base/test/test_sequence.ml *)module%test[@name"range symmetries"]_=structletbasicparallel~stride~start~stop~start_n~stop_n~(result:intlist)=letrange=Seq.range~stride~start~stopstart_nstop_ninletlist=Seq.to_listparallelrangeinletiarray=Seq.to_iarrayparallelrangeinletiresult=Iarray.of_listresultinList.equalInt.equallistresult&&Iarray.equalInt.equaliarrayiresult;;letteststride(start_n,start)(stop_n,stop)result=Scheduler.parallel(funparallel->basicparallel~stride~start~stop~start_n~stop_n~result&&(* works for negative [start] and [stop] *)basicparallel~stride:(-stride)~start_n:(-start_n)~stop_n:(-stop_n)~start~stop~result:(List.mapresult~f:(funx->-x)));;let%test_=test1(3,`inclusive)(1,`exclusive)[]let%test_=test1(3,`inclusive)(3,`exclusive)[]let%test_=test1(3,`inclusive)(3,`inclusive)[3]let%test_=test1(3,`inclusive)(4,`exclusive)[3]let%test_=test1(3,`inclusive)(8,`exclusive)[3;4;5;6;7]let%test_=test3(4,`inclusive)(10,`exclusive)[4;7]let%test_=test3(4,`inclusive)(11,`exclusive)[4;7;10]let%test_=test3(4,`inclusive)(12,`exclusive)[4;7;10]let%test_=test3(4,`inclusive)(13,`exclusive)[4;7;10]let%test_=test3(4,`inclusive)(14,`exclusive)[4;7;10;13]let%test_=test(-1)(1,`inclusive)(3,`exclusive)[]let%test_=test(-1)(3,`inclusive)(3,`exclusive)[]let%test_=test(-1)(4,`inclusive)(3,`exclusive)[4]let%test_=test(-1)(8,`inclusive)(3,`exclusive)[8;7;6;5;4]let%test_=test(-3)(10,`inclusive)(4,`exclusive)[10;7]let%test_=test(-3)(10,`inclusive)(3,`exclusive)[10;7;4]let%test_=test(-3)(10,`inclusive)(2,`exclusive)[10;7;4]let%test_=test(-3)(10,`inclusive)(1,`exclusive)[10;7;4]let%test_=test(-3)(10,`inclusive)(0,`exclusive)[10;7;4;1]let%test_=test1(3,`exclusive)(1,`exclusive)[]let%test_=test1(3,`exclusive)(3,`exclusive)[]let%test_=test1(3,`exclusive)(4,`exclusive)[]let%test_=test1(3,`exclusive)(8,`exclusive)[4;5;6;7]let%test_=test3(4,`exclusive)(10,`exclusive)[7]let%test_=test3(4,`exclusive)(11,`exclusive)[7;10]let%test_=test3(4,`exclusive)(12,`exclusive)[7;10]let%test_=test3(4,`exclusive)(13,`exclusive)[7;10]let%test_=test3(4,`exclusive)(14,`exclusive)[7;10;13]let%test_=test(-1)(1,`exclusive)(3,`exclusive)[]let%test_=test(-1)(3,`exclusive)(3,`exclusive)[]let%test_=test(-1)(4,`exclusive)(3,`exclusive)[]let%test_=test(-1)(8,`exclusive)(3,`exclusive)[7;6;5;4]let%test_=test(-3)(10,`exclusive)(4,`exclusive)[7]let%test_=test(-3)(10,`exclusive)(3,`exclusive)[7;4]let%test_=test(-3)(10,`exclusive)(2,`exclusive)[7;4]let%test_=test(-3)(10,`exclusive)(1,`exclusive)[7;4]let%test_=test(-3)(10,`exclusive)(0,`exclusive)[7;4;1]let%test_=test1(3,`inclusive)(1,`inclusive)[]let%test_=test1(3,`inclusive)(3,`inclusive)[3]let%test_=test1(3,`inclusive)(4,`inclusive)[3;4]let%test_=test1(3,`inclusive)(8,`inclusive)[3;4;5;6;7;8]let%test_=test3(4,`inclusive)(10,`inclusive)[4;7;10]let%test_=test3(4,`inclusive)(11,`inclusive)[4;7;10]let%test_=test3(4,`inclusive)(12,`inclusive)[4;7;10]let%test_=test3(4,`inclusive)(13,`inclusive)[4;7;10;13]let%test_=test3(4,`inclusive)(14,`inclusive)[4;7;10;13]let%test_=test(-1)(1,`inclusive)(3,`inclusive)[]let%test_=test(-1)(3,`inclusive)(3,`inclusive)[3]let%test_=test(-1)(4,`inclusive)(3,`inclusive)[4;3]let%test_=test(-1)(8,`inclusive)(3,`inclusive)[8;7;6;5;4;3]let%test_=test(-3)(10,`inclusive)(4,`inclusive)[10;7;4]let%test_=test(-3)(10,`inclusive)(3,`inclusive)[10;7;4]let%test_=test(-3)(10,`inclusive)(2,`inclusive)[10;7;4]let%test_=test(-3)(10,`inclusive)(1,`inclusive)[10;7;4;1]let%test_=test(-3)(10,`inclusive)(0,`inclusive)[10;7;4;1]let%test_=test1(3,`exclusive)(1,`inclusive)[]let%test_=test1(3,`exclusive)(3,`inclusive)[]let%test_=test1(3,`exclusive)(4,`inclusive)[4]let%test_=test1(3,`exclusive)(8,`inclusive)[4;5;6;7;8]let%test_=test3(4,`exclusive)(10,`inclusive)[7;10]let%test_=test3(4,`exclusive)(11,`inclusive)[7;10]let%test_=test3(4,`exclusive)(12,`inclusive)[7;10]let%test_=test3(4,`exclusive)(13,`inclusive)[7;10;13]let%test_=test3(4,`exclusive)(14,`inclusive)[7;10;13]let%test_=test(-1)(1,`exclusive)(3,`inclusive)[]let%test_=test(-1)(3,`exclusive)(3,`inclusive)[]let%test_=test(-1)(4,`exclusive)(3,`inclusive)[3]let%test_=test(-1)(8,`exclusive)(3,`inclusive)[7;6;5;4;3]let%test_=test(-3)(10,`exclusive)(4,`inclusive)[7;4]let%test_=test(-3)(10,`exclusive)(3,`inclusive)[7;4]let%test_=test(-3)(10,`exclusive)(2,`inclusive)[7;4]let%test_=test(-3)(10,`exclusive)(1,`inclusive)[7;4;1]let%test_=test(-3)(10,`exclusive)(0,`inclusive)[7;4;1]endendmodule%testTest_without_length=Test_intf(Parallel.Sequence)module%testTest_with_length=Test_intf(Parallel.Sequence.With_length)endincludeCommon.Test_schedulers(Test_scheduler)