diff --git a/src/TaglibSharp.Tests/TaggingFormats/Id3V2Test.cs b/src/TaglibSharp.Tests/TaggingFormats/Id3V2Test.cs index 6c6b2381..7e5383c9 100644 --- a/src/TaglibSharp.Tests/TaggingFormats/Id3V2Test.cs +++ b/src/TaglibSharp.Tests/TaggingFormats/Id3V2Test.cs @@ -1024,6 +1024,35 @@ public void TestPublisher () } } + + [Test] + public void TestEncodedBy () + { + Tag tag = new Tag (); + for (byte version = 2; version <= 4; version++) { + tag.Version = version; + + TagTestWithSave (ref tag, delegate (Tag t, string m) { + Assert.IsTrue (t.IsEmpty, "Initial (IsEmpty): " + m); + Assert.IsNull (t.EncodedBy, "Initial (Null): " + m); + }); + + tag.EncodedBy = val_sing; + + TagTestWithSave (ref tag, delegate (Tag t, string m) { + Assert.IsFalse (t.IsEmpty, "Value Set (!IsEmpty): " + m); + Assert.AreEqual (val_sing, t.EncodedBy, "Value Set (!Null): " + m); + }); + + tag.EncodedBy = string.Empty; + + TagTestWithSave (ref tag, delegate (Tag t, string m) { + Assert.IsTrue (t.IsEmpty, "Value Cleared (IsEmpty): " + m); + Assert.IsNull (t.EncodedBy, "Value Cleared (Null): " + m); + }); + } + } + [Test] public void TestISRC () { diff --git a/src/TaglibSharp/Id3v2/FrameTypes.cs b/src/TaglibSharp/Id3v2/FrameTypes.cs index e430af85..faa92030 100644 --- a/src/TaglibSharp/Id3v2/FrameTypes.cs +++ b/src/TaglibSharp/Id3v2/FrameTypes.cs @@ -101,6 +101,7 @@ static class FrameType public static readonly ReadOnlyByteVector WPUB = "WPUB"; public static readonly ReadOnlyByteVector WXXX = "WXXX"; public static readonly ReadOnlyByteVector ETCO = "ETCO"; + public static readonly ReadOnlyByteVector TENC = "TENC"; // Encoded By Frame. public static readonly ReadOnlyByteVector MVNM = "MVNM"; // Movement Name public static readonly ReadOnlyByteVector MVIN = "MVIN"; // Movement Number/Count } diff --git a/src/TaglibSharp/Id3v2/Tag.cs b/src/TaglibSharp/Id3v2/Tag.cs index cd669dc0..22e31c09 100644 --- a/src/TaglibSharp/Id3v2/Tag.cs +++ b/src/TaglibSharp/Id3v2/Tag.cs @@ -2299,6 +2299,20 @@ public override string Publisher { set { SetTextFrame (FrameType.TPUB, value); } } + /// + /// Gets and sets the TENC (Encoded by) of the song. + /// + /// + /// A object containing the TENC of the song. + /// + /// + /// This property is implemented using the "TENC" field. + /// + public string EncodedBy { + get { return GetTextAsString (FrameType.TENC); } + set { SetTextFrame (FrameType.TENC, value); } + } + /// /// Gets and sets the ISRC (International Standard Recording Code) of the song. ///