pub type Door{ locked: Bool, hinge_angle: Int } pub type Car{ owner: ByteArray, wheels: Int, door: Door, vin: ByteArray, } pub fn update_owner(new_owner: ByteArray, car: Car){ Car{..car, owner: new_owner} } pub fn update_vin(new_vin: ByteArray, car: Car){ Car{..car, vin: new_vin} } pub fn update_door_angle(new_hinge_angle: Int, car: Car){ Car{..car, door: Door{..car.door, hinge_angle: new_hinge_angle}} } pub fn update_door_locked_and_wheels(new_locked: Bool, new_wheels: Int, car: Car){ Car{..car, door: Door{..car.door, locked: new_locked}, wheels: new_wheels} } test update_owner1(){ let initial_car = Car{owner: #[], wheels: 4, vin: #[1,1,1,1,1,1,1], door: Door{locked: False, hinge_angle: 45}} let final_car = Car{owner: #[244, 244, 244, 244], wheels: 4, vin: #[1,1,1,1,1,1,1], door: Door{locked: False, hinge_angle: 45}} update_owner(#[244, 244, 244, 244], initial_car) == final_car } test update_vin1(){ let initial_car = Car{owner: #[], wheels: 4, vin: #[1,1,1,1,1,1,1], door: Door{locked: False, hinge_angle: 45}} let final_car = Car{owner: #[], wheels: 4, vin: #[2,2,2,2,2,2,2,2,2], door: Door{locked: False, hinge_angle: 45}} update_vin(#[2,2,2,2,2,2,2,2,2], initial_car) == final_car } test update_door_angle1(){ let initial_car = Car{owner: #[], wheels: 4, vin: #[1,1,1,1,1,1,1], door: Door{locked: False, hinge_angle: 45}} let final_car = Car{owner: #[], wheels: 4, vin: #[1,1,1,1,1,1,1], door: Door{locked: False, hinge_angle: 90}} update_door_angle(90, initial_car) == final_car } test update_door_locked_and_wheels1(){ let initial_car = Car{owner: #[], wheels: 4, vin: #[1,1,1,1,1,1,1], door: Door{locked: False, hinge_angle: 45}} let final_car = Car{owner: #[], wheels: 5, vin: #[1,1,1,1,1,1,1], door: Door{locked: True, hinge_angle: 45}} update_door_locked_and_wheels(True, 5, initial_car) == final_car }