VCDIFF (RFC 3284) binary delta encoding in pure OCaml
0

Configure Feed

Select the types of activity you want to include in your feed.

ocaml-vcdiff / test / test_value.ml
2.6 kB 77 lines
1open Vcdiff.Value 2 3let test_inst_len () = 4 Alcotest.(check int) "add" 5 (inst_len (Add "hello")); 5 Alcotest.(check int) "empty add" 0 (inst_len (Add "")); 6 Alcotest.(check int) "run" 1000 (inst_len (Run { len = 1000; byte = 'x' })); 7 Alcotest.(check int) "copy" 7 (inst_len (Copy { addr = 3; len = 7 })) 8 9let test_target_len () = 10 Alcotest.(check int) 11 "empty window" 0 12 (Window.target_len { Window.source = None; checksum = None; insts = [] }); 13 Alcotest.(check int) 14 "mixed" 10 15 (Window.target_len 16 { 17 Window.source = None; 18 checksum = None; 19 insts = 20 [ Add "ab"; Run { len = 3; byte = ' ' }; Copy { addr = 0; len = 5 } ]; 21 }) 22 23let test_equal_instruction () = 24 Alcotest.(check bool) "add equal" true (equal_instruction (Add "x") (Add "x")); 25 Alcotest.(check bool) 26 "add differs" false 27 (equal_instruction (Add "x") (Add "y")); 28 Alcotest.(check bool) 29 "run vs copy" false 30 (equal_instruction 31 (Run { len = 4; byte = 'a' }) 32 (Copy { addr = 4; len = 4 })); 33 Alcotest.(check bool) 34 "copy addr differs" false 35 (equal_instruction 36 (Copy { addr = 0; len = 4 }) 37 (Copy { addr = 1; len = 4 })) 38 39let test_equal () = 40 let w insts = { Window.source = None; checksum = None; insts } in 41 let v insts = { app_header = None; windows = [ w insts ] } in 42 Alcotest.(check bool) "equal" true (equal (v [ Add "a" ]) (v [ Add "a" ])); 43 Alcotest.(check bool) 44 "insts differ" false 45 (equal (v [ Add "a" ]) (v [ Add "b" ])); 46 Alcotest.(check bool) 47 "app header differs" false 48 (equal 49 { app_header = Some "x"; windows = [] } 50 { app_header = None; windows = [] }); 51 Alcotest.(check bool) 52 "checksum differs" false 53 (equal 54 { app_header = None; windows = [ { (w []) with checksum = Some 1l } ] } 55 { app_header = None; windows = [ w [] ] }) 56 57(* pp must render the actual content, not a placeholder. *) 58let test_pp_instruction () = 59 Alcotest.(check string) 60 "add" "ADD 5" 61 (Fmt.str "%a" pp_instruction (Add "hello")); 62 Alcotest.(check string) 63 "run" "RUN 3 'x'" 64 (Fmt.str "%a" pp_instruction (Run { len = 3; byte = 'x' })); 65 Alcotest.(check string) 66 "copy" "COPY 7@3" 67 (Fmt.str "%a" pp_instruction (Copy { addr = 3; len = 7 })) 68 69let suite = 70 ( "value", 71 [ 72 Alcotest.test_case "inst_len" `Quick test_inst_len; 73 Alcotest.test_case "target_len" `Quick test_target_len; 74 Alcotest.test_case "equal_instruction" `Quick test_equal_instruction; 75 Alcotest.test_case "equal" `Quick test_equal; 76 Alcotest.test_case "pp_instruction" `Quick test_pp_instruction; 77 ] )