module Test = (val Containers_testlib.make ~__FILE__ ()) open Test open CCFun_vec let _listuniq = let g = Q.(small_list (pair small_int small_int)) in Q.map_same_type (fun l -> CCList.sort_uniq ~cmp:(fun a b -> Stdlib.compare (fst a) (fst b)) l) g ;; t @@ fun () -> is_empty empty;; t @@ fun () -> not (is_empty (return 2));; t @@ fun () -> length (return 2) = 1;; q _listuniq (fun l -> let m = of_list l in List.for_all (fun (i, y) -> get_exn i m = y) @@ List.mapi CCPair.make l) ;; (* regression test for #298 *) t @@ fun () -> let rec consume x = match CCFun_vec.pop x with | None -> () | Some (_, x) -> consume x in consume (of_list CCList.(1 -- 100)); true ;; q Q.(pair int (small_list int)) (fun (x, l) -> let q0 = of_list l in let q = push x q0 in assert_equal (length q) (length q0 + 1); let y, q = pop_exn q in assert_equal x y; assert_equal (to_list q) (to_list q0); true) ;; q Q.(pair (fun1 Observable.int bool) (small_list int)) (fun (f, l) -> let f = Q.Fn.apply f in List.map f l = (of_list l |> map f |> to_list)) ;; q Q.(pair (small_list int) (small_list int)) (fun (l1, l2) -> l1 @ l2 = (append (of_list l1) (of_list l2) |> to_list)) ;; q Q.(small_list int) (fun l -> l = to_list (of_list l));; q _listuniq (fun l -> List.sort Stdlib.compare l = (l |> Iter.of_list |> of_iter |> to_iter |> Iter.to_list |> List.sort Stdlib.compare)) ;; q _listuniq (fun l -> List.sort Stdlib.compare l = (l |> Gen.of_list |> of_gen |> to_gen |> Gen.to_list |> List.sort Stdlib.compare)) ;; t @@ fun () -> choose empty = None;; t @@ fun () -> choose (of_list [ 1, 1; 2, 2 ]) <> None