public void DetectorBasicTest()
        {
            //Test data
            var x = new List <double> {
                1, 0.1, 100, 1.1, 0.5, 0.3
            };
            var y = new List <double> {
                1.1, 0.3, 1.1, 0.7, 10, 0.17
            };
            var z = new List <double> {
                -11, -0.7, 1.2, -1.7, 1.8, 0.2
            };

            var amplitudes = new List <double> {
                1, 1.1, 2, 0.7, 0.2, 1.8
            };
            var traveledDistances = new List <double> {
                2, 1, 2.3, 0.9, 0.1, 2.35
            };

            var detectorDistance = 1.0;
            var detectorWidth    = 0.5;

            //Expected Results
            var expectedAmplitude         = 1.7;
            var expectedTraveledDistances = new List <double> {
                2, 0.9
            };

            var detectorData = Photons.DetectorPhotons(x, y, z, traveledDistances, amplitudes, detectorDistance, detectorWidth);

            Assert.Equal(expectedAmplitude, detectorData.TotalAmplitude);
            Assert.Equal(expectedTraveledDistances, detectorData.TraveledDistances);
        }
        public void DetectorNegativeDistanceOrWidthTest()
        {
            //Test data
            var x = new List <double> {
                1, 0.1, 100, 1.1, 0.5, 0.3
            };
            var y = new List <double> {
                1.1, 0.3, 1.1, 0.7, 10, 0.17
            };
            var z = new List <double> {
                -11, -0.7, 1.2, -1.7, 1.8, 0.2
            };

            var amplitudes = new List <double> {
                1, 1.1, 2, 0.7, 0.2, 1.8
            };
            var traveledDistances = new List <double> {
                2, 1, 2.3, 0.9, 0.1, 2.35
            };

            var detectorDistance = -1.0;
            var detectorWidth    = 0.5;

            Assert.Throws <ArgumentOutOfRangeException>(() => Photons.DetectorPhotons(x, y, z, traveledDistances,
                                                                                      amplitudes, detectorDistance, detectorWidth));

            detectorDistance = 1.0;
            detectorWidth    = -0.5;

            Assert.Throws <ArgumentOutOfRangeException>(() => Photons.DetectorPhotons(x, y, z, traveledDistances,
                                                                                      amplitudes, detectorDistance, detectorWidth));

            detectorDistance = -1.0;
            detectorWidth    = -0.5;

            Assert.Throws <ArgumentOutOfRangeException>(() => Photons.DetectorPhotons(x, y, z, traveledDistances,
                                                                                      amplitudes, detectorDistance, detectorWidth));
        }
        public void DetectorDifferentListLengthTest()
        {
            var x = new List <double> {
                1, 2, 3, 4
            };
            var y = new List <double> {
                1, 2, 3
            };
            var z = new List <double> {
                1, 2, 3
            };

            var amplitudes = new List <double> {
                1, 2, 3
            };
            var traveledDistances = new List <double> {
                1, 2, 3
            };

            Assert.Throws <ArgumentException>(() => Photons.DetectorPhotons(x, y, z, traveledDistances, amplitudes, 1,
                                                                            1));

            x = new List <double> {
                1, 2, 3
            };
            y = new List <double> {
                1, 2, 3, 4
            };
            z = new List <double> {
                1, 2, 3
            };

            amplitudes = new List <double> {
                1, 2, 3
            };
            traveledDistances = new List <double> {
                1, 2, 3
            };

            Assert.Throws <ArgumentException>(() => Photons.DetectorPhotons(x, y, z, traveledDistances, amplitudes, 1,
                                                                            1));

            x = new List <double> {
                1, 2, 3
            };
            y = new List <double> {
                1, 2, 3
            };
            z = new List <double> {
                1, 2, 3, 4
            };

            amplitudes = new List <double> {
                1, 2, 3
            };
            traveledDistances = new List <double> {
                1, 2, 3
            };

            Assert.Throws <ArgumentException>(() => Photons.DetectorPhotons(x, y, z, traveledDistances, amplitudes, 1,
                                                                            1));

            x = new List <double> {
                1, 2, 3
            };
            y = new List <double> {
                1, 2, 3
            };
            z = new List <double> {
                1, 2, 3
            };

            amplitudes = new List <double> {
                1, 2, 3, 4
            };
            traveledDistances = new List <double> {
                1, 2, 3
            };

            Assert.Throws <ArgumentException>(() => Photons.DetectorPhotons(x, y, z, traveledDistances, amplitudes, 1,
                                                                            1));

            x = new List <double> {
                1, 2, 3
            };
            y = new List <double> {
                1, 2, 3
            };
            z = new List <double> {
                1, 2, 3
            };

            amplitudes = new List <double> {
                1, 2, 3
            };
            traveledDistances = new List <double> {
                1, 2, 3, 4
            };

            Assert.Throws <ArgumentException>(() => Photons.DetectorPhotons(x, y, z, traveledDistances, amplitudes, 1,
                                                                            1));
        }