示例#1
0
        public void ConvertTest1()
        {
            var unknownFrame = new UnknownFrame
                                   {
                                       Descriptor =
                                           {
                                               ID = "ABCD",
                                               TagAlterPreservation = true
                                           },
                                       Content = new byte[] {0x30, 0x31, 0x32, 0x33}
                                   };

            var rawFrame = unknownFrame.Convert();
            Assert.AreEqual(rawFrame.ID, "ABCD");
            Assert.AreEqual(rawFrame.Payload.Length, 4);
            Assert.AreEqual(rawFrame.Payload[0], 0x30);
            Assert.AreEqual(rawFrame.Payload[1], 0x31);
            Assert.AreEqual(rawFrame.Payload[2], 0x32);
            Assert.AreEqual(rawFrame.Payload[3], 0x33);

            Assert.AreEqual(rawFrame.TagAlterPreservation, true, "Tag Alter Preservation failed.");
            Assert.AreEqual(rawFrame.FileAlterPreservation, false, "File Alter Preservation failed.");
            Assert.AreEqual(rawFrame.ReadOnly, false, "Read Only Failed.");
            Assert.AreEqual(rawFrame.Compression, false, "Compression failed.");
            Assert.AreEqual(rawFrame.Encryption, false, "Encryption failed.");
            Assert.AreEqual(rawFrame.GroupingIdentify, false, "Grouping Identify failed.");
        }
示例#2
0
        private static IFrame AnalyseFrameId(RawFrame rawFrame, IFrameCreationService frameService)
        {
            var id = rawFrame.ID;
            IFrame frame = null;

            if (frameService.Search(id))
            {
                //
                //  Get the specific frame instance
                //
                frame = frameService.GetFrameInstance(id);
            }
            else
            {
                if (id[0] == 'T' && id[1] != 'X')
                {
                    //
                    // Handle Textfames
                    //
                    frame = frameService.GetTextFrame();
                }

                if (id[0] == 'W' && id[1] != 'X')
                {
                    //
                    // Handle Web Frames
                    //
                    frame = frameService.GetUrlLinkFrame();
                }
            }

            if (frame == null)
            {
                //
                //  If all is failed then create an Unknown frame instance
                //
                frame = new UnknownFrame();
            }

            return frame;
        }
示例#3
0
 private static IFrame AnalyseFrameId(RawFrame rawFrame)
 {
     IFrame frame;
     if (rawFrame.ID[0] == 'T' || rawFrame.ID[0] == 'W')
     {
         switch (rawFrame.ID[0])
         {
             case 'T':
                 if (rawFrame.ID != "TXXX")
                 {
                     frame = new TextFrame();
                 }
                 else
                 {
                     frame = new UserDefinedTextFrame();
                 }
                 break;
             case 'W':
                 if (rawFrame.ID != "WXXX")
                 {
                     frame = new UrlLinkFrame();
                 }
                 else
                 {
                     frame = new UserDefinedURLLinkFrame();
                 }
                 break;
             default:
                 throw new ID3TagException("Unknown Text or URL frame!");
         }
     }
     else
     {
         // Other frames
         switch (rawFrame.ID)
         {
             case "AENC":
                 frame = new AudioEncryptionFrame();
                 break;
             case "PRIV":
                 frame = new PrivateFrame();
                 break;
             case "MCDI":
                 frame = new MusicCdIdentifierFrame();
                 break;
             case "COMM":
                 frame = new CommentFrame();
                 break;
             case "APIC":
                 frame = new PictureFrame();
                 break;
             case "PCNT":
                 frame = new PlayCounterFrame();
                 break;
             case "POPM":
                 frame = new PopularimeterFrame();
                 break;
             case "UFID":
                 frame = new UniqueFileIdentifierFrame();
                 break;
             default:
                 frame = new UnknownFrame();
                 break;
         }
     }
     return frame;
 }