@@ -357,3 +357,26 @@ let%test_unit "edit.shift_error_before_sentence" =
357
357
let warning = Stdlib.List. hd @@ DocumentManager. all_diagnostics st in
358
358
[% test_eq: int ] 41 (warning.range.start.character);
359
359
[% test_eq: int ] 42 (warning.range.end_.character)
360
+
361
+ let % test_unit " edit.edit_non_root_observe_id_top" =
362
+ let st, init_events = init_test_doc ~text: " Definition x := 1. Definition y := 2." in
363
+ let st, (s1, (s2, () )) = dm_parse st (P (P O )) in
364
+ let st, events = DocumentManager. interpret_to_end st in
365
+ let todo = Sel.Todo. (add empty init_events) in
366
+ let todo = Sel.Todo. (add todo events) in
367
+ let st = handle_events todo st in
368
+ let st = edit_text st ~start: 0 ~stop: 18 ~text: " Definition x := 3." in
369
+ [% test_eq: bool ] (ExecutionManager. is_executed (DocumentManager.Internal. execution_state st) s2.id) false ;
370
+ [% test_eq: int option ] (Option. map ~f: Stateid. to_int (DocumentManager.Internal. observe_id st)) None
371
+
372
+ let % test_unit " edit.edit_non_root_observe_id" =
373
+ let st, init_events = init_test_doc ~text: " Definition x := 1. Definition y := 2. Definition z := 3." in
374
+ let st, (s1, (s2, (s3, () ))) = dm_parse st (P (P (P O ))) in
375
+ let st, events = DocumentManager. interpret_to_end st in
376
+ let todo = Sel.Todo. (add empty init_events) in
377
+ let todo = Sel.Todo. (add todo events) in
378
+ let st = handle_events todo st in
379
+ let st = edit_text st ~start: 19 ~stop: 37 ~text: " Definition y := 4." in
380
+ [% test_eq: bool ] (ExecutionManager. is_executed (DocumentManager.Internal. execution_state st) s3.id) false ;
381
+ [% test_eq: int option ] (Option. map ~f: Stateid. to_int (DocumentManager.Internal. observe_id st))
382
+ (Some (Stateid. to_int s1.id))
0 commit comments