public void TotalMissBack()
        {
            var r1     = RectangularPrismFactory.Make(new Size3(2, 1, 2), new Vector3(0, 0, -2), Color.White);
            var r2     = RectangularPrismFactory.Make(new Size3(2, 1, 2), new Vector3(0, 0, 0), Color.White);
            var result = r1.OverlapWith(r2, PrismBounceAxis.Z);

            assertResultType(result, ResultType.TotalMiss);
        }
        public void PerfectWithinToleranceBack()
        {
            var r1     = RectangularPrismFactory.MakeStandard(new Vector3(0, 0, -RectangularPrism.PerfectPlayTolerance));
            var r2     = RectangularPrismFactory.MakeStandard(new Vector3());
            var result = r1.OverlapWith(r2, PrismBounceAxis.Z);

            assertResultType(result, ResultType.Perfect);
        }
        public void Perfect()
        {
            var r1     = RectangularPrismFactory.MakeStandard(new Vector3());
            var r2     = RectangularPrismFactory.MakeStandard(new Vector3());
            var result = r1.OverlapWith(r2, PrismBounceAxis.X);

            assertResultType(result, ResultType.Perfect);
        }
        public void MixedRight()
        {
            var r1     = RectangularPrismFactory.Make(new Size3(4, 1, 4), new Vector3(3, 0, 0), Color.White);
            var r2     = RectangularPrismFactory.Make(new Size3(4, 1, 4), new Vector3(0, 0, 0), Color.White);
            var result = r1.OverlapWith(r2, PrismBounceAxis.X);

            assertResultType(result, ResultType.Mixed);
            result.Do(
                perfect => { },
                totalMiss => { },
                mixed =>
            {
                Assert.That(mixed.Missed.Size.X, Is.EqualTo(3));
                Assert.That(mixed.Missed.Position.X, Is.EqualTo(3.5f));
                Assert.That(mixed.Landed.Size.X, Is.EqualTo(1));
                Assert.That(mixed.Landed.Position.X, Is.EqualTo(1.5f));
            });
        }
        public void MixedFront()
        {
            var r1     = RectangularPrismFactory.Make(new Size3(4, 1, 4), new Vector3(0, 0, 1), Color.White);
            var r2     = RectangularPrismFactory.Make(new Size3(4, 1, 4), new Vector3(0, 0, 0), Color.White);
            var result = r1.OverlapWith(r2, PrismBounceAxis.Z);

            assertResultType(result, ResultType.Mixed);
            result.Do(
                perfect => { },
                totalMiss => { },
                mixed =>
            {
                Assert.That(mixed.Missed.Size.Z, Is.EqualTo(1f), "Missed.Size.Z");
                Assert.That(mixed.Missed.Position.Z, Is.EqualTo(2.5f), "Missed.Position.Z");
                Assert.That(mixed.Landed.Size.Z, Is.EqualTo(3f), "Landed.Size.Z");
                Assert.That(mixed.Landed.Position.Z, Is.EqualTo(0.5f), "Landed.Position.Z");
            });
        }