public void PreviousAndNextWithShuffle() { var randomService = new MockRandomService(); int randomNumber = 0; int lastMaxValue = -1; randomService.NextRandomNumberStub = maxValue => { lastMaxValue = maxValue; return(randomNumber); }; var manager = new PlaylistManager(3, randomService); manager.AddAndReplaceItems(threeItems); manager.Shuffle = true; Assert.IsFalse(manager.CanPreviousItem); Assert.IsFalse(manager.CanNextItem); AssertHelper.PropertyChangedEvent(manager, x => x.CanNextItem, () => manager.CurrentItem = threeItems[0]); Assert.IsFalse(manager.CanPreviousItem); Assert.IsTrue(manager.CanNextItem); randomNumber = 1; AssertHelper.PropertyChangedEvent(manager, x => x.CanPreviousItem, () => manager.NextItem()); Assert.AreEqual(1, lastMaxValue); Assert.AreEqual(threeItems[2], manager.CurrentItem); Assert.IsTrue(manager.CanPreviousItem); Assert.IsTrue(manager.CanNextItem); randomNumber = 0; AssertHelper.PropertyChangedEvent(manager, x => x.CanNextItem, () => manager.NextItem()); Assert.AreEqual(0, lastMaxValue); Assert.AreEqual(threeItems[1], manager.CurrentItem); Assert.IsTrue(manager.CanPreviousItem); Assert.IsFalse(manager.CanNextItem); AssertHelper.PropertyChangedEvent(manager, x => x.CanNextItem, () => manager.PreviousItem()); Assert.AreEqual(threeItems[2], manager.CurrentItem); Assert.IsTrue(manager.CanPreviousItem); Assert.IsTrue(manager.CanNextItem); AssertHelper.PropertyChangedEvent(manager, x => x.CanPreviousItem, () => manager.PreviousItem()); Assert.AreEqual(threeItems[0], manager.CurrentItem); Assert.IsFalse(manager.CanPreviousItem); Assert.IsTrue(manager.CanNextItem); }
public void PreviousAndNextWithShuffle() { var randomService = new MockRandomService(); int randomNumber = 0; int lastMaxValue = -1; randomService.NextRandomNumberStub = maxValue => { lastMaxValue = maxValue; return randomNumber; }; var manager = new PlaylistManager(3, randomService); manager.AddAndReplaceItems(threeItems); manager.Shuffle = true; Assert.IsFalse(manager.CanPreviousItem); Assert.IsFalse(manager.CanNextItem); AssertHelper.PropertyChangedEvent(manager, x => x.CanNextItem, () => manager.CurrentItem = threeItems[0]); Assert.IsFalse(manager.CanPreviousItem); Assert.IsTrue(manager.CanNextItem); randomNumber = 1; AssertHelper.PropertyChangedEvent(manager, x => x.CanPreviousItem, () => manager.NextItem()); Assert.AreEqual(1, lastMaxValue); Assert.AreEqual(threeItems[2], manager.CurrentItem); Assert.IsTrue(manager.CanPreviousItem); Assert.IsTrue(manager.CanNextItem); randomNumber = 0; AssertHelper.PropertyChangedEvent(manager, x => x.CanNextItem, () => manager.NextItem()); Assert.AreEqual(0, lastMaxValue); Assert.AreEqual(threeItems[1], manager.CurrentItem); Assert.IsTrue(manager.CanPreviousItem); Assert.IsFalse(manager.CanNextItem); AssertHelper.PropertyChangedEvent(manager, x => x.CanNextItem, () => manager.PreviousItem()); Assert.AreEqual(threeItems[2], manager.CurrentItem); Assert.IsTrue(manager.CanPreviousItem); Assert.IsTrue(manager.CanNextItem); AssertHelper.PropertyChangedEvent(manager, x => x.CanPreviousItem, () => manager.PreviousItem()); Assert.AreEqual(threeItems[0], manager.CurrentItem); Assert.IsFalse(manager.CanPreviousItem); Assert.IsTrue(manager.CanNextItem); }