Generate labelled updaters and propagate callback exceptions
This commit is contained in:
2 files changed
+17
-3
No files matched your search
@@ -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)
|
||||
Reference in new issue
Block a user