public void CDMJS002LargeNegativeHighBandwidthTest()
        {
            Waveform         waveform         = PublicStandardTestExtensions.ParseWaveformFromString(Properties.Resources.CDM_Large_Neg_1000V);
            CDMJS002Standard cdmJS002Standard = new CDMJS002Standard(waveform, -1000, true, true);

            // Assert that Peak Current value is within 1mA of expected
            Assert.AreEqual(-25.015, cdmJS002Standard.PeakCurrentValue, 0.001);

            // Assert that Peak Current min/max are within 1mA of expected
            Assert.AreEqual(-20.6, cdmJS002Standard.PeakCurrentAllowedMinimum, 0.001);
            Assert.AreEqual(-27.9, cdmJS002Standard.PeakCurrentAllowedMaximum, 0.001);

            // Assert that Peak Current is passing
            Assert.IsTrue(cdmJS002Standard.PeakCurrentIsPassing);

            // Assert that Rise Time is within 10ps of expected
            Assert.AreEqual(0.0000000003116, cdmJS002Standard.RiseTimeValue, 0.000000000010);

            // Assert that Rise Time max are within 10ps of expected
            Assert.AreEqual(0.000000000350, cdmJS002Standard.RiseTimeAllowedMaximum, 0.000000000010);

            // Assert that Rise Time is passing
            Assert.IsTrue(cdmJS002Standard.RiseTimeIsPassing);

            // Assert that Full Width at Half Max is within 10ps of expected
            Assert.AreEqual(0.0000000006756, cdmJS002Standard.FullWidthHalfMaxValue, 0.000000000010);

            // Assert that Full Width at Half Max min/max are within 10ps of expected
            Assert.AreEqual(0.000000000450, cdmJS002Standard.FullWidthHalfMaxAllowedMinimum, 0.000000000010);
            Assert.AreEqual(0.000000000900, cdmJS002Standard.FullWidthHalfMaxAllowedMaximum, 0.000000000010);

            // Assert that Full Width at Half Max is passing
            Assert.IsTrue(cdmJS002Standard.FullWidthHalfMaxIsPassing);

            // Assert that Undershoot is within 1mA of expected
            Assert.AreEqual(6.397, cdmJS002Standard.UndershootValue, 0.001);

            // Assert that Undershoot percent is as expected
            Assert.AreEqual(-0.5, cdmJS002Standard.UndershootAllowedMaximumPercent);

            // Assert that Undershoot max is within 1mA of expected
            Assert.AreEqual(12.507, cdmJS002Standard.UndershootAllowedMaximumValue, 0.001);

            // Assert that Undershoot is passing
            Assert.IsTrue(cdmJS002Standard.UndershootIsPassing);
        }
        public void CDMJS002SmallNegativeHighBandwidthTest()
        {
            Waveform         waveform         = PublicStandardTestExtensions.ParseWaveformFromString(Properties.Resources.CDM_Small_Neg_1000V);
            CDMJS002Standard cdmJS002Standard = new CDMJS002Standard(waveform, -1000, false, true);

            // Assert that Peak Current value is within 1mA of expected
            Assert.AreEqual(-14.733, cdmJS002Standard.PeakCurrentValue, 0.001);

            // Assert that Peak Current min/max are within 1mA of expected
            Assert.AreEqual(-12.2, cdmJS002Standard.PeakCurrentAllowedMinimum, 0.001);
            Assert.AreEqual(-16.5, cdmJS002Standard.PeakCurrentAllowedMaximum, 0.001);

            // Assert that Peak Current is passing
            Assert.IsTrue(cdmJS002Standard.PeakCurrentIsPassing);

            // Assert that Rise Time is within 10ps of expected
            Assert.AreEqual(0.0000000002118, cdmJS002Standard.RiseTimeValue, 0.000000000010);

            // Assert that Rise Time max are within 10ps of expected
            Assert.AreEqual(0.000000000250, cdmJS002Standard.RiseTimeAllowedMaximum, 0.000000000010);

            // Assert that Rise Time is passing
            Assert.IsTrue(cdmJS002Standard.RiseTimeIsPassing);

            // Assert that Full Width at Half Max is within 10ps of expected
            Assert.AreEqual(0.0000000004048, cdmJS002Standard.FullWidthHalfMaxValue, 0.000000000010);

            // Assert that Full Width at Half Max min/max are within 10ps of expected
            Assert.AreEqual(0.000000000250, cdmJS002Standard.FullWidthHalfMaxAllowedMinimum, 0.000000000010);
            Assert.AreEqual(0.000000000600, cdmJS002Standard.FullWidthHalfMaxAllowedMaximum, 0.000000000010);

            // Assert that Full Width at Half Max is passing
            Assert.IsTrue(cdmJS002Standard.FullWidthHalfMaxIsPassing);

            // Assert that Undershoot is within 1mA of expected
            Assert.AreEqual(7.38, cdmJS002Standard.UndershootValue, 0.001);

            // Assert that Undershoot percent is as expected
            Assert.AreEqual(-0.7, cdmJS002Standard.UndershootAllowedMaximumPercent);

            // Assert that Undershoot max is within 1mA of expected
            Assert.AreEqual(10.313, cdmJS002Standard.UndershootAllowedMaximumValue, 0.001);

            // Assert that Undershoot is passing
            Assert.IsTrue(cdmJS002Standard.UndershootIsPassing);
        }
        public void CDMJS002LargePositiveHighBandwidthTest()
        {
            Waveform         waveform         = PublicStandardTestExtensions.ParseWaveformFromString(Properties.Resources.CDM_Large_Pos_0250V);
            CDMJS002Standard cdmJS002Standard = new CDMJS002Standard(waveform, 250, true, true);

            // Assert that Peak Current value is within 1mA of expected
            Assert.AreEqual(5.838, cdmJS002Standard.PeakCurrentValue, 0.001);

            // Assert that Peak Current min/max are within 1mA of expected
            Assert.AreEqual(4.8, cdmJS002Standard.PeakCurrentAllowedMinimum, 0.001);
            Assert.AreEqual(7.3, cdmJS002Standard.PeakCurrentAllowedMaximum, 0.001);

            // Assert that Peak Current is passing
            Assert.IsTrue(cdmJS002Standard.PeakCurrentIsPassing);

            // Assert that Rise Time is within 10ps of expected
            Assert.AreEqual(0.0000000003102, cdmJS002Standard.RiseTimeValue, 0.000000000010);

            // Assert that Rise Time max are within 10ps of expected
            Assert.AreEqual(0.000000000350, cdmJS002Standard.RiseTimeAllowedMaximum, 0.000000000010);

            // Assert that Rise Time is passing
            Assert.IsTrue(cdmJS002Standard.RiseTimeIsPassing);

            // Assert that Full Width at Half Max is within 10ps of expected
            Assert.AreEqual(0.0000000006688, cdmJS002Standard.FullWidthHalfMaxValue, 0.000000000010);

            // Assert that Full Width at Half Max min/max are within 10ps of expected
            Assert.AreEqual(0.000000000450, cdmJS002Standard.FullWidthHalfMaxAllowedMinimum, 0.000000000010);
            Assert.AreEqual(0.000000000900, cdmJS002Standard.FullWidthHalfMaxAllowedMaximum, 0.000000000010);

            // Assert that Full Width at Half Max is passing
            Assert.IsTrue(cdmJS002Standard.FullWidthHalfMaxIsPassing);

            // Assert that Undershoot is within 1mA of expected
            Assert.AreEqual(-0.982, cdmJS002Standard.UndershootValue, 0.001);

            // Assert that Undershoot percent is as expected
            Assert.AreEqual(-0.5, cdmJS002Standard.UndershootAllowedMaximumPercent);

            // Assert that Undershoot max is within 1mA of expected
            Assert.AreEqual(-2.919, cdmJS002Standard.UndershootAllowedMaximumValue, 0.001);

            // Assert that Undershoot is passing
            Assert.IsTrue(cdmJS002Standard.UndershootIsPassing);
        }
        public void CDMJS002LargePositiveUndershootTest()
        {
            Waveform         waveform         = PublicStandardTestExtensions.ParseWaveformFromString(Properties.Resources.CDM_Small_Pos_1000V_PosUndershoot);
            CDMJS002Standard cdmJS002Standard = new CDMJS002Standard(waveform, 1000, false, false);

            // Assert that Peak Current value is within 1mA of expected
            Assert.AreEqual(10.99, cdmJS002Standard.PeakCurrentValue, 0.01);

            // Assert that Peak Current min/max are within 1mA of expected
            Assert.AreEqual(8.8, cdmJS002Standard.PeakCurrentAllowedMinimum, 0.001);
            Assert.AreEqual(11.9, cdmJS002Standard.PeakCurrentAllowedMaximum, 0.001);

            // Assert that Peak Current is passing
            Assert.IsTrue(cdmJS002Standard.PeakCurrentIsPassing);

            // Assert that Rise Time is within 10ps of expected
            Assert.AreEqual(0.0000000002819, cdmJS002Standard.RiseTimeValue, 0.000000000010);

            // Assert that Rise Time max are within 10ps of expected
            Assert.AreEqual(0.000000000350, cdmJS002Standard.RiseTimeAllowedMaximum, 0.000000000010);

            // Assert that Rise Time is passing
            Assert.IsTrue(cdmJS002Standard.RiseTimeIsPassing);

            // Assert that Full Width at Half Max is within 10ps of expected
            Assert.AreEqual(0.0000000004196, cdmJS002Standard.FullWidthHalfMaxValue, 0.000000000010);

            // Assert that Full Width at Half Max min/max are within 10ps of expected
            Assert.AreEqual(0.000000000325, cdmJS002Standard.FullWidthHalfMaxAllowedMinimum, 0.000000000010);
            Assert.AreEqual(0.000000000725, cdmJS002Standard.FullWidthHalfMaxAllowedMaximum, 0.000000000010);

            // Assert that Full Width at Half Max is passing
            Assert.IsTrue(cdmJS002Standard.FullWidthHalfMaxIsPassing);

            // Assert that Undershoot is within 1mA of expected
            Assert.AreEqual(0, cdmJS002Standard.UndershootValue, 0.001);

            // Assert that Undershoot percent is as expected
            Assert.AreEqual(-0.7, cdmJS002Standard.UndershootAllowedMaximumPercent);

            // Assert that Undershoot max is within 1mA of expected
            Assert.AreEqual(-7.692, cdmJS002Standard.UndershootAllowedMaximumValue, 0.001);

            // Assert that Undershoot is passing
            Assert.IsTrue(cdmJS002Standard.UndershootIsPassing);
        }