コード例 #1
0
        public void CanAddElement()
        {
            PinballMachine pbm = new PinballMachine();
            Flipper flipper = new LeftFlipper() { X = 5, Y = 5 };

            pbm.Add(flipper);

            Assert.IsTrue(pbm.Elements.Contains(flipper));
        }
コード例 #2
0
        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());
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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());
        }
コード例 #7
0
        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());
        }