simple_vector.adl
1 /* 2 seed = 987654321 3 min_height = 16 4 5 [case] 6 program = "test.alpha" 7 function = "test_vector_ops" 8 input = [] 9 private_key = "APrivateKey1zkpH5Ne1Xfd79t61VhK7b6yaYz92yW5dbuVkiFheR7rwCDE" 10 */ 11 12 program test.alpha { 13 storage vec: [u32]; 14 15 async transition test_vector_ops() -> Future { 16 return async { 17 // Initialize: ensure empty 18 assert(vec.len() == 0); 19 20 // Push elements 21 vec.push(10); 22 vec.push(20); 23 vec.push(30); 24 assert(vec.len() == 3); 25 26 // Get element at index 1 (should be 20) 27 let val = vec.get(1).unwrap(); 28 assert(val == 20); 29 30 // Set index 1 to 25 31 vec.set(1, 25); 32 let updated_val = vec.get(1).unwrap(); 33 assert(updated_val == 25); 34 35 // Before: vec = [10, 25, 30] 36 // After: vec = [30, 25] and removed = 10 37 let removed_non_last = vec.swap_remove(0); 38 assert(removed_non_last == 10); 39 assert(vec.len() == 2); 40 41 // Verify that the last element (30) replaced index 0 42 let first_elem = vec.get(0).unwrap(); 43 assert(first_elem == 30); 44 let second_elem = vec.get(1).unwrap(); 45 assert(second_elem == 25); 46 47 // Pop last element (should be 25 now) 48 let popped = vec.pop().unwrap(); 49 assert(popped == 25); 50 assert(vec.len() == 1); 51 52 // Clear 53 vec.clear(); 54 assert(vec.len() == 0); 55 56 // Pop an empty vector 57 assert(vec.pop() == none); 58 59 vec.push(99); 60 assert(vec.len() == 1); 61 62 // Single-element swap_remove(0) 63 // Should remove the only element, returning 99 64 let removed_single = vec.swap_remove(0); 65 assert(removed_single == 99); 66 assert(vec.len() == 0); 67 }; 68 } 69 70 @noupgrade 71 async constructor() {} 72 }