Files
fieldglass/runtime.ml
T

23 lines
850 B
OCaml

open Fieldglass
let sample : (string * bool, string) lens' =
lens ~view:fst ~set:(fun value (_, other) -> value, other)
let () = assert (view sample ("colour", true) = "colour")
let () =
let source = "colour", true in
assert (set sample "grey" source = ("grey", true));
assert (set sample (view sample source) source = source);
assert (set sample "blue" (set sample "grey" source) = set sample "blue" source);
let calls = ref 0 in
assert (over sample ~f:(fun text -> incr calls; text ^ "s") source = ("colours", true));
assert (!calls = 1)
let () =
let first = (fst, fun value (_, rest) -> value, rest) in
let second = (snd, fun value (rest, _) -> rest, value) in
let focus = compose first second in
assert (view focus ((true, "grey"), false) = "grey");
assert (set focus 9 ((true, "grey"), false) = ((true, 9), false))