Пример #1
0
        public void NoSelection4MusicHasPriority1()
        {
            var musicA = new Music("A") { Priority = 1 };
            var musicB = new Music("B") { Priority = 1 };
            var musicC = new Music("C") { Priority = 1 };
            var musicD = new Music("D") { Priority = 1 };

            _store.SetupGetMusic(musicA);
            _store.SetupGetMusic(musicB);
            _store.SetupGetMusic(musicC);
            _store.SetupGetMusic(musicD);

            _musicLibrary.Add(musicA);
            _musicLibrary.Add(musicB);
            _musicLibrary.Add(musicC);
            _musicLibrary.Add(musicD);
            var playList = new PlayList(_musicLibrary) {"A","B","C","D"};
            playList.UpdateProbability();
            const double unitProbability = 1d / 4d;
            Assert.AreEqual(unitProbability, playList["A"].Probability);
            Assert.AreEqual(unitProbability, playList["B"].Probability);
            Assert.AreEqual(unitProbability, playList["C"].Probability);
            Assert.AreEqual(unitProbability, playList["D"].Probability);
            Assert.AreEqual(unitProbability * 1, playList["A"].CumulativeProbability);
            Assert.AreEqual(unitProbability * 2, playList["B"].CumulativeProbability);
            Assert.AreEqual(unitProbability * 3, playList["C"].CumulativeProbability);
            Assert.AreEqual(unitProbability * 4, playList["D"].CumulativeProbability);
        }
Пример #2
0
 public void AddingMusicAddsInAllMusicPlayList()
 {
     var music = new Music("A");
     _store.SetupGetMusic(music);
     _musicLibrary.Add(music);
     Assert.IsTrue(_musicLibrary.AllMusicPlayList.Contains("A"));
 }
Пример #3
0
        public void NoSelection4Music2Classic()
        {
            var musicA = new Music("A") { Priority = 1 };
            musicA[Constants.Tags.Genre] = "Classic";
            var musicB = new Music("B") { Priority = 2 };
            var musicC = new Music("C") { Priority = 3 };
            musicC[Constants.Tags.Genre] = "Classic";
            var musicD = new Music("D") { Priority = 4 };

            _store.SetupGetMusic(musicA);
            _store.SetupGetMusic(musicB);
            _store.SetupGetMusic(musicC);
            _store.SetupGetMusic(musicD);

            _musicLibrary.Add(musicA);
            _musicLibrary.Add(musicB);
            _musicLibrary.Add(musicC);
            _musicLibrary.Add(musicD);
            var playList = new PlayList(_musicLibrary) { "A", "B", "C", "D" };
            playList.UpdateProbability();
            const double totalPriority = 10d;
            const double unitProbability = 1d / totalPriority;
            _store.VerifyAll();
            AreEqual(unitProbability * musicA.Priority, playList["A"].Probability);
            AreEqual(unitProbability * musicB.Priority, playList["B"].Probability);
            AreEqual(unitProbability * musicC.Priority, playList["C"].Probability);
            AreEqual(unitProbability * musicD.Priority, playList["D"].Probability);

            AreEqual(unitProbability * 1, playList["A"].CumulativeProbability);
            AreEqual(unitProbability * 3, playList["B"].CumulativeProbability);
            AreEqual(unitProbability * 6, playList["C"].CumulativeProbability);
            AreEqual(unitProbability * 10, playList["D"].CumulativeProbability);
        }
Пример #4
0
 public void AddMusic()
 {
     var music = new Music("A"){Priority = 2};
     _store.Add(music);
     _adapter.Verify(o => o.OpenDatabase(), Times.Once());
     _adapter.Verify(o=>o.ExecuteNonQuery(string.Format(Constants.Sql.InsertMusic,music.Id,music.Priority)),Times.Once());
     _adapter.Verify(o=>o.Close(),Times.Once());
 }
Пример #5
0
 public IMusic GetMusic(string id)
 {
     _adapter.OpenDatabase();
     var result = _adapter.Execute(string.Format(Constants.Sql.GetMusic, id));
     IMusic music=null;
     if(result.Rows.Count==1)
     {
         var row = (ArrayList) result.Rows[0];
         music = new Music((string)row[Constants.ColumnIndex.Music.Id])
                     {
                         Priority = (double) row[Constants.ColumnIndex.Music.Priority]
                     };
     }
     _adapter.Close();
     return music;
 }
Пример #6
0
 public void MusicReturnsEmptyStringIfNotEdited()
 {
     var music = new Music();
     Assert.AreEqual("",music[Constants.Tags.Genre]);
 }
Пример #7
0
 public void MusicReturnsActualValueIfEdited()
 {
     var music = new Music();
     music[Constants.Tags.Genre] = "Classic";
     Assert.AreEqual("Classic", music[Constants.Tags.Genre]);
 }
Пример #8
0
 public void AddMusic()
 {
     var music = new Music("A");
     _musicLibrary.Add(music);
     _store.VerifyAdd(music);
 }
Пример #9
0
        public void NoSelection4MusicHasPriority1OneHas2()
        {
            var musicA = new Music("A") { Priority = 1 };
            var musicB = new Music("B") { Priority = 1 };
            var musicC = new Music("C") { Priority = 1 };
            var musicD = new Music("D") { Priority = 1 };
            var musicE = new Music("E") { Priority = 2 };

            _store.SetupGetMusic(musicA);
            _store.SetupGetMusic(musicB);
            _store.SetupGetMusic(musicC);
            _store.SetupGetMusic(musicD);
            _store.SetupGetMusic(musicE);

            _musicLibrary.Add(musicA);
            _musicLibrary.Add(musicB);
            _musicLibrary.Add(musicC);
            _musicLibrary.Add(musicD);
            _musicLibrary.Add(musicE);

            var playList = new PlayList(_musicLibrary) {"A","B","C","D","E"};
            playList.UpdateProbability();
            const double unitProbability = 1d / 6d;
            Assert.AreEqual(unitProbability, playList["A"].Probability);
            Assert.AreEqual(unitProbability, playList["B"].Probability);
            Assert.AreEqual(unitProbability, playList["C"].Probability);
            Assert.AreEqual(unitProbability, playList["D"].Probability);
            Assert.AreEqual(2*unitProbability, playList["E"].Probability);
        }
Пример #10
0
        public void TwoClassic2RockClassicIsPlayingRepeatPriorityZero()
        {
            _store.SetupGetTags(new[]
                                    {
                                        new MusicTag {Id = Constants.Tags.Genre, Priority = 2},
                                        new MusicTag {Id = Constants.Tags.Album, Priority = 3}
                                    });
            _store.Setup(s => s.GetRepeatPriority()).Returns(0);
            var musicA = new Music("A") { Priority = 1 };
            musicA[Constants.Tags.Genre] = "Classic";
            var musicB = new Music("B") { Priority = 2 };
            musicB[Constants.Tags.Genre] = "Rock";
            var musicC = new Music("C") { Priority = 3 };
            musicC[Constants.Tags.Genre] = "Classic";
            var musicD = new Music("D") { Priority = 4 };
            musicD[Constants.Tags.Genre] = "Rock";

            _store.SetupGetMusic(musicA);
            _store.SetupGetMusic(musicB);
            _store.SetupGetMusic(musicC);
            _store.SetupGetMusic(musicD);

            _musicLibrary.Add(musicA);
            _musicLibrary.Add(musicB);
            _musicLibrary.Add(musicC);
            _musicLibrary.Add(musicD);
            var playList = new PlayList(_musicLibrary) { "A", "B", "C", "D" };
            playList.SetPlaying("A");
            playList.UpdateProbability();
            const double totalPriority = 13d;
            const double unitProbability = 1d / totalPriority;
            _store.VerifyAll();
            AreEqual(0, playList["A"].Probability);
            AreEqual(unitProbability * musicB.Priority, playList["B"].Probability);
            AreEqual(unitProbability * (musicC.Priority + 4d), playList["C"].Probability);
            AreEqual(unitProbability * musicD.Priority, playList["D"].Probability);

            AreEqual(0, playList["A"].CumulativeProbability);
            AreEqual(unitProbability * 2, playList["B"].CumulativeProbability);
            AreEqual(unitProbability * 9, playList["C"].CumulativeProbability);
            AreEqual(unitProbability * 13, playList["D"].CumulativeProbability);
        }