From 47684c67aa0e2753530a681604c364b97e5c3103 Mon Sep 17 00:00:00 2001 From: swrup Date: Tue, 7 Oct 2025 17:28:14 +0200 Subject: [PATCH] --- a.output | Bin 0 -> 76 bytes b.output | Bin 0 -> 76 bytes src/binary_formats.ml | 34 ++++++++++++++++++++++++---------- test/test.ml | 8 ++++---- 4 files changed, 28 insertions(+), 14 deletions(-) create mode 100644 a.output create mode 100644 b.output diff --git a/a.output b/a.output new file mode 100644 index 0000000000000000000000000000000000000000..53eb1eba6bd76a2ede16edea6546a89a6798d61b GIT binary patch literal 76 zcmeZaU|^79VPIfnVrF4wW9Q)H;^yJy;};MV5*85^6PJ*bl9rK`lUGnwQdUt_Q`gYc f($>+{(>E|QGBz+{(>E|QGBz - { h_planchets; noreveal_index }) - |+ field Purpose.bin (Fun.const purpose) - |+ field HashPlanchetsP.bin (fun t -> t.h_planchets) - |+ field beint32 (fun t -> t.noreveal_index) - |> sealr + open Bin + + let rec bin = + lazy + (record (fun _purpose h_planchets noreveal_index -> + { h_planchets; noreveal_index }) + |+ field Purpose.bin (fun _t -> Lazy.force purpose) + |+ field HashPlanchetsP.bin (fun t -> t.h_planchets) + |+ field beint32 (fun t -> t.noreveal_index) + |> sealr) + + and size = + lazy + (let size_t = Size.of_value (Size.size_of (Lazy.force bin)) in + match size_t with + | Static n -> n + | Dynamic _ | Unknown -> + Fmt.failwith "size_of failure: size is not Static") + + and purpose = + lazy + (let size = Lazy.force size in + Purpose.make ~size Taler_signatures.exchange_confirm_withdraw) end diff --git a/test/test.ml b/test/test.ml index 5629d120..367af4b6 100644 --- a/test/test.ml +++ b/test/test.ml @@ -76,12 +76,12 @@ let () = let open Binary_formats.WithdrawConfirmationPS in let str64 = String.init 64 (fun i -> Char.unsafe_chr (i + 1)) in let dummy_t = { h_planchets= { v= { v= str64 } }; noreveal_index= 0_l } in + let bin = Lazy.force bin in + let size = Lazy.force size in let size' = Bin.size_of_value bin dummy_t |> Option.get in assert (size = size'); assert (size = 76); - (* for cmp test with signatures.c output + (* for cmp test with signatures.c output *) let raw_str = Bin.to_string bin dummy_t in - Printf.printf "%s" raw_str; - *) - () + Printf.printf "%s" raw_str; ()