MCPcopy Create free account
hub / github.com/NodeDB-Lab/nodedb / encode_basic_row

Function encode_basic_row

nodedb-strict/src/encode.rs:356–384  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

354
355 #[test]
356 fn encode_basic_row() {
357 let schema = crm_schema();
358 let encoder = TupleEncoder::new(&schema);
359
360 let values = vec![
361 Value::Integer(42),
362 Value::String("Alice".into()),
363 Value::String("alice@example.com".into()),
364 Value::Decimal(rust_decimal::Decimal::new(5000, 2)),
365 Value::Bool(true),
366 ];
367
368 let tuple = encoder.encode(&values).unwrap();
369
370 // Header: magic(4) + format_version(1) + schema_version(4) + null_bitmap(1) = 10 bytes
371 // magic = 0x5453_444E "NDST" LE
372 assert_eq!(&tuple[0..4], &0x5453_444Eu32.to_le_bytes()); // magic
373 assert_eq!(tuple[4], 1); // format_version
374 assert_eq!(tuple[5], 1); // schema version low byte = 1
375 assert_eq!(tuple[6], 0); // schema version byte 1
376 assert_eq!(tuple[7], 0); // schema version byte 2
377 assert_eq!(tuple[8], 0); // schema version byte 3
378 assert_eq!(tuple[9], 0); // null bitmap: no nulls
379
380 // Fixed section: Int64(8) + Decimal(16) + Bool(1) = 25 bytes
381 // Starting at offset 10
382 let id_bytes = &tuple[10..18];
383 assert_eq!(i64::from_le_bytes(id_bytes.try_into().unwrap()), 42);
384 }
385
386 #[test]
387 fn encode_with_nulls() {

Callers

nothing calls this directly

Calls 2

crm_schemaFunction · 0.70
encodeMethod · 0.45

Tested by

no test coverage detected