# PLEASE DO NOT EDIT THIS CODE # This code was generated using the UMPLE 1.30.2.5248.dba0a5744 modeling language! # NOTE: Ruby generator is experimental and is missing some features available in # in other Umple generated languages like Java or PHP class Example < Mentor #------------------------ # CONSTRUCTOR #------------------------ def initialize(a_attr) super(a_attr) @initialized = false @deleted = false @initialized = true end #------------------------ # INTERFACE #------------------------ def get_attr # line 12 "RubyCodeInjectionTestSubclass.ump" #before getAttr # END OF UMPLE BEFORE INJECTION a_attr = super # line 17 "RubyCodeInjectionTestSubclass.ump" #after getAttr # END OF UMPLE AFTER INJECTION a_attr end def get_derivedAttr # line 13 "RubyCodeInjectionTestSubclass.ump" #before getDerivedAttr # END OF UMPLE BEFORE INJECTION a_derivedAttr = super # line 18 "RubyCodeInjectionTestSubclass.ump" #after getDerivedAttr # END OF UMPLE AFTER INJECTION a_derivedAttr end def get_listAttr(index) # line 14 "RubyCodeInjectionTestSubclass.ump" #before getListAttr # END OF UMPLE BEFORE INJECTION a_listAttr = super(index) # line 19 "RubyCodeInjectionTestSubclass.ump" #after getListAttr # END OF UMPLE AFTER INJECTION a_listAttr end def get_defaultedAttr # line 15 "RubyCodeInjectionTestSubclass.ump" #before getDefaultedAttr # END OF UMPLE BEFORE INJECTION a_defaultedAttr = super # line 20 "RubyCodeInjectionTestSubclass.ump" #after getDefaultedAttr # END OF UMPLE AFTER INJECTION a_defaultedAttr end def delete @deleted = true super end end # PLEASE DO NOT EDIT THIS CODE # This code was generated using the UMPLE 1.30.2.5248.dba0a5744 modeling language! # NOTE: Ruby generator is experimental and is missing some features available in # in other Umple generated languages like Java or PHP module Example class Student #------------------------ # MEMBER VARIABLES #------------------------ #Student Attributes - for documentation purposes #attr_reader :firstName, :lastName #------------------------ # CONSTRUCTOR #------------------------ def initialize(a_firstName, a_lastName) @initialized = false @deleted = false @firstName = a_firstName @lastName = a_lastName @initialized = true end #------------------------ # INTERFACE #------------------------ def set_firstName(a_firstName) was_set = false @firstName = a_firstName was_set = true was_set end def set_lastName(a_lastName) was_set = false @lastName = a_lastName was_set = true was_set end def get_firstName # line 8 "../CodeInjectionWildCardTest.ump" print "before"; # END OF UMPLE BEFORE INJECTION @firstName end def get_lastName # line 8 "../CodeInjectionWildCardTest.ump" print "before"; # END OF UMPLE BEFORE INJECTION @lastName end def delete @deleted = true end end end # PLEASE DO NOT EDIT THIS CODE # This code was generated using the UMPLE 1.30.2.5248.dba0a5744 modeling language! # NOTE: Ruby generator is experimental and is missing some features available in # in other Umple generated languages like Java or PHP class Student11 #------------------------ # MEMBER VARIABLES #------------------------ #Student11 Attributes - for documentation purposes #attr_reader :name, :b #------------------------ # CONSTRUCTOR #------------------------ def initialize(a_name, a_b) @initialized = false @deleted = false @name = a_name @b = a_b @initialized = true end #------------------------ # INTERFACE #------------------------ def set_name(a_name) was_set = false @name = a_name was_set = true # line 24 "toplevelCodeInjectionTest.ump" //doSomething1(); # END OF UMPLE AFTER INJECTION was_set end def set_b(a_b) was_set = false @b = a_b was_set = true # line 24 "toplevelCodeInjectionTest.ump" //doSomething1(); # END OF UMPLE AFTER INJECTION # line 49 "toplevelCodeInjectionTest.ump" //doSomething2(); # END OF UMPLE AFTER INJECTION was_set end def get_name @name end def get_b @b end def delete @deleted = true end end # PLEASE DO NOT EDIT THIS CODE # This code was generated using the UMPLE 1.30.2.5248.dba0a5744 modeling language! # NOTE: Ruby generator is experimental and is missing some features available in # in other Umple generated languages like Java or PHP module Example class Student #------------------------ # MEMBER VARIABLES #------------------------ #Student Attributes - for documentation purposes #attr_reader :id, :name, :type, :roles, :injBool #------------------------ # CONSTRUCTOR #------------------------ def initialize(a_name, a_injBool) @initialized = false @deleted = false # line 21 "../CodeInjectionTest.ump" print "before constructor"; # END OF UMPLE BEFORE INJECTION @id = nil @can_set_id = true @name = a_name reset_type @roles = [] @injBool = a_injBool # line 22 "../CodeInjectionTest.ump" print "after constructor"; # END OF UMPLE AFTER INJECTION @initialized = true end #------------------------ # INTERFACE #------------------------ def set_id(a_id) was_set = false # line 29 "../CodeInjectionTest.ump" print "start setId"; # END OF UMPLE BEFORE INJECTION return false unless @can_set_id @can_set_id = false @id = a_id was_set = true # line 30 "../CodeInjectionTest.ump" print "end setId"; # END OF UMPLE AFTER INJECTION was_set end def set_name(a_name) was_set = false # line 34 "../CodeInjectionTest.ump" print "start setName"; # END OF UMPLE BEFORE INJECTION # line 35 "../CodeInjectionTest.ump" print "start setName2"; # END OF UMPLE BEFORE INJECTION @name = a_name was_set = true # line 36 "../CodeInjectionTest.ump" print "end setName"; # END OF UMPLE AFTER INJECTION was_set end def set_type(a_type) was_set = false # line 40 "../CodeInjectionTest.ump" print "start setType"; # END OF UMPLE BEFORE INJECTION @type = a_type was_set = true # line 41 "../CodeInjectionTest.ump" print "end setType"; # END OF UMPLE AFTER INJECTION was_set end def reset_type wasReset = false # line 46 "../CodeInjectionTest.ump" print "start resetType"; # END OF UMPLE BEFORE INJECTION @type = get_default_type wasReset = true # line 47 "../CodeInjectionTest.ump" print "end resetType"; # END OF UMPLE AFTER INJECTION wasReset end def add_role(a_role) was_added = false # line 49 "../CodeInjectionTest.ump" print "start add"; # END OF UMPLE BEFORE INJECTION was_added = roles << a_role # line 50 "../CodeInjectionTest.ump" print "end add"; # END OF UMPLE AFTER INJECTION was_added end def remove_role(a_role) was_removed = false # line 51 "../CodeInjectionTest.ump" print "start remove"; # END OF UMPLE BEFORE INJECTION was_removed = roles.delete(a_role) # line 52 "../CodeInjectionTest.ump" print "end remove"; # END OF UMPLE AFTER INJECTION was_removed end def set_injBool(a_injBool) was_set = false @injBool = a_injBool was_set = true was_set end def get_id # line 31 "../CodeInjectionTest.ump" print "start getId"; # END OF UMPLE BEFORE INJECTION a_id = @id # line 32 "../CodeInjectionTest.ump" print "end getId"; # END OF UMPLE AFTER INJECTION a_id end def get_name # line 37 "../CodeInjectionTest.ump" print "start getName"; # END OF UMPLE BEFORE INJECTION a_name = @name # line 38 "../CodeInjectionTest.ump" print "end getName"; # END OF UMPLE AFTER INJECTION a_name end def get_type # line 42 "../CodeInjectionTest.ump" print "start getType"; # END OF UMPLE BEFORE INJECTION a_type = @type # line 43 "../CodeInjectionTest.ump" print "end getType"; # END OF UMPLE AFTER INJECTION a_type end def get_default_type # line 44 "../CodeInjectionTest.ump" print "start getDefaultType"; # END OF UMPLE BEFORE INJECTION a_type = "None" # line 45 "../CodeInjectionTest.ump" print "end getDefaultType"; # END OF UMPLE AFTER INJECTION a_type end def get_role(index) # line 53 "../CodeInjectionTest.ump" print "start getRole"; # END OF UMPLE BEFORE INJECTION a_role = roles[index] # line 54 "../CodeInjectionTest.ump" print "end getRole"; # END OF UMPLE AFTER INJECTION a_role end def get_roles # line 55 "../CodeInjectionTest.ump" print "start getRoles"; # END OF UMPLE BEFORE INJECTION String[] new_roles = roles.toArray(new String[roles.size]) # line 56 "../CodeInjectionTest.ump" print "end getRoles"; # END OF UMPLE AFTER INJECTION new_roles end def number_of_roles # line 57 "../CodeInjectionTest.ump" print "start numberOfRoles"; # END OF UMPLE BEFORE INJECTION number = roles.size # line 58 "../CodeInjectionTest.ump" print "end numberOfRoles"; # END OF UMPLE AFTER INJECTION number; end def has_roles has = roles.size > 0 has end def index_of_role(a_role) # line 59 "../CodeInjectionTest.ump" print "start indexOfRole"; # END OF UMPLE BEFORE INJECTION index = roles.index(a_role) index = -1 if index.nil? # line 60 "../CodeInjectionTest.ump" print "end indexOfRole"; # END OF UMPLE AFTER INJECTION index end def get_funName # line 24 "../CodeInjectionTest.ump" print "start funName"; # END OF UMPLE BEFORE INJECTION a_funName = name + "sillypans" # line 25 "../CodeInjectionTest.ump" print "end funName"; # END OF UMPLE AFTER INJECTION a_funName end def get_otherFunName # line 27 "../CodeInjectionTest.ump" print "This was so much fun"; # END OF UMPLE BEFORE INJECTION name + "Other Fun" end def get_injBool @injBool end def get_dInjBool 2/3 end def is_injBool? # line 15 "../CodeInjectionTest.ump" print "before injBool"; # END OF UMPLE BEFORE INJECTION a_injBool = @injBool # line 16 "../CodeInjectionTest.ump" print "after injBool"; # END OF UMPLE AFTER INJECTION a_injBool end def is_dInjBool? # line 18 "../CodeInjectionTest.ump" print "before dInjBool"; # END OF UMPLE BEFORE INJECTION a_dInjBool = 2/3 # line 19 "../CodeInjectionTest.ump" print "after dInjBool"; # END OF UMPLE AFTER INJECTION a_dInjBool end def delete @deleted = true # line 62 "../CodeInjectionTest.ump" print "start delete"; # END OF UMPLE BEFORE INJECTION # line 63 "../CodeInjectionTest.ump" print "after delete"; # END OF UMPLE AFTER INJECTION end def foo (a) System.out.println("This is great " + " I will return to this"); if(a == 3) # line 65 "../CodeInjectionTest.ump" print "Such fun!" # END OF UMPLE AFTER INJECTION return "4"; //Testing inline return // inject before return # line 65 "../CodeInjectionTest.ump" print "Such fun!" # END OF UMPLE AFTER INJECTION return ""; end end end # PLEASE DO NOT EDIT THIS CODE # This code was generated using the UMPLE 1.30.2.5248.dba0a5744 modeling language! # NOTE: Ruby generator is experimental and is missing some features available in # in other Umple generated languages like Java or PHP class Example #------------------------ # MEMBER VARIABLES #------------------------ #Example State Machines enum UNKNOWN ID: type { UNKNOWN ID: listStates } private UNKNOWN ID: type light; #------------------------ # CONSTRUCTOR #------------------------ def initialize() @initialized = false @deleted = false set_light(UNKNOWN ID: type.LightOn) @initialized = true end #------------------------ # INTERFACE #------------------------ public UNKNOWN ID: type get_light UNKNOWN ID: stateOne end def flip { wasEventProcessed = false; switch (light) { case LightOn: set_light(UNKNOWN ID: type.LightOff); wasEventProcessed = true break; case LightOff: set_light(UNKNOWN ID: type.LightOn); wasEventProcessed = true break; } return wasEventProcessed; } private void set_light(UNKNOWN ID: type a_light) { light = a_light } def delete @deleted = true end end # PLEASE DO NOT EDIT THIS CODE # This code was generated using the UMPLE 1.30.2.5248.dba0a5744 modeling language! # NOTE: Ruby generator is experimental and is missing some features available in # in other Umple generated languages like Java or PHP module Example class Student #------------------------ # MEMBER VARIABLES #------------------------ #Student Associations - for documentation purposes #attr_reader :m1, :m2, :m3s, :m4s, :m5s, :m6s #------------------------ # CONSTRUCTOR #------------------------ def initialize(a_m2, all_m3s, all_m4s, all_m5s) @initialized = false @deleted = false @m1 = nil @m2 = nil did_add_m2 = set_m2(a_m2) raise "Unable to create two due to @m2. See http://manual.umple.org?RE002ViolationofAssociationMultiplicity.html" unless did_add_m2 @m3s = [] did_add_m3s = set_m3s(all_m3s) raise "Unable to create Student, must have 1 to 3 @m3s. See http://manual.umple.org?RE002ViolationofAssociationMultiplicity.html" unless did_add_m3s @m4s = [] did_add_m4s = set_m4s(all_m4s) raise "Unable to create Student, must have 4 to 7 @m4s. See http://manual.umple.org?RE002ViolationofAssociationMultiplicity.html" unless did_add_m4s @m5s = [] did_add_m5s = set_m5s(all_m5s) raise "Unable to create Student, must have at least 2 @m5s. See http://manual.umple.org?RE002ViolationofAssociationMultiplicity.html" unless did_add_m5s @m6s = [] @initialized = true end #------------------------ # INTERFACE #------------------------ def get_m1 # line 13 "../CodeInjectionAssociationTest.ump" print "getM1"; # END OF UMPLE BEFORE INJECTION a_m1 = @m1 # line 57 "../CodeInjectionAssociationTest.ump" print "after getM1"; # END OF UMPLE AFTER INJECTION # line 57 "../CodeInjectionAssociationTest.ump" print "after getM1"; # END OF UMPLE AFTER INJECTION a_m1 end def has_m1 has = !@m1.nil? has end def get_m2 # line 14 "../CodeInjectionAssociationTest.ump" print "getM2"; # END OF UMPLE BEFORE INJECTION a_m2 = @m2 # line 58 "../CodeInjectionAssociationTest.ump" print "after getM2"; # END OF UMPLE AFTER INJECTION # line 58 "../CodeInjectionAssociationTest.ump" print "after getM2"; # END OF UMPLE AFTER INJECTION a_m2 end def get_m3(index) # line 15 "../CodeInjectionAssociationTest.ump" print "getM3"; # END OF UMPLE BEFORE INJECTION a_m3 = @m3s[index] # line 59 "../CodeInjectionAssociationTest.ump" print "after getM3"; # END OF UMPLE AFTER INJECTION a_m3 end def get_m3s # line 16 "../CodeInjectionAssociationTest.ump" print "getM3s"; # END OF UMPLE BEFORE INJECTION new_m3s = @m3s.dup # line 60 "../CodeInjectionAssociationTest.ump" print "after getM3s"; # END OF UMPLE AFTER INJECTION new_m3s end def number_of_m3s # line 17 "../CodeInjectionAssociationTest.ump" print "numberOfM3s"; # END OF UMPLE BEFORE INJECTION number = @m3s.size # line 61 "../CodeInjectionAssociationTest.ump" print "after numberOfM3s"; # END OF UMPLE AFTER INJECTION number end def has_m3s # line 18 "../CodeInjectionAssociationTest.ump" print "hasM3s"; # END OF UMPLE BEFORE INJECTION has = @m3s.size > 0 # line 62 "../CodeInjectionAssociationTest.ump" print "after hasM3s"; # END OF UMPLE AFTER INJECTION has end def index_of_m3(a_m3) # line 19 "../CodeInjectionAssociationTest.ump" print "indexOfM3"; # END OF UMPLE BEFORE INJECTION index = @m3s.index(a_m3) index = -1 if index.nil? # line 63 "../CodeInjectionAssociationTest.ump" print "after indexOfM3"; # END OF UMPLE AFTER INJECTION index end def get_m4(index) # line 20 "../CodeInjectionAssociationTest.ump" print "getM4"; # END OF UMPLE BEFORE INJECTION a_m4 = @m4s[index] # line 64 "../CodeInjectionAssociationTest.ump" print "after getM4"; # END OF UMPLE AFTER INJECTION a_m4 end def get_m4s # line 21 "../CodeInjectionAssociationTest.ump" print "getM4s"; # END OF UMPLE BEFORE INJECTION new_m4s = @m4s.dup # line 65 "../CodeInjectionAssociationTest.ump" print "after getM4s"; # END OF UMPLE AFTER INJECTION new_m4s end def number_of_m4s # line 22 "../CodeInjectionAssociationTest.ump" print "numberOfM4s"; # END OF UMPLE BEFORE INJECTION number = @m4s.size # line 66 "../CodeInjectionAssociationTest.ump" print "after numberOfM4s"; # END OF UMPLE AFTER INJECTION number end def has_m4s # line 23 "../CodeInjectionAssociationTest.ump" print "hasM4s"; # END OF UMPLE BEFORE INJECTION has = @m4s.size > 0 # line 67 "../CodeInjectionAssociationTest.ump" print "after hasM4s"; # END OF UMPLE AFTER INJECTION has end def index_of_m4(a_m4) # line 24 "../CodeInjectionAssociationTest.ump" print "indexOfM4"; # END OF UMPLE BEFORE INJECTION index = @m4s.index(a_m4) index = -1 if index.nil? # line 68 "../CodeInjectionAssociationTest.ump" print "after indexOfM4"; # END OF UMPLE AFTER INJECTION index end def get_m5(index) # line 25 "../CodeInjectionAssociationTest.ump" print "getM5"; # END OF UMPLE BEFORE INJECTION a_m5 = @m5s[index] # line 69 "../CodeInjectionAssociationTest.ump" print "after getM5"; # END OF UMPLE AFTER INJECTION a_m5 end def get_m5s # line 26 "../CodeInjectionAssociationTest.ump" print "getM5s"; # END OF UMPLE BEFORE INJECTION new_m5s = @m5s.dup # line 70 "../CodeInjectionAssociationTest.ump" print "after getM5s"; # END OF UMPLE AFTER INJECTION new_m5s end def number_of_m5s # line 27 "../CodeInjectionAssociationTest.ump" print "numberOfM5s"; # END OF UMPLE BEFORE INJECTION number = @m5s.size # line 71 "../CodeInjectionAssociationTest.ump" print "after numberOfM5s"; # END OF UMPLE AFTER INJECTION number end def has_m5s # line 28 "../CodeInjectionAssociationTest.ump" print "hasM5s"; # END OF UMPLE BEFORE INJECTION has = @m5s.size > 0 # line 72 "../CodeInjectionAssociationTest.ump" print "after hasM5s"; # END OF UMPLE AFTER INJECTION has end def index_of_m5(a_m5) # line 29 "../CodeInjectionAssociationTest.ump" print "indexOfM5"; # END OF UMPLE BEFORE INJECTION index = @m5s.index(a_m5) index = -1 if index.nil? # line 73 "../CodeInjectionAssociationTest.ump" print "after indexOfM5"; # END OF UMPLE AFTER INJECTION index end def get_m6(index) # line 30 "../CodeInjectionAssociationTest.ump" print "getM6"; # END OF UMPLE BEFORE INJECTION a_m6 = @m6s[index] # line 74 "../CodeInjectionAssociationTest.ump" print "after getM6"; # END OF UMPLE AFTER INJECTION a_m6 end def get_m6s # line 31 "../CodeInjectionAssociationTest.ump" print "getM6s"; # END OF UMPLE BEFORE INJECTION new_m6s = @m6s.dup # line 75 "../CodeInjectionAssociationTest.ump" print "after getM6s"; # END OF UMPLE AFTER INJECTION new_m6s end def number_of_m6s # line 32 "../CodeInjectionAssociationTest.ump" print "numberOfM6s"; # END OF UMPLE BEFORE INJECTION number = @m6s.size # line 76 "../CodeInjectionAssociationTest.ump" print "after numberOfM6s"; # END OF UMPLE AFTER INJECTION number end def has_m6s # line 33 "../CodeInjectionAssociationTest.ump" print "hasM6s"; # END OF UMPLE BEFORE INJECTION has = @m6s.size > 0 # line 77 "../CodeInjectionAssociationTest.ump" print "after hasM6s"; # END OF UMPLE AFTER INJECTION has end def index_of_m6(a_m6) # line 34 "../CodeInjectionAssociationTest.ump" print "indexOfM6"; # END OF UMPLE BEFORE INJECTION index = @m6s.index(a_m6) index = -1 if index.nil? # line 78 "../CodeInjectionAssociationTest.ump" print "after indexOfM6"; # END OF UMPLE AFTER INJECTION index end def set_m1(a_m1) was_set = false # line 35 "../CodeInjectionAssociationTest.ump" print "setM1"; # END OF UMPLE BEFORE INJECTION existing_m1 = @m1 @m1 = a_m1 if !existing_m1.nil? and !existing_m1.eql?(a_m1) existing_m1.remove_one(self) end unless a_m1.nil? a_m1.add_one(self) end was_set = true # line 79 "../CodeInjectionAssociationTest.ump" print "after setM1"; # END OF UMPLE AFTER INJECTION was_set end def set_m2(a_m2) was_set = false # line 36 "../CodeInjectionAssociationTest.ump" print "setM2"; # END OF UMPLE BEFORE INJECTION if a_m2.nil? # line 80 "../CodeInjectionAssociationTest.ump" print "after setM2"; # END OF UMPLE AFTER INJECTION return was_set end existing_m2 = @m2 @m2 = a_m2 if !existing_m2.nil? and !existing_m2.eql?(a_m2) existing_m2.remove_two(self) end @m2.add_two(self) was_set = true # line 80 "../CodeInjectionAssociationTest.ump" print "after setM2"; # END OF UMPLE AFTER INJECTION was_set end def is_number_of_m3s_valid # line 37 "../CodeInjectionAssociationTest.ump" print "isNumberOfM3sValid"; # END OF UMPLE BEFORE INJECTION is_valid = number_of_m3s >= Student.minimum_number_of_m3s and number_of_m3s <= Student.maximum_number_of_m3s # line 81 "../CodeInjectionAssociationTest.ump" print "after isNumberOfM3sValid"; # END OF UMPLE AFTER INJECTION is_valid end def self.minimum_number_of_m3s # line 38 "../CodeInjectionAssociationTest.ump" print "minimumNumberOfM3s"; # END OF UMPLE BEFORE INJECTION minimum = 1 # line 82 "../CodeInjectionAssociationTest.ump" print "after minimumNumberOfM3s"; # END OF UMPLE AFTER INJECTION minimum end def self.maximum_number_of_m3s # line 39 "../CodeInjectionAssociationTest.ump" print "maximumNumberOfM3s"; # END OF UMPLE BEFORE INJECTION maximum = 3 # line 83 "../CodeInjectionAssociationTest.ump" print "after maximumNumberOfM3s"; # END OF UMPLE AFTER INJECTION maximum end def add_m3(a_m3) was_added = false # line 40 "../CodeInjectionAssociationTest.ump" print "addM3"; # END OF UMPLE BEFORE INJECTION return false if index_of_m3(a_m3) != -1 if number_of_m3s >= Student.maximum_number_of_m3s # line 84 "../CodeInjectionAssociationTest.ump" print "after addM3"; # END OF UMPLE AFTER INJECTION return was_added end @m3s << a_m3 if a_m3.index_of_three(self) != -1 was_added = true else was_added = a_m3.add_three(self) unless was_added @m3s.delete(a_m3) end end # line 84 "../CodeInjectionAssociationTest.ump" print "after addM3"; # END OF UMPLE AFTER INJECTION was_added end def remove_m3(a_m3) was_removed = false # line 41 "../CodeInjectionAssociationTest.ump" print "before removeM3"; # END OF UMPLE BEFORE INJECTION unless @m3s.include?(a_m3) # line 85 "../CodeInjectionAssociationTest.ump" print "after removeM3"; # END OF UMPLE AFTER INJECTION return was_removed end if number_of_m3s <= Student.minimum_number_of_m3s # line 85 "../CodeInjectionAssociationTest.ump" print "after removeM3"; # END OF UMPLE AFTER INJECTION return was_removed end oldIndex = @m3s.index(a_m3) @m3s.delete_at(oldIndex) if a_m3.index_of_three(self) == -1 was_removed = true else was_removed = a_m3.remove_three(self) @m3s.insert(oldIndex,a_m3) unless was_removed end # line 85 "../CodeInjectionAssociationTest.ump" print "after removeM3"; # END OF UMPLE AFTER INJECTION was_removed end def set_m3s(new_m3s) was_set = false # line 42 "../CodeInjectionAssociationTest.ump" print "setM3s"; # END OF UMPLE BEFORE INJECTION verified_m3s = [] new_m3s.each do |a_m3| next if (verified_m3s.include?(a_m3)) verified_m3s << a_m3 end if verified_m3s.size != new_m3s.length or verified_m3s.size < Student.minimum_number_of_m3s or verified_m3s.size() > Student.maximum_number_of_m3s # line 86 "../CodeInjectionAssociationTest.ump" print "after setM3s"; # END OF UMPLE AFTER INJECTION return was_set end old_m3s = @m3s.dup @m3s.clear verified_m3s.each do |a_new_m3| @m3s << a_new_m3 if old_m3s.include?(a_new_m3) old_m3s.delete(a_new_m3) else a_new_m3.add_three(self) end end old_m3s.each do |an_old_m3| an_old_m3.remove_three(self) end was_set = true # line 86 "../CodeInjectionAssociationTest.ump" print "after setM3s"; # END OF UMPLE AFTER INJECTION was_set end def add_m3_at(a_m3, index) was_added = false if add_m3(a_m3) if(index < 0) index = 0 end if(index > number_of_m3s()) index = number_of_m3s() - 1 end @m3s.delete(a_m3) @m3s.insert(index, a_m3) was_added = true end was_added end def add_or_move_m3_at(a_m3, index) was_added = false if @m3s.include?(a_m3) if(index < 0) index = 0 end if(index > number_of_m3s()) index = number_of_m3s() - 1 end @m3s.delete(a_m3) @m3s.insert(index, a_m3) was_added = true else was_added = add_m3_at(a_m3, index) end was_added end def is_number_of_m4s_valid # line 43 "../CodeInjectionAssociationTest.ump" print "isNumberOfM4sValid"; # END OF UMPLE BEFORE INJECTION is_valid = number_of_m4s >= Student.minimum_number_of_m4s and number_of_m4s <= Student.maximum_number_of_m4s # line 87 "../CodeInjectionAssociationTest.ump" print "after isNumberOfM4sValid"; # END OF UMPLE AFTER INJECTION is_valid end def self.minimum_number_of_m4s # line 44 "../CodeInjectionAssociationTest.ump" print "minimumNumberOfM4s"; # END OF UMPLE BEFORE INJECTION minimum = 4 # line 88 "../CodeInjectionAssociationTest.ump" print "after minimumNumberOfM4s"; # END OF UMPLE AFTER INJECTION minimum end def self.maximum_number_of_m4s # line 45 "../CodeInjectionAssociationTest.ump" print "maximumNumberOfM4s"; # END OF UMPLE BEFORE INJECTION maximum = 7 # line 89 "../CodeInjectionAssociationTest.ump" print "after maximumNumberOfM4s"; # END OF UMPLE AFTER INJECTION maximum end def add_m4(a_m4) was_added = false # line 46 "../CodeInjectionAssociationTest.ump" print "addM4"; # END OF UMPLE BEFORE INJECTION return false if index_of_m4(a_m4) != -1 if number_of_m4s >= Student.maximum_number_of_m4s # line 90 "../CodeInjectionAssociationTest.ump" print "after addM4"; # END OF UMPLE AFTER INJECTION return was_added end @m4s << a_m4 if a_m4.index_of_four(self) != -1 was_added = true else was_added = a_m4.add_four(self) unless was_added @m4s.delete(a_m4) end end # line 90 "../CodeInjectionAssociationTest.ump" print "after addM4"; # END OF UMPLE AFTER INJECTION was_added end def remove_m4(a_m4) was_removed = false # line 47 "../CodeInjectionAssociationTest.ump" print "removeM4"; # END OF UMPLE BEFORE INJECTION unless @m4s.include?(a_m4) # line 91 "../CodeInjectionAssociationTest.ump" print "after removeM4"; # END OF UMPLE AFTER INJECTION return was_removed end if number_of_m4s <= Student.minimum_number_of_m4s # line 91 "../CodeInjectionAssociationTest.ump" print "after removeM4"; # END OF UMPLE AFTER INJECTION return was_removed end oldIndex = @m4s.index(a_m4) @m4s.delete_at(oldIndex) if a_m4.index_of_four(self) == -1 was_removed = true else was_removed = a_m4.remove_four(self) @m4s.insert(oldIndex,a_m4) unless was_removed end # line 91 "../CodeInjectionAssociationTest.ump" print "after removeM4"; # END OF UMPLE AFTER INJECTION was_removed end def set_m4s(new_m4s) was_set = false # line 48 "../CodeInjectionAssociationTest.ump" print "setM4s"; # END OF UMPLE BEFORE INJECTION verified_m4s = [] new_m4s.each do |a_m4| next if (verified_m4s.include?(a_m4)) verified_m4s << a_m4 end if verified_m4s.size != new_m4s.length or verified_m4s.size < Student.minimum_number_of_m4s or verified_m4s.size() > Student.maximum_number_of_m4s # line 92 "../CodeInjectionAssociationTest.ump" print "after setM4s"; # END OF UMPLE AFTER INJECTION return was_set end old_m4s = @m4s.dup @m4s.clear verified_m4s.each do |a_new_m4| @m4s << a_new_m4 if old_m4s.include?(a_new_m4) old_m4s.delete(a_new_m4) else a_new_m4.add_four(self) end end old_m4s.each do |an_old_m4| an_old_m4.remove_four(self) end was_set = true # line 92 "../CodeInjectionAssociationTest.ump" print "after setM4s"; # END OF UMPLE AFTER INJECTION was_set end def add_m4_at(a_m4, index) was_added = false if add_m4(a_m4) if(index < 0) index = 0 end if(index > number_of_m4s()) index = number_of_m4s() - 1 end @m4s.delete(a_m4) @m4s.insert(index, a_m4) was_added = true end was_added end def add_or_move_m4_at(a_m4, index) was_added = false if @m4s.include?(a_m4) if(index < 0) index = 0 end if(index > number_of_m4s()) index = number_of_m4s() - 1 end @m4s.delete(a_m4) @m4s.insert(index, a_m4) was_added = true else was_added = add_m4_at(a_m4, index) end was_added end def is_number_of_m5s_valid # line 49 "../CodeInjectionAssociationTest.ump" print "isNumberOfM5sValid"; # END OF UMPLE BEFORE INJECTION is_valid = number_of_m5s >= Student.minimum_number_of_m5s # line 93 "../CodeInjectionAssociationTest.ump" print "after isNumberOfM5sValid"; # END OF UMPLE AFTER INJECTION is_valid end def self.minimum_number_of_m5s # line 50 "../CodeInjectionAssociationTest.ump" print "minimumNumberOfM5s"; # END OF UMPLE BEFORE INJECTION minimum = 2 # line 94 "../CodeInjectionAssociationTest.ump" print "after minimumNumberOfM5s"; # END OF UMPLE AFTER INJECTION minimum end def add_m5(a_m5) was_added = false # line 51 "../CodeInjectionAssociationTest.ump" print "addM5"; # END OF UMPLE BEFORE INJECTION return false if index_of_m5(a_m5) != -1 @m5s << a_m5 if a_m5.index_of_five(self) != -1 was_added = true else was_added = a_m5.add_five(self) unless was_added @m5s.delete(a_m5) end end # line 95 "../CodeInjectionAssociationTest.ump" print "after addM5"; # END OF UMPLE AFTER INJECTION was_added end def remove_m5(a_m5) was_removed = false # line 52 "../CodeInjectionAssociationTest.ump" print "removeM5"; # END OF UMPLE BEFORE INJECTION unless @m5s.include?(a_m5) # line 96 "../CodeInjectionAssociationTest.ump" print "after removeM5"; # END OF UMPLE AFTER INJECTION return was_removed end if number_of_m5s <= Student.minimum_number_of_m5s # line 96 "../CodeInjectionAssociationTest.ump" print "after removeM5"; # END OF UMPLE AFTER INJECTION return was_removed end oldIndex = @m5s.index(a_m5) @m5s.delete_at(oldIndex) if a_m5.index_of_five(self) == -1 was_removed = true else was_removed = a_m5.remove_five(self) @m5s.insert(oldIndex,a_m5) unless was_removed end # line 96 "../CodeInjectionAssociationTest.ump" print "after removeM5"; # END OF UMPLE AFTER INJECTION was_removed end def set_m5s(new_m5s) was_set = false # line 53 "../CodeInjectionAssociationTest.ump" print "setM5s"; # END OF UMPLE BEFORE INJECTION verified_m5s = [] new_m5s.each do |a_m5| next if (verified_m5s.include?(a_m5)) verified_m5s << a_m5 end if verified_m5s.size != new_m5s.size or verified_m5s.size < Student.minimum_number_of_m5s # line 97 "../CodeInjectionAssociationTest.ump" print "after setM5s"; # END OF UMPLE AFTER INJECTION return was_set end old_m5s = @m5s.dup @m5s.clear verified_m5s.each do |a_new_m5| @m5s << a_new_m5 if old_m5s.include?(a_new_m5) old_m5s.delete(a_new_m5) else a_new_m5.add_five(self) end end old_m5s.each do |an_old_m5| an_old_m5.remove_five(self) end was_set = true # line 97 "../CodeInjectionAssociationTest.ump" print "after setM5s"; # END OF UMPLE AFTER INJECTION was_set end def add_m5_at(a_m5, index) was_added = false if add_m5(a_m5) if(index < 0) index = 0 end if(index > number_of_m5s()) index = number_of_m5s() - 1 end @m5s.delete(a_m5) @m5s.insert(index, a_m5) was_added = true end was_added end def add_or_move_m5_at(a_m5, index) was_added = false if @m5s.include?(a_m5) if(index < 0) index = 0 end if(index > number_of_m5s()) index = number_of_m5s() - 1 end @m5s.delete(a_m5) @m5s.insert(index, a_m5) was_added = true else was_added = add_m5_at(a_m5, index) end was_added end def self.minimum_number_of_m6s 0 end def add_m6(a_m6) was_added = false # line 54 "../CodeInjectionAssociationTest.ump" print "addM6"; # END OF UMPLE BEFORE INJECTION return false if index_of_m6(a_m6) != -1 @m6s << a_m6 if a_m6.index_of_six(self) != -1 was_added = true else was_added = a_m6.add_six(self) unless was_added @m6s.delete(a_m6) end end # line 98 "../CodeInjectionAssociationTest.ump" print "after addM6"; # END OF UMPLE AFTER INJECTION was_added end def remove_m6(a_m6) was_removed = false # line 55 "../CodeInjectionAssociationTest.ump" print "removeM6"; # END OF UMPLE BEFORE INJECTION unless @m6s.include?(a_m6) # line 99 "../CodeInjectionAssociationTest.ump" print "after removeM6"; # END OF UMPLE AFTER INJECTION return was_removed end oldIndex = @m6s.index(a_m6) @m6s.delete_at(oldIndex) if a_m6.index_of_six(self) == -1 was_removed = true else was_removed = a_m6.remove_six(self) @m6s.insert(oldIndex,a_m6) unless was_removed end # line 99 "../CodeInjectionAssociationTest.ump" print "after removeM6"; # END OF UMPLE AFTER INJECTION was_removed end def add_m6_at(a_m6, index) was_added = false if add_m6(a_m6) if(index < 0) index = 0 end if(index > number_of_m6s()) index = number_of_m6s() - 1 end @m6s.delete(a_m6) @m6s.insert(index, a_m6) was_added = true end was_added end def add_or_move_m6_at(a_m6, index) was_added = false if @m6s.include?(a_m6) if(index < 0) index = 0 end if(index > number_of_m6s()) index = number_of_m6s() - 1 end @m6s.delete(a_m6) @m6s.insert(index, a_m6) was_added = true else was_added = add_m6_at(a_m6, index) end was_added end def delete @deleted = true unless @m1.nil? @m1.remove_one(self) end @placeholder_m2 = @m2 @m2 = nil @placeholder_m2.remove_two(self) copy_of_m3s = @m3s.dup @m3s.clear copy_of_m3s.each do |a_m3| a_m3.remove_three(self) end copy_of_m4s = @m4s.dup @m4s.clear copy_of_m4s.each do |a_m4| a_m4.remove_four(self) end copy_of_m5s = @m5s.dup @m5s.clear copy_of_m5s.each do |a_m5| a_m5.remove_five(self) end copy_of_m6s = @m6s.dup @m6s.clear copy_of_m6s.each do |a_m6| a_m6.remove_six(self) end end end end