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