CCSDS TM Transfer Frames (CCSDS 132.0-B-3)
0
fork

Configure Feed

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

test(space): expand test suites for CCSDS and space protocol packages

+41
+41
test/test_tm.ml
··· 176 176 let wire = Tm.encode_string packed in 177 177 Alcotest.(check string) "wire=manual" manual wire 178 178 179 + (* Test: MCFC wraparound (8-bit, 255->0) *) 180 + let test_mcfc_wraparound () = 181 + let scid = Tm.scid_exn 1 in 182 + let vcid = Tm.vcid_exn 0 in 183 + let data = String.make 1103 '\x00' in 184 + (* mcfc = 255 (max 8-bit value) *) 185 + let frame_max = Tm.make ~scid ~vcid ~mcfc:255 ~vcfc:0 ~ocf:0 data in 186 + let encoded_max = Tm.encode frame_max in 187 + (match Tm.decode ~frame_len:(String.length encoded_max) encoded_max with 188 + | Error e -> Alcotest.failf "decode mcfc=255 failed: %a" Tm.pp_error e 189 + | Ok decoded -> Alcotest.(check int) "mcfc=255" 255 decoded.header.mcfc); 190 + (* mcfc = 0 (after wraparound) *) 191 + let frame_zero = Tm.make ~scid ~vcid ~mcfc:0 ~vcfc:0 ~ocf:0 data in 192 + let encoded_zero = Tm.encode frame_zero in 193 + match Tm.decode ~frame_len:(String.length encoded_zero) encoded_zero with 194 + | Error e -> Alcotest.failf "decode mcfc=0 failed: %a" Tm.pp_error e 195 + | Ok decoded -> Alcotest.(check int) "mcfc=0" 0 decoded.header.mcfc 196 + 197 + (* Test: VCFC wraparound (8-bit, 255->0) *) 198 + let test_vcfc_wraparound () = 199 + let scid = Tm.scid_exn 1 in 200 + let vcid = Tm.vcid_exn 0 in 201 + let data = String.make 1103 '\x00' in 202 + (* vcfc = 255 (max 8-bit value) *) 203 + let frame_max = Tm.make ~scid ~vcid ~mcfc:0 ~vcfc:255 ~ocf:0 data in 204 + let encoded_max = Tm.encode frame_max in 205 + (match Tm.decode ~frame_len:(String.length encoded_max) encoded_max with 206 + | Error e -> Alcotest.failf "decode vcfc=255 failed: %a" Tm.pp_error e 207 + | Ok decoded -> Alcotest.(check int) "vcfc=255" 255 decoded.header.vcfc); 208 + (* vcfc = 0 (after wraparound) *) 209 + let frame_zero = Tm.make ~scid ~vcid ~mcfc:0 ~vcfc:0 ~ocf:0 data in 210 + let encoded_zero = Tm.encode frame_zero in 211 + match Tm.decode ~frame_len:(String.length encoded_zero) encoded_zero with 212 + | Error e -> Alcotest.failf "decode vcfc=0 failed: %a" Tm.pp_error e 213 + | Ok decoded -> Alcotest.(check int) "vcfc=0" 0 decoded.header.vcfc 214 + 179 215 let suite = 180 216 [ 181 217 ( "validation", ··· 203 239 [ 204 240 Alcotest.test_case "wire_roundtrip" `Quick test_wire_roundtrip; 205 241 Alcotest.test_case "wire_vs_manual" `Quick test_wire_vs_manual; 242 + ] ); 243 + ( "counter_wraparound", 244 + [ 245 + Alcotest.test_case "mcfc_wraparound" `Quick test_mcfc_wraparound; 246 + Alcotest.test_case "vcfc_wraparound" `Quick test_vcfc_wraparound; 206 247 ] ); 207 248 ]