/ tests / tests / compiler / core / algorithms / serialize_primitives.adl
serialize_primitives.adl
 1  /*
 2  namespace: Compile
 3  expectation: Pass
 4  */
 5  
 6  program test.alpha {
 7      // Test Serialize::to_bits on all primitive types
 8      transition main(
 9          addr: address,
10          b: bool,
11          f: field,
12          g: group,
13          i8_val: i8,
14          i16_val: i16,
15          i32_val: i32,
16          i64_val: i64,
17          i128_val: i128,
18          u8_val: u8,
19          u16_val: u16,
20          u32_val: u32,
21          u64_val: u64,
22          u128_val: u128,
23          s: scalar
24      ) -> (
25          bool, bool, bool, bool,  // Sample bits from address
26          bool, bool, bool, bool,  // Sample bits from integers
27          bool, bool, bool, bool,  // Sample bits from field/group
28          bool, bool, bool, bool   // Sample bits from scalar and bool
29      ) {
30          // Serialize primitives to bits (non-raw includes metadata)
31          let addr_bits: [bool; 279] = Serialize::to_bits(addr);
32          let bool_bits: [bool; 27] = Serialize::to_bits(b);
33          let field_bits: [bool; 279] = Serialize::to_bits(f);
34          let group_bits: [bool; 279] = Serialize::to_bits(g);
35          let i8_bits: [bool; 34] = Serialize::to_bits(i8_val);
36          let i16_bits: [bool; 42] = Serialize::to_bits(i16_val);
37          let i32_bits: [bool; 58] = Serialize::to_bits(i32_val);
38          let i64_bits: [bool; 90] = Serialize::to_bits(i64_val);
39          let i128_bits: [bool; 154] = Serialize::to_bits(i128_val);
40          let u8_bits: [bool; 34] = Serialize::to_bits(u8_val);
41          let u16_bits: [bool; 42] = Serialize::to_bits(u16_val);
42          let u32_bits: [bool; 58] = Serialize::to_bits(u32_val);
43          let u64_bits: [bool; 90] = Serialize::to_bits(u64_val);
44          let u128_bits: [bool; 154] = Serialize::to_bits(u128_val);
45          let scalar_bits: [bool; 277] = Serialize::to_bits(s);
46  
47          // Sample bits from each serialization
48          return (
49              addr_bits[0u8], addr_bits[100u8], addr_bits[200u8], addr_bits[278u16],
50              i8_bits[0u8], i32_bits[16u8], i64_bits[32u8], i128_bits[64u8],
51              field_bits[0u8], field_bits[128u8], group_bits[0u8], group_bits[278u16],
52              scalar_bits[0u8], u8_bits[0u8], u64_bits[0u8], bool_bits[0u8]
53          );
54      }
55  }