Exemple #1
0
        public void OnFrameCompletedWorksWithNoPulseEndOverflow()
        {
            // --- Arrange
            var spectrum     = new SpectrumBeepTestMachine();
            var beeperDevice = new BeeperDevice();

            beeperDevice.OnAttachedToVm(spectrum);

            // --- Act
            spectrum.SetCurrentCpuTact(69888 + 11);
            beeperDevice.OnFrameCompleted();

            // --- Assert
            beeperDevice.LastEarBit.ShouldBeFalse();
            beeperDevice.FrameCount.ShouldBe(0);
            beeperDevice.Overflow.ShouldBe(11);
            beeperDevice.AudioSamples.Length.ShouldBe(699);

            foreach (var sample in beeperDevice.AudioSamples)
            {
                sample.ShouldBe(0.0f);
            }
        }
        public void MultiplePulsesAreProcessedProperly(int[] tacts, float[] samples)
        {
            // --- Arrange
            var spectrum     = new SpectrumBeepTestMachine();
            var beeperDevice = new BeeperDevice();

            beeperDevice.OnAttachedToVm(spectrum);
            var initialBit = false;

            // --- Act
            foreach (var tact in tacts)
            {
                spectrum.SetCurrentCpuTact(tact);
                beeperDevice.ProcessEarBitValue(false, initialBit);
                initialBit = !initialBit;
            }

            // --- Assert
            beeperDevice.LastSampleTact.ShouldBe(beeperDevice.HostVm.AudioConfiguration.TactsPerSample * samples.Length);
            for (var i = 0; i < samples.Length; i++)
            {
                samples[i].ShouldBe(beeperDevice.AudioSamples[i]);
            }
        }