authority_sim.mojo (1178B)
1 from std.collections import List 2 3 4 @fieldwise_init 5 struct AuthoritySimulation(Copyable, Movable): 6 var accepted_changes: Int 7 var requires_confirmation: Bool 8 var applied_revisions: List[String] 9 var duplicate_rejections: Int 10 var stale_rejections: Int 11 var hyf_business_writes: Int 12 13 14 def new_authority_simulation() -> AuthoritySimulation: 15 return AuthoritySimulation( 16 accepted_changes=0, 17 requires_confirmation=True, 18 applied_revisions=List[String](), 19 duplicate_rejections=0, 20 stale_rejections=0, 21 hyf_business_writes=0, 22 ) 23 24 25 def apply_expected_version( 26 mut simulation: AuthoritySimulation, 27 source_revision: String, 28 expected_revision: String, 29 current_revision: String, 30 ) raises: 31 if expected_revision != current_revision: 32 simulation.stale_rejections += 1 33 raise Error("stale_acceptance") 34 for applied in simulation.applied_revisions: 35 if applied == source_revision: 36 simulation.duplicate_rejections += 1 37 raise Error("duplicate_acceptance") 38 simulation.applied_revisions.append(String(source_revision)) 39 simulation.accepted_changes += 1