public void TestChangeAudioController() { DummyMusicController controller1 = new DummyMusicController(); DummyMusicController controller2 = new DummyMusicController(); Metronome metronome = new Metronome(); controller1.CurrentTime = metronome.BeatLength.Value * 1f; controller2.CurrentTime = metronome.BeatLength.Value * 3f; metronome.AudioController = controller1; Assert.AreEqual(1, metronome.BeatIndex.Value); metronome.AudioController = controller2; Assert.AreEqual(3, metronome.BeatIndex.Value); controller1.Seek(4); Assert.AreEqual(3, metronome.BeatIndex.Value); metronome.AudioController = controller1; Assert.AreEqual(0, metronome.BeatIndex.Value); controller1.Seek(metronome.BeatLength.Value * 6); Assert.AreEqual(2, metronome.BeatIndex.Value); }
public void TestBeat() { int beatCount = 0; DummyMusicController musicController = new DummyMusicController(); Metronome metronome = new Metronome() { AudioController = musicController }; metronome.OnBeat += () => beatCount++; Assert.AreEqual(TimingControlPoint.DefaultBeatLength, metronome.BeatLength.Value, Delta); Assert.AreEqual(0, beatCount); metronome.Update(); Assert.AreEqual(1, beatCount); musicController.CurrentTime = metronome.BeatLength.Value * 0.5f; metronome.Update(); Assert.AreEqual(1, beatCount); musicController.CurrentTime = metronome.BeatLength.Value; metronome.Update(); Assert.AreEqual(2, beatCount); musicController.CurrentTime = metronome.BeatLength.Value * 1.5f; metronome.Update(); Assert.AreEqual(2, beatCount); musicController.CurrentTime = metronome.BeatLength.Value * 2f; metronome.Update(); Assert.AreEqual(3, beatCount); musicController.Stop(); metronome.Update(); Assert.AreEqual(4, beatCount); musicController.Seek(metronome.BeatLength.Value * 3f); metronome.Update(); Assert.AreEqual(5, beatCount); musicController.CurrentTime = metronome.BeatLength.Value * 4f; metronome.Update(); Assert.AreEqual(6, beatCount); }
public void TestBeatIndex() { DummyMusicController musicController = new DummyMusicController(); Metronome metronome = new Metronome() { AudioController = musicController }; Assert.AreEqual(BeatFrequency.Full, metronome.Frequency.Value); Assert.AreEqual((int)TimeSignatureType.Quadruple * (int)BeatFrequency.Full, metronome.BeatsInInterval.Value); Assert.AreEqual(0, metronome.BeatIndex.Value); musicController.CurrentTime = metronome.BeatLength.Value * 0.5f; metronome.Update(); Assert.AreEqual(0, metronome.BeatIndex.Value); for (int i = 1; i < 4; i++) { musicController.CurrentTime = metronome.BeatLength.Value * i; metronome.Update(); Assert.AreEqual(i, metronome.BeatIndex.Value); } musicController.CurrentTime = metronome.BeatLength.Value * 4f; metronome.Update(); Assert.AreEqual(0, metronome.BeatIndex.Value); metronome.Frequency.Value = BeatFrequency.Half; musicController.CurrentTime = metronome.BeatLength.Value * 8f; metronome.Update(); Assert.AreEqual(0, metronome.BeatIndex.Value); for (int i = 1; i < 8; i++) { musicController.CurrentTime = metronome.BeatLength.Value * (i + 8f); metronome.Update(); Assert.AreEqual(i, metronome.BeatIndex.Value); } musicController.CurrentTime = metronome.BeatLength.Value * 16f; metronome.Update(); Assert.AreEqual(0, metronome.BeatIndex.Value); metronome.Frequency.Value = BeatFrequency.Quarter; musicController.CurrentTime = metronome.BeatLength.Value * 32f; metronome.Update(); Assert.AreEqual(0, metronome.BeatIndex.Value); for (int i = 1; i < 16; i++) { musicController.CurrentTime = metronome.BeatLength.Value * (i + 32f); metronome.Update(); Assert.AreEqual(i, metronome.BeatIndex.Value); } musicController.CurrentTime = metronome.BeatLength.Value * 48f; metronome.Update(); Assert.AreEqual(0, metronome.BeatIndex.Value); musicController.CurrentTime = metronome.BeatLength.Value * 49f; metronome.Update(); Assert.AreEqual(1, metronome.BeatIndex.Value); musicController.Stop(); metronome.Update(); Assert.AreEqual(0, metronome.BeatIndex.Value); musicController.Seek(metronome.BeatLength.Value * 8); metronome.Update(); Assert.AreEqual(8, metronome.BeatIndex.Value); }