From 2bbe452da6d3cf3d49fbe041d81f3dbdc89cc4ff Mon Sep 17 00:00:00 2001 From: Michael L Smith Date: Tue, 16 Feb 2016 19:34:33 -0800 Subject: [PATCH] + Added a NotSupportedException when Position is called on a mirrored object that's been mirrored on multiple axes + test --- OSCADSharp/OSCADSharp.UnitTests/MirrorTests.cs | 9 +++++++++ OSCADSharp/OSCADSharp/Transforms/MirroredObject.cs | 11 +++++++++++ 2 files changed, 20 insertions(+) diff --git a/OSCADSharp/OSCADSharp.UnitTests/MirrorTests.cs b/OSCADSharp/OSCADSharp.UnitTests/MirrorTests.cs index 1f972cb..dc2747b 100644 --- a/OSCADSharp/OSCADSharp.UnitTests/MirrorTests.cs +++ b/OSCADSharp/OSCADSharp.UnitTests/MirrorTests.cs @@ -31,5 +31,14 @@ namespace OSCADSharp.UnitTests pos.Z = -pos.Z; Assert.AreEqual(pos, zMirror.Position()); } + + [TestMethod] + [ExpectedException(typeof(NotSupportedException))] + public void Mirror_MultiAxisPositionThrowsNotSupportedException() + { + var cube = new Cube(5, 10, 20); + + var pos = cube.Mirror(1, 1, 0).Position(); + } } } diff --git a/OSCADSharp/OSCADSharp/Transforms/MirroredObject.cs b/OSCADSharp/OSCADSharp/Transforms/MirroredObject.cs index 2412980..05f4dc7 100644 --- a/OSCADSharp/OSCADSharp/Transforms/MirroredObject.cs +++ b/OSCADSharp/OSCADSharp/Transforms/MirroredObject.cs @@ -55,6 +55,11 @@ namespace OSCADSharp.Transforms // fix mirrored positions for multiple-axis mirroring public override Vector3 Position() { + if (this.isMoreThanOneAxis()) + { + throw new NotSupportedException("Getting the position of an object that's been mirrored on more than one axis is not currently supported."); + } + var pos = obj.Position(); double x = this.Normal.X != 0 ? pos.X * -1 : pos.X; @@ -63,5 +68,11 @@ namespace OSCADSharp.Transforms return new Vector3(x, y, z); } + + private bool isMoreThanOneAxis() + { + return (this.Normal.X != 0 && (this.Normal.Y != 0 || this.Normal.Z != 0)) || + (this.Normal.Y != 0 && (this.Normal.X != 0 || this.Normal.Z != 0)); + } } }