Ejemplo n.º 1
0
        public void PlayVetoSound()
        {
            hasPlayedFinishHimForThisTrack = false;
            if (soundBoardSettings.IsEnabled)
            {
                bool firstblood       = false;
                var  lastVetoDateTime = new DateTime();
                int  skipCount        = 0;

                var latestVetoInfo = soundBoardDataService.GetAll().FirstOrDefault();
                if (latestVetoInfo != null)
                {
                    lastVetoDateTime = latestVetoInfo.lastSkippedSongTime;
                    skipCount        = latestVetoInfo.skippedSongsCount;
                }
                else
                {
                    latestVetoInfo = new SoundBoardInfo();
                }

                //first veto of the day!
                if (!lastVetoDateTime.ToLocalTime().Date.Equals(nowHelper.Now.Date))
                {
                    firstblood = true;
                }

                var n          = nowHelper.Now.ToUniversalTime();
                var latestTime = lastVetoDateTime.AddSeconds(soundBoardSettings.SecondsBetweenSkipThreshold);
                if (DateTime.Compare(latestTime, n) > 0)
                {
                    skipCount++;

                    string fileName = GetVetoSound(skipCount);
                    if (!string.IsNullOrEmpty(fileName))
                    {
                        player.PlayFromFile(fileName);
                    }
                }
                else
                {
                    skipCount = 1;
                }

                latestVetoInfo.lastSkippedSongTime = nowHelper.Now;
                latestVetoInfo.skippedSongsCount   = skipCount;

                soundBoardDataService.InsertOrUpdate(latestVetoInfo);

                //play the first blood sound if its the first veto of the day
                if (firstblood)
                {
                    player.PlayFromFile(pathBuilder.BuildFilePath("firstblood.wav"));
                }
            }
        }
Ejemplo n.º 2
0
        public void if_skipped_outside_seconds_between_skip_threshold_PlayVetoSound_resets_skipCount_and_plays_no_sound()
        {
            //arrange
            var settingsMock = GetMock <ISoundBoardSettings>();

            settingsMock.Setup(m => m.IsEnabled).Returns(true);
            settingsMock.Setup(m => m.SecondsBetweenSkipThreshold).Returns(10);

            var pathBuilderMock = GetMock <IPathBuilder>();

            pathBuilderMock.Setup(m => m.BuildFilePath(It.IsAny <string>())).Returns("\\\\apath\\sounds\\filename.wav");


            var nowMock = GetMock <INowHelper>();

            nowMock.Setup(m => m.Now).Returns(new DateTime(2013, 1, 2, 10, 0, 15)); //5 seconds outside of threshold

            var soundInfo = new SoundBoardInfo
            {
                lastSkippedSongTime = new DateTime(2013, 1, 2, 10, 0, 0).ToUniversalTime(),
                skippedSongsCount   = 3
            };
            var dataServiceMock = GetMock <IDataService <SoundBoardInfo> >();

            dataServiceMock.Setup(m => m.GetAll())
            .Returns(new List <SoundBoardInfo>()
            {
                soundInfo
            }.AsQueryable());

            var playerMock = GetMock <IStreamedPlayer>();

            //act
            ClassUnderTest.PlayVetoSound();
            soundInfo.skippedSongsCount = 1;
            //assert
            dataServiceMock.Verify(m => m.InsertOrUpdate(It.Is <SoundBoardInfo>(c => c.skippedSongsCount == 1)), Times.Once());
            playerMock.Verify(m => m.PlayFromFile(It.IsAny <string>()), Times.Never());
        }