Пример #1
0
        public void MethodAddThrowsArgumentException(string name, double minVal, double maxVal, int fontSize, string exceptionKeyWord)
        {
            Action add = () => sut.Add(name, new FrequencyGroup(minVal, maxVal), fontSize);

            add.Should().Throw <ArgumentException>()
            .And.Message.Should().Contain(exceptionKeyWord);
        }
Пример #2
0
        public void ValidationOKTest1()
        {
            /*
             *  T___
             *  TXXX
             *  WXXX
             *  APIC
             */

            var tagContainer = new TagContainer();
            tagContainer.Tag.SetExtendedHeader(0, false);
            tagContainer.Tag.SetHeaderFlags(false, false, false);
            tagContainer.Tag.SetVersion(3, 0);

            var textFrame = new TextFrame("TALB", "My Albun", TextEncodingType.UTF16);
            var userDefineTextFrame = new UserDefinedTextFrame("my comment", "so", TextEncodingType.UTF16);
            var linkFrame = new UserDefinedURLLinkFrame("id3tag", "id3tag.codeplex.com", TextEncodingType.UTF16);
            var pictureFrame = new PictureFrame(TextEncodingType.UTF16, "image/jpeg", "la", PictureType.Other,
                                                new byte[] { 0x11, 0x12, 0x13, 0x14 });

            tagContainer.Add(textFrame);
            tagContainer.Add(userDefineTextFrame);
            tagContainer.Add(linkFrame);
            tagContainer.Add(pictureFrame);

            WriteTagContainer(tagContainer);

            // OK... passed!
        }
Пример #3
0
        public void ExtendedHeaderEncoderTest()
        {
            var crc = new byte[] {0x20, 0x21, 0x22, 0x23};

            var tagContainer = new TagContainer();
            tagContainer.Tag.SetHeaderFlags(true, true, true);
            tagContainer.Tag.SetVersion(3, 0);
            tagContainer.Tag.SetExtendedHeader(10, true);
            tagContainer.Tag.SetCrc32(crc);

            var titleFrame = new TextFrame();
            titleFrame.TextEncoding = TextEncodingType.UTF16;
            titleFrame.Descriptor.ID = "TIT2";
            titleFrame.Content = "ABCD";

            tagContainer.Add(titleFrame);

            var id3Tag = m_TagController.Encode(tagContainer);

            Assert.AreEqual(id3Tag.MajorVersion, 3);
            Assert.AreEqual(id3Tag.Revision, 0);
            Assert.IsTrue(id3Tag.UnsynchronisationFlag);
            Assert.IsTrue(id3Tag.UnsynchronisationFlag);
            Assert.IsTrue(id3Tag.ExtendedHeaderAvailable);
            Assert.IsNotNull(id3Tag.ExtendHeaderV3);
            Assert.IsTrue(ComparePayload(id3Tag.ExtendHeaderV3.CRC, crc));
            Assert.AreEqual(id3Tag.Frames.Count, 1);
        }
Пример #4
0
        public TagContainer Decode(Id3TagInfo info)
        {
            var container = new TagContainer();
            var descriptor = container.Tag;

            // Decode the ID3 Tag info
            var majorVersion = info.MajorVersion;
            var revision = info.Revision;

            descriptor.SetVersion(majorVersion, revision);
            descriptor.SetHeaderFlags(info.UnsynchronisationFlag, info.ExtendedHeaderAvailable, info.Experimental);

            if (info.ExtendedHeaderAvailable)
            {
                var extendedHeader = info.ExtendHeaderV3;
                descriptor.SetExtendedHeader(extendedHeader.PaddingSize, extendedHeader.CRCDataPresent);
                if (extendedHeader.CRCDataPresent)
                {
                    descriptor.SetCrc32(extendedHeader.CRC);
                }
            }

            foreach (var rawFrame in info.Frames)
            {
                //
                //  Analyse the frame ID
                //
                var frame = AnalyseFrameId(rawFrame);
                if (frame != null)
                {
                    frame.Import(rawFrame);
                    container.Add(frame);
                }
                else
                {
                    throw new ID3TagException("Frame analysing failed!");
                }
            }

            return container;
        }
Пример #5
0
        public void SimpleEncoderTest()
        {
            var tagContainer = new TagContainer();
            tagContainer.Tag.SetHeaderFlags(false, false, false);
            tagContainer.Tag.SetVersion(3, 0);

            var titleFrame = new TextFrame();
            titleFrame.TextEncoding = TextEncodingType.UTF16;
            titleFrame.Descriptor.ID = "TIT2";
            titleFrame.Content = "ABCD";

            tagContainer.Add(titleFrame);

            var id3Tag = m_TagController.Encode(tagContainer);

            Assert.AreEqual(id3Tag.MajorVersion, 3);
            Assert.AreEqual(id3Tag.Revision, 0);
            Assert.IsFalse(id3Tag.UnsynchronisationFlag);
            Assert.IsFalse(id3Tag.UnsynchronisationFlag);
            Assert.IsFalse(id3Tag.ExtendedHeaderAvailable);
            Assert.IsNull(id3Tag.ExtendHeaderV3);
            Assert.AreEqual(id3Tag.Frames.Count, 1);
        }
Пример #6
0
        private static void WriteUnsychronisedLyrics(string descriptor, string lyrics, TagContainer container)
        {
            var uslt = new UnsynchronisedLyricFrame("ENG",descriptor,lyrics,Encoding.ASCII);

            container.Add(uslt);
        }
Пример #7
0
        private static void WritePictureFrame(ID3V2TagData data, TagContainer container)
        {
            using (FileStream stream = File.Open(data.PictureFile, FileMode.Open))
            {
                //
                //  Read the picture.
                //
                int byteCount = Convert.ToInt32(stream.Length);
                var pictureData = new byte[byteCount];
                stream.Read(pictureData, 0, byteCount);

                //
                //  Add the picture frame.
                //  
                var pictureFrame = new PictureFrame(
                    Encoding.Default,
                    "image/jpg",
                    "Other",
                    PictureType.Other,
                    pictureData);

                container.Add(pictureFrame);
            }
        }
        public void AddZuneAttribute(ZuneAttribute zuneAttribute)
        {
            RemoveZuneAttribute(zuneAttribute.Name);

            _container.Add(new PrivateFrame(zuneAttribute.Name, zuneAttribute.Guid.ToByteArray()));
        }
Пример #9
0
        public void AddZuneAttribute(ZuneAttribute zuneAttribute)
        {
            RemoveZuneAttribute(zuneAttribute.Name);

            _container.Add(new Attribute(zuneAttribute.Name, zuneAttribute.Guid.ToString(), WMT_ATTR_DATATYPE.WMT_TYPE_GUID));
        }
Пример #10
0
        public void EncodeWithExtendedHeaderTest2()
        {
            //
            // Configure the tag
            //
            var tagContainer1 = new TagContainer();
            tagContainer1.Tag.SetVersion(3, 0);
            tagContainer1.Tag.SetHeaderFlags(true, true, true);
            tagContainer1.Tag.SetExtendedHeader(10, true);
            tagContainer1.Tag.SetCrc32(new byte[] {0x10, 0x20, 0x30, 0x40});

            var titleFrame = new TextFrame
                                 {
                                     Descriptor = {ID = "TIT2"},
                                     TextEncoding = TextEncodingType.UTF16,
                                     Content = "Title1"
                                 };

            tagContainer1.Add(titleFrame);

            //
            // Write and read the tag again. 
            //
            var tagContainer2 = WriteAndRead(tagContainer1);

            //
            // Compare both container!
            //
            CompareContainer(tagContainer1, tagContainer2);
        }
Пример #11
0
        public void SynchronizedTest5()
        {
            var tagContainer1 = new TagContainer();
            tagContainer1.Tag.SetVersion(3, 0);
            tagContainer1.Tag.SetHeaderFlags(true, false, false);

            const long counter = 0x12FF;
            var playCounter = new PlayCounterFrame(counter);
            tagContainer1.Add(playCounter);

            var tagContainer2 = WriteAndRead(tagContainer1);
            CompareContainer(tagContainer1, tagContainer2);

            var playCounter2 = FrameUtils.ConvertToPlayCounterFrame(tagContainer2[0]);
            Assert.AreEqual(playCounter2.Counter, counter);
        }
Пример #12
0
        public void EncodeWithoutExtendedHeaderTest()
        {
            //
            // Configure the tag
            //
            var tagContainer1 = new TagContainer();
            tagContainer1.Tag.SetVersion(3, 0);
            tagContainer1.Tag.SetHeaderFlags(false, false, false);

            var titleFrame = new TextFrame
                                 {
                                     Descriptor = {ID = "TIT2"},
                                     TextEncoding = TextEncodingType.UTF16,
                                     Content = "Title1"
                                 };

            tagContainer1.Add(titleFrame);

            //
            // Write and read the tag again. 
            //
            var tagContainer2 = WriteAndRead(tagContainer1);

            //
            // Compare both container!
            //
            CompareContainer(tagContainer1, tagContainer2);
        }
Пример #13
0
        public TagContainer BuildTag(ID3V2TagData data)
        {
            var tagController = new TagContainer();

            // Configure the tag header.
            tagController.Tag.SetVersion(3, 0);
            tagController.Tag.SetHeaderFlags(data.Unsynchronisation, data.ExtendedHeader, data.ExperimentalIndicator);

            if (data.ExtendedHeader)
            {
                tagController.Tag.SetExtendedHeader(data.PaddingSize, data.CrCPresent);
                tagController.Tag.SetCrc32(data.Crc);
            }

            // OK. Build the frames.
            var albumFrame = new TextFrame("TALB", data.Album, data.EncodingType);
            var artistFrame = new TextFrame("TPE2", data.Artist, data.EncodingType);
            var yearFrame = new TextFrame("TYER", data.Year, data.EncodingType);
            var titleFrame = new TextFrame("TIT2", data.Title, data.EncodingType);
            var textComment = new UserDefinedTextFrame("Your comment", data.Comment, data.EncodingType);
            var comment = new CommentFrame("ENG", "Your Comment", data.Comment, data.EncodingType);
            var encoder = new TextFrame("TENC", data.Encoder, data.EncodingType);

            tagController.Add(albumFrame);
            tagController.Add(artistFrame);
            tagController.Add(yearFrame);
            tagController.Add(titleFrame);
            tagController.Add(textComment);
            tagController.Add(comment);
            tagController.Add(encoder);

            if (data.PictureFrameEnabled)
            {
                if (File.Exists(data.PictureFile))
                {
                    WritePictureFrame(data, tagController);
                }
                else
                {
                    MessageBox.Show("Picture file not found.");
                }
            }

            return tagController;
        }