Generate labelled updaters and propagate callback exceptions

This commit is contained in:
sneeker committed 2019-03-13 14:36:15 +00:00
1 parent 835e7f0098
commit 0e7072e5b8
2 files changed
+17 -3

No files matched your search

+10
View File
@@ -28,3 +28,13 @@ let () =
let original = Mutable.{ count = 1; label = "grey" } in
let changed = Mutable.set_count 2 original in
assert (original.Mutable.count = 1 && changed.Mutable.count = 2)
let () =
let calls = ref 0 in
let original = Colour.{ red = 3; green = 4; blue = 5 } in
let changed = Colour.update_green ~f:(fun n -> incr calls; n + 1) original in
assert (Colour.green changed = 5 && !calls = 1);
assert (Box.update_contents ~f:string_of_int Box.{ contents = 9 } = Box.{ contents = "9" });
(try ignore (Colour.update_red ~f:(fun _ -> failwith "callback") original); assert false
with Failure message -> assert (message = "callback"));
assert (Colour.red original = 3)