public void AddTwoZimmerToHotel() { Hotel hotel1 = new Hotel() { Name = "Hotel#1" }; Assert.IsTrue(hotel1.Zimmer.Count == 0); Zimmer zimmer1 = new Zimmer(hotel1) { Name = "Zimmer#1" }; Assert.IsTrue(hotel1.Zimmer.Count == 1); Assert.IsTrue(zimmer1.Hotel == hotel1); Zimmer zimmer2 = hotel1.AddZimmer(hotel1); Assert.IsTrue(hotel1.Zimmer.Count == 2); Assert.IsTrue(hotel1.Zimmer[0] == zimmer1); Assert.IsTrue(hotel1.Zimmer[1] == zimmer2); Assert.IsTrue(zimmer1.Hotel == hotel1); Assert.IsTrue(zimmer2.Hotel == hotel1); }
public void AddOneZimmerToHotelThenRemoveItThenAddAnotherOne2() { Hotel hotel1 = new Hotel() { Name = "Hotel#1" }; Assert.IsTrue(hotel1.Zimmer.Count == 0); Zimmer zimmer1 = new Zimmer(hotel1) { Name = "Zimmer#1" }; Assert.IsTrue(hotel1.Zimmer.Count == 1); Assert.IsTrue(hotel1.Zimmer[0] == zimmer1); Assert.IsTrue(zimmer1.Hotel == hotel1); hotel1.RemoveZimmer(zimmer1); Assert.IsTrue(hotel1.Zimmer.Count == 0); Assert.IsNull(zimmer1.Hotel); Zimmer zimmer2 = new Zimmer(hotel1) { Name = "Zimmer#2" }; Assert.IsTrue(hotel1.Zimmer.Count == 1); Assert.IsTrue(hotel1.Zimmer[0] == zimmer2); Assert.IsTrue(zimmer2.Hotel == hotel1); }
public void InitZimmerAloneShouldThrowException() { string zimmerName = "ZimmerName"; Zimmer zimmer1 = new Zimmer(null) { Name = zimmerName }; Assert.IsTrue(zimmer1.Name == zimmerName); Assert.IsNull(zimmer1.Hotel); }
public void RemoveZimmer(Zimmer zimmer) { if (_zimmer.Contains(zimmer)) { FieldInfo field = this.GetType().GetField("_zimmer", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); Multiplicity multiplicity = field.GetCustomAttributes(typeof(Multiplicity), false).FirstOrDefault() as Multiplicity; if (CheckMultiplicity(multiplicity, _zimmer.Count - 1)) { _zimmer.Remove(zimmer); } else { throw new UMLOutOfBoundsException((_zimmer.Count - 1) + " out of bounds: " + multiplicity.Value); } zimmer.NotifyChanges(this, zimmer, _zimmer, UMLNotficationType.DELETE, field.GetCustomAttributes(typeof(ConnectedWithRole), false).Select(x => x as ConnectedWithRole).ToList()); } }
//public void AddZimmer(Zimmer zimmer) //{ // FieldInfo field = this.GetType().GetField("_zimmer", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); // HashSet<Zimmer> oldValue = new HashSet<Zimmer>(_zimmer); // _zimmer.Add(zimmer); // //bei 1-n Beziehung --> UMLNotficationType.SET // zimmer.NotifyChanges(this, oldValue, _zimmer, UMLNotficationType.SET, field.GetCustomAttributes(typeof(ConnectedWithRole), false).Select(x => x as ConnectedWithRole).ToList()); //} public Zimmer AddZimmer(Hotel hotel) { Zimmer ret = null; FieldInfo field = this.GetType().GetField("_zimmer", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); Multiplicity multiplicity = field.GetCustomAttributes(typeof(Multiplicity), false).FirstOrDefault() as Multiplicity; if (CheckMultiplicity(multiplicity, _zimmer.Count + 1)) { ret = new Zimmer(hotel); _zimmer.Add(ret); } else { throw new UMLOutOfBoundsException((_zimmer.Count + 1) + " out of bounds: " + multiplicity.Value); } return(ret); }
public void AddOneZimmerToHotelThenRemoveAWrongOne() { Hotel hotel1 = new Hotel() { Name = "Hotel#1" }; Assert.IsTrue(hotel1.Zimmer.Count == 0); Hotel hotel2 = new Hotel() { Name = "Hotel#2" }; Assert.IsTrue(hotel2.Zimmer.Count == 0); Zimmer zimmer1 = new Zimmer(hotel1) { Name = "Zimmer#1" }; Assert.IsTrue(hotel1.Zimmer.Count == 1); Assert.IsTrue(hotel1.Zimmer[0] == zimmer1); Assert.IsTrue(zimmer1.Hotel == hotel1); Zimmer zimmer2 = new Zimmer(hotel2) { Name = "Zimmer#2" }; Assert.IsTrue(hotel2.Zimmer.Count == 1); Assert.IsTrue(hotel2.Zimmer[0] == zimmer2); Assert.IsTrue(zimmer2.Hotel == hotel2); hotel1.RemoveZimmer(zimmer2); Assert.IsTrue(hotel1.Zimmer.Count == 1); Assert.IsTrue(hotel1.Zimmer[0] == zimmer1); Assert.IsTrue(zimmer1.Hotel == hotel1); Assert.IsTrue(hotel2.Zimmer.Count == 1); Assert.IsTrue(hotel2.Zimmer[0] == zimmer2); Assert.IsTrue(zimmer2.Hotel == hotel2); }