public void CanAddElement() { PinballMachine pbm = new PinballMachine(); Flipper flipper = new LeftFlipper() { X = 5, Y = 5 }; pbm.Add(flipper); Assert.IsTrue(pbm.Elements.Contains(flipper)); }
public void CanSerializeTwiceIntoSameFile() { // Arrange var mShorter = new PinballMachine(); var mLonger = new PinballMachine(); string file = Path.GetTempFileName(); mLonger.Add(new Bumper()); // Act mLonger.Save(file); mShorter.Save(file); var newMachine = PinballMachine.FromFile(file); Assert.IsTrue(newMachine.IsValid()); }
public void CanSerializeWithUserObject() { PinballMachine pbm = new PinballMachine(); PinballMachine pbm2; Flipper flipper = new LeftFlipper() { X = 5, Y = 5 }; Stream stream = new MemoryStream(); pbm.Add(flipper); pbm.Save(stream); stream.Position = 0; pbm2 = PinballMachine.FromStream(stream); Assert.AreEqual(1, pbm2.DynamicElements.Count); Assert.AreEqual(flipper.X, pbm2.DynamicElements.Last().X, 0.1); Assert.AreEqual(flipper.Y, pbm2.DynamicElements.Last().Y, 0.1); }
public void ShouldMaintainCorrectRelationship() { var machine = new PinballMachine(); var flipper = new LeftFlipper(); Assert.IsNull(flipper.World); machine.Add(flipper); Assert.AreEqual(machine, flipper.World); machine.Remove(flipper); Assert.IsNull(flipper.World); }
public void ShouldDeepCloneReferences() { var machine = new PinballMachine(); var element = new Bumper(); var entry = new HighscoreEntry("Simon", 1, DateTime.Now); machine.Add(element); machine.Highscores.Add(entry); var copy = machine.Clone() as PinballMachine; Assert.AreNotSame(copy, machine); Assert.AreNotSame(copy.Balls, machine.Balls); Assert.AreNotSame(copy.Highscores, machine.Highscores); Assert.AreNotSame(copy.Highscores.First(), machine.Highscores.First()); Assert.AreNotSame(copy.Layout, machine.Layout); }
public void ShouldBeValidForParallelLines() { var machine = new PinballMachine(); var line1 = new Line(100, 100, 100, 200); var line2 = new Line(105, 100, 105, 200); machine.Add(line1); machine.Add(line2); Assert.IsTrue(machine.IsValid()); }
public void ShouldBeInvalidForCrossingLines() { var machine = new PinballMachine(); var line1 = new Line(100, 100, 100, 200); var line2 = new Line(50, 150, 150, 150); machine.Add(line1); machine.Add(line2); Assert.IsFalse(machine.IsValid()); }