示例#1
0
        public void ReturnDeezerSongIdsWhenPassLength()
        {
            // arrange
            var deezerSong = new List <DeezerSong>
            {
                new DeezerSong(SongId.Parse("101"), "title1", "artist1"),
                new DeezerSong(SongId.Parse("102"), "title2", "artist2"),
                new DeezerSong(SongId.Parse("103"), "title3", "artist3")
            };
            var songEngine = SongEngineBuilder
                             .Create()
                             .SetRandomisedSongs(deezerSong).Build();
            // act
            var actual = songEngine.GetRandomisedSongs(3);

            // assert
            Assert.AreEqual(3, actual.Count());
            Assert.AreEqual(SongId.Parse("101"), actual.ElementAt(0).Id);
            Assert.AreEqual(SongId.Parse("102"), actual.ElementAt(1).Id);
            Assert.AreEqual(SongId.Parse("103"), actual.ElementAt(2).Id);
            Assert.AreEqual("title1", actual.ElementAt(0).Title);
            Assert.AreEqual("title2", actual.ElementAt(1).Title);
            Assert.AreEqual("title3", actual.ElementAt(2).Title);
            Assert.AreEqual("artist1", actual.ElementAt(0).Artist);
            Assert.AreEqual("artist2", actual.ElementAt(1).Artist);
            Assert.AreEqual("artist3", actual.ElementAt(2).Artist);
        }
示例#2
0
        public void UseRepositoryWhenRadioSongWithDeezerSongIdIsParsed()
        {
            // arrange
            var songId    = SongId.Parse("001");
            var radioName = "djam";
            var title     = "title";
            var artist    = "artist";

            var mockedRadioSongRepository = RadioSongRepositoryBuilder.Create();
            var radioSongRepository       = mockedRadioSongRepository.Build();
            var deezerApi = DeezerApiBuilder
                            .Create()
                            .SetSong(new DeezerSong(songId, title, artist))
                            .Build();
            var radioSongHandler = new RadioSongHandler(radioSongRepository, deezerApi);

            // act
            var radioSongParsed = new RadioSongWithDeezerSongIdParsed(radioName, songId);

            radioSongHandler.Handle(radioSongParsed);
            // assert
            var(actualSongId, actualName, actualTitle, actualArtist) = mockedRadioSongRepository.RadioSongs.First();
            Assert.AreEqual(songId, actualSongId);
            Assert.AreEqual(radioName, actualName);
            Assert.AreEqual(title, actualTitle);
            Assert.AreEqual(artist, actualArtist);
        }
示例#3
0
        public AmbientSoundPlayer(SongId songId)
        {
            On <EngineUpdateEvent>(e => Tick(e.DeltaSeconds));

            _songId = songId;
            _hook   = NoteHook;
        }
示例#4
0
 public WaveLibEvent(SongId songId, int instrument, int velocity, int note)
 {
     SongId     = songId;
     Instrument = instrument;
     Velocity   = velocity;
     Note       = note;
 }
示例#5
0
 public SongAdded(UserId userId, PlaylistId playlistId, SongId songId, string title, string artist)
 {
     UserId     = userId;
     PlaylistId = playlistId;
     SongId     = songId;
     Title      = title;
     Artist     = artist;
 }
示例#6
0
        public override int GetHashCode()
        {
            var hashCode = -16023929;

            hashCode = hashCode * -1521134295 + Id.GetHashCode();
            hashCode = hashCode * -1521134295 + SongId.GetHashCode();
            hashCode = hashCode * -1521134295 + PlayListId.GetHashCode();
            return(hashCode);
        }
示例#7
0
 public static void PlaySong(SongId id)
 {
     LOG.Log($"Starting to play song: {id}");
     if (!Object.SoundEnable)
     {
         return;
     }
     StopAllSongs();
     Object.songInstances[id].start();
 }
示例#8
0
        public override int GetHashCode()
        {
            var hashCode = -147973881;

            hashCode = hashCode * -1521134295 + Id.GetHashCode();
            hashCode = hashCode * -1521134295 + EqualityComparer <string> .Default.GetHashCode(Text);

            hashCode = hashCode * -1521134295 + Date.GetHashCode();
            hashCode = hashCode * -1521134295 + UserId.GetHashCode();
            hashCode = hashCode * -1521134295 + SongId.GetHashCode();
            return(hashCode);
        }
示例#9
0
 public bool SongExists(SongId songId)
 {
     using (var cnx = _provider.Create())
     {
         var commandText = $"select songid from radiosong where songid = {songId.Value}";
         cnx.Open();
         using (var command = cnx.CreateCommand())
         {
             command.CommandText = commandText;
             using (var reader = command.ExecuteReader())
             {
                 return(reader.HasRows);
             }
         }
     }
 }
示例#10
0
        public void AddSongsToPlaylistDeezer()
        {
            var playlistId  = PlaylistId.Parse("100");
            var accessToken = "accessToken";
            var songIds     = new []
            {
                SongId.Parse("001"),
                SongId.Parse("002"),
                SongId.Parse("003")
            };

            var deezerService = DeezerApiBuilder.Create();

            deezerService.Build().AddSongsToPlaylist(accessToken, playlistId, songIds);

            Assert.AreEqual(3, deezerService.SongsAdded);
        }
示例#11
0
        public void RaiseMessageWhenAddPlaylistToUser()
        {
            var stream         = new MemoryEventStream();
            var deezerApi      = DeezerApiBuilder.Create().SetCreatePlaylist(PlaylistId.Parse("100")).Build();
            var songRepository = SongRepositoryBuilder.Create()
                                 .SetRandomSongs(1, new[] { new Song(SongId.Parse("100"), "title", "artist") }).Build();
            var playlistRepository = PlaylistRepositoryBuilder.Create().Build();

            stream.Add(new UserCreated(Identity.Parse("*****@*****.**", "dublow", "12345", "accessToken")));

            var publisher = new EventBus(stream);

            var user = new User(stream, publisher, deezerApi, songRepository, playlistRepository, 1);

            user.AddPlaylist("playlistName");

            Assert.IsTrue(stream.GetEvents().Contains(new PlaylistAdded(UserId.Parse("12345"), PlaylistId.Parse("100"), "playlistName")));
        }
示例#12
0
文件: Song.cs 项目: saites/Musagetes
        public Song(string title, string location, int milliseconds, Bpm bpm,
                    uint playCount, uint?songId = null)
        {
            SongTitle    = title;
            Location     = location;
            Milliseconds = milliseconds;
            Bpm          = bpm;
            PlayCount    = playCount;
            if (songId != null)
            {
                SongId.UpdateTagId(songId.Value);
            }
            Id        = songId ?? SongId.GetNextSongId();
            IsBadSong = false;
            SongError = string.Empty;

            CheckSongLocation();
        }
示例#13
0
        public void GetSongFromDeezerWhenSongExists()
        {
            // arrange
            var    songId      = SongId.Parse("001");
            string title       = "title";
            string artist      = "artist";
            var    accessToken = "accessToken";

            var deezerService = DeezerApiBuilder
                                .Create()
                                .SetSong(new DeezerSong(songId, title, artist))
                                .Build();
            // act
            var actual = deezerService.GetSong(accessToken, title, artist);

            // assert
            Assert.AreEqual(songId, actual.Id);
            Assert.AreEqual(title, actual.Title);
            Assert.AreEqual(artist, actual.Artist);
        }
示例#14
0
        public IEnumerable <DeezerSong> GetSongsByPlaylistId(string accessToken, PlaylistId playlistId)
        {
            var uri = String.Format(Endpoints.GetSongsByPlaylist, playlistId.Value, accessToken);

            TrackDeezer GetT(string url)
            {
                Thread.Sleep(2000);
                return(_request.Get(url, JsonConvert.DeserializeObject <TrackDeezer>));
            }

            var trackItemDeezer = new List <TrackItemDeezer>();

            while (!string.IsNullOrEmpty(uri))
            {
                var trackDeezer = GetT(uri);
                trackItemDeezer.AddRange(trackDeezer.Tracks);
                uri = trackDeezer.Next;
            }

            return(trackItemDeezer.Select(x => new DeezerSong(SongId.Parse(x.Id), x.Title, x.Artist.Name)));
        }
示例#15
0
        public void GetSongsByPlaylistIdWithPlaylistId()
        {
            // arrange
            var playlistId  = PlaylistId.Parse("100");
            var songId      = SongId.Parse("001");
            var title       = "title";
            var artist      = "artist";
            var accessToken = "accessToken";

            var deezerService = DeezerApiBuilder
                                .Create()
                                .SetSongsByPlaylistId(new [] { new DeezerSong(songId, title, artist) })
                                .Build();
            // act
            var actual = deezerService.GetSongsByPlaylistId(accessToken, playlistId);

            // assert
            Assert.AreEqual(1, actual.Count());
            Assert.AreEqual(songId, actual.First().Id);
            Assert.AreEqual(title, actual.First().Title);
            Assert.AreEqual(artist, actual.First().Artist);
        }
示例#16
0
 public IEnumerable <Song> GetRandomSongs(int size)
 {
     using (var cnx = _provider.Create())
     {
         var commandText = $"select songid, title, artist from radiosong order by random() limit {size}";
         cnx.Open();
         using (var command = cnx.CreateCommand())
         {
             command.CommandText = commandText;
             using (var reader = command.ExecuteReader())
             {
                 while (reader.Read())
                 {
                     var songId = SongId.Parse(reader[0].ToString());
                     var title  = reader[1].ToString();
                     var artist = reader[2].ToString();
                     yield return(new Song(songId, title, artist));
                 }
             }
         }
     }
 }
示例#17
0
        public void UseRepositoryWhenSongIsAdded()
        {
            // arrange
            var userId     = UserId.Parse("12345");
            var playlistId = PlaylistId.Parse("100");
            var songId     = SongId.Parse("001");
            var title      = "title";
            var artist     = "artist";

            var mockedSongRepository = SongRepositoryBuilder.Create();
            var songRepository       = mockedSongRepository.Build();
            var songHandler          = new SongHandler(songRepository);

            // act
            songHandler.Handle(new SongAdded(userId, playlistId, songId, title, artist));
            // assert
            var(actualUserId, actualPlaylistId, actualSongId, actualTitle, actualArtist) = mockedSongRepository.Songs.First();
            Assert.AreEqual(userId, actualUserId);
            Assert.AreEqual(playlistId, actualPlaylistId);
            Assert.AreEqual(songId, actualSongId);
            Assert.AreEqual(title, actualTitle);
            Assert.AreEqual(artist, actualArtist);
        }
示例#18
0
        public void Add(SongId songId, string radioName, string title, string artist)
        {
            if (title.Contains("'"))
            {
                title = title.Replace("'", " ");
            }

            if (artist.Contains("'"))
            {
                artist = artist.Replace("'", " ");
            }
            using (var cnx = _provider.Create())
            {
                var commandText = "insert into radiosong (songid, radioname, title, artist) " +
                                  $"values ({songId.Value}, '{radioName}', '{title}', '{artist}')";
                cnx.Open();

                using (var command = cnx.CreateCommand())
                {
                    command.CommandText = commandText;
                    command.ExecuteNonQuery();
                }
            }
        }
示例#19
0
 bool IEquatable <Song> .Equals(Song other)
 {
     return(SongId.Equals(other.SongId));
 }
示例#20
0
 public SongEvent(SongId songId)
 {
     SongId = songId;
 }
示例#21
0
 public DeezerSong GetSong(string accessToken, SongId songId)
 {
     throw new NotImplementedException();
 }
示例#22
0
        public static MapData3D Serdes(AssetInfo info, MapData3D existing, AssetMapping mapping, ISerializer s)
        {
            if (info == null)
            {
                throw new ArgumentNullException(nameof(info));
            }
            if (s == null)
            {
                throw new ArgumentNullException(nameof(s));
            }

            var map = existing ?? new MapData3D {
                Id = info.AssetId
            };

            map.Flags            = s.EnumU8(nameof(Flags), map.Flags);                                                                              // 0
            map.OriginalNpcCount = s.UInt8(nameof(OriginalNpcCount), map.OriginalNpcCount);                                                         // 1
            int npcCount = NpcCountTransform.Instance.FromNumeric(map.OriginalNpcCount);
            var _        = s.UInt8("MapType", (byte)map.MapType);                                                                                   // 2

            map.SongId             = SongId.SerdesU8(nameof(SongId), map.SongId, mapping, s);                                                       // 3
            map.Width              = s.UInt8(nameof(Width), map.Width);                                                                             // 4
            map.Height             = s.UInt8(nameof(Height), map.Height);                                                                           // 5
            map.LabDataId          = LabyrinthId.SerdesU8(nameof(LabDataId), map.LabDataId, mapping, s);                                            // 6
            map.CombatBackgroundId = SpriteId.SerdesU8(nameof(CombatBackgroundId), map.CombatBackgroundId, AssetType.CombatBackground, mapping, s); // 7 TODO: Verify this is combat background
            map.PaletteId          = PaletteId.SerdesU8(nameof(PaletteId), map.PaletteId, mapping, s);
            map.AmbientSongId      = SongId.SerdesU8(nameof(AmbientSongId), map.AmbientSongId, mapping, s);
            map.Npcs = s.List(
                nameof(Npcs),
                map.Npcs,
                npcCount,
                (n, x, s2) => MapNpc.Serdes(n, x, map.MapType, mapping, s2)).ToArray();

            map.Contents ??= new byte[map.Width * map.Height];
            map.Floors ??= new byte[map.Width * map.Height];
            map.Ceilings ??= new byte[map.Width * map.Height];

            for (int i = 0; i < map.Width * map.Height; i++)
            {
                map.Contents[i] = s.UInt8(null, map.Contents[i]);
                map.Floors[i]   = s.UInt8(null, map.Floors[i]);
                map.Ceilings[i] = s.UInt8(null, map.Ceilings[i]);
            }
            s.Check();

            map.SerdesZones(s);

            if (s.IsReading() && s.IsComplete() || s.IsWriting() && map.AutomapGraphics == null)
            {
                ApiUtil.Assert(map.Zones.Count == 0);
                foreach (var npc in map.Npcs)
                {
                    npc.Waypoints = new NpcWaypoint[1];
                }
                return(map);
            }

            map.SerdesEvents(mapping, s);
            map.SerdesNpcWaypoints(s);
            map.SerdesAutomap(s);
            map.SerdesChains(s, 64);

            if (s.IsReading())
            {
                map.Unswizzle();
            }

            return(map);
        }
示例#23
0
 public void Add(UserId userId, PlaylistId playlistId, SongId songId, string title, string artist)
 {
     Console.WriteLine(
         $"UserId:{userId.Value} PlaylistId: {playlistId.Value} SongId: {songId.Value} Title:{title} Artist: {artist}");
 }
示例#24
0
 public AlbionMusicGenerator(SongId songId) => SongId = songId;
示例#25
0
 public AmbientEvent(SongId songId)
 {
     SongId = songId;
 }
示例#26
0
 /// <summary> Serves as a hash function for a particular type.  </summary>
 /// <returns> A hash code for the current <see cref="T:System.Object"/>. </returns>
 /// <filterpriority>2</filterpriority>
 public override int GetHashCode()
 {
     return(SongId.GetHashCode() ^ AlbumId.GetHashCode());
 }
示例#27
0
 public bool Equals(Song other)
 {
     return(SongId.ToLower() == other.SongId.ToLower());
 }
示例#28
0
 public DeezerSong(SongId id, string title, string artist)
 {
     Id     = id;
     Title  = title;
     Artist = artist;
 }
示例#29
0
文件: Song.cs 项目: dublow/CqrsRadio
 public Song(SongId songId, string title, string artist)
 {
     SongId = songId;
     Title  = title;
     Artist = artist;
 }
示例#30
0
 public bool Equals(BeatSaverSong other)
 {
     return(SongId.ToLower() == other._id);
 }