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 }