public void TestBoardSquare() { var original = new BoardSquare(BoardLocation.C3, new Piece(Side.Player2, 2, new ShapeOrientationCollection(new[] { new ShapeOrientation(Shape.Blades, Orientation.Original) }, false))); Assert.AreEqual(BoardLocation.C3, original.Position); Assert.AreEqual(BoardSquareContents.Piece, original.Contents); Assert.AreEqual(Side.Player2, original.Piece.Owner); Assert.AreEqual(2, original.Piece.StackLimit); Assert.AreEqual(1, original.Piece.Shapes.Count); Assert.AreEqual(Shape.Blades, original.Piece.Shapes[0].Shape); Assert.AreEqual(Orientation.Original, original.Piece.Shapes[0].Orientation); var clone = original.DeepClone(); Assert.IsNotNull(clone); Assert.AreEqual(BoardLocation.C3, clone.Position); Assert.AreEqual(BoardSquareContents.Piece, clone.Contents); Assert.AreEqual(Side.Player2, clone.Piece.Owner); Assert.AreEqual(2, clone.Piece.StackLimit); Assert.AreEqual(1, clone.Piece.Shapes.Count); Assert.AreEqual(Shape.Blades, clone.Piece.Shapes[0].Shape); Assert.AreEqual(Orientation.Original, clone.Piece.Shapes[0].Orientation); original.Position = BoardLocation.B3; Assert.AreEqual(BoardLocation.B3, original.Position); Assert.AreEqual(BoardLocation.C3, clone.Position); original.Contents = BoardSquareContents.Blockade; Assert.AreEqual(BoardSquareContents.Blockade, original.Contents); Assert.IsNull(original.Piece); Assert.AreEqual(BoardSquareContents.Piece, clone.Contents); Assert.AreEqual(Side.Player2, clone.Piece.Owner); Assert.AreEqual(2, clone.Piece.StackLimit); Assert.AreEqual(1, clone.Piece.Shapes.Count); Assert.AreEqual(Shape.Blades, clone.Piece.Shapes[0].Shape); Assert.AreEqual(Orientation.Original, clone.Piece.Shapes[0].Orientation); }