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]); } }