Skip to content

collect reject RoyalandLoyal

 <details key="invariant_Customer9" value="self.memberships->collect( i_Membership : Membership | i_Membership.account )->reject(i_LoyaltyAccount : LoyaltyAccount | not (i_LoyaltyAccount.points      > 0))->size() = 0"/>

Genera

 invariant5 = context _Customer [invariant_Customer9]
 invariant_Customer9 self = ((((ocl self |.| memberships' |->| collect(\i_Membership -> ocl i_Membership |.|     account)) |->| reject(\i_LoyaltyAccount -> (notOCL ((ocl i_LoyaltyAccount |.| points') |>| (oclInt 0))))) |->|  size)) |==| (oclInt 0)

Valida true en el siguiente modelo donde hay points = 0

 example = Model [
       (ModelElement 0 (RootCh (Root [1] [2] [3] [4, 5] [6, 7] [8, 9] [10, 11] [12, 13] [14, 15]  )))
     , (ModelElement 1 (LoyaltyProgramCh (LoyaltyProgram "Programa1" [3] [6, 7] [10, 11]  )))
     , (ModelElement 2 (CustomerCh (Customer "Edward" "Mr." True 20 [6, 7] [4, 5]  )))
     , (ModelElement 3 (ProgramPartnerCh (ProgramPartner 1 "Partner1" [1] [8, 9]  )))
     , (ModelElement 4 (CustomerCardCh (CustomerCard True "Tarjeta1Cliente1" 2 6 [14]  )))
     , (ModelElement 5 (CustomerCardCh (CustomerCard True "Tarejeta2Cliete1" 2 7 [15]  )))
     , (ModelElement 6 (MembershipCh (Membership 11 4 [12] 1 2  )))
     , (ModelElement 7 (MembershipCh (Membership 10 5 [13] 1 2  )))
     , (ModelElement 8 (ServiceCh (Service True 1000 1000 "Service1 cliente1" 9000 3 11 [15]  )))
     , (ModelElement 9 (ServiceCh (Service True 0 0 "servicio2Cliente1" 0 3 10 [14]  )))
     , (ModelElement 10 (ServiceLevelCh (ServiceLevel "Silver" 1 [7] [9]  )))
     , (ModelElement 11 (ServiceLevelCh (ServiceLevel "Gold" 1 [6] [8]  )))
     , (ModelElement 12 (LoyaltyAccountCh (LoyaltyAccount 0 1 [14] 6  )))
     , (ModelElement 13 (LoyaltyAccountCh (LoyaltyAccount 1000 2 [15] 7  )))
     , (ModelElement 14 (TransactionCh (Transaction 1000 1000.0  4 12 9  (Just (EarningCh (Earning  ))))))
     , (ModelElement 15 (TransactionCh (Transaction 2000 0.0  5 13 8  (Just (EarningCh (Earning  ))))))
     ]