@Test
public void testDecodeTxxxFrame() {

  byte[] rawId3 = buildSingleFrameTag("TXXX", new byte[] {3, 0, 109, 100, 105, 97, 108, 111, 103,
      95, 86, 73, 78, 68, 73, 67, 79, 49, 53, 50, 55, 54, 54, 52, 95, 115, 116, 97, 114, 116, 0});
  Id3Decoder decoder = new Id3Decoder();
  Metadata metadata = decoder.decode(rawId3, rawId3.length);
  assertThat(metadata.length()).isEqualTo(1);
  TextInformationFrame textInformationFrame = (TextInformationFrame) metadata.get(0);
  assertThat(textInformationFrame.id).isEqualTo("TXXX");
  assertThat(textInformationFrame.description).isEmpty();
  assertThat(textInformationFrame.value).isEqualTo("mdialog_VINDICO1527664_start");
  // Test empty.
  rawId3 = buildSingleFrameTag("TXXX", new byte[0]);
  metadata = decoder.decode(rawId3, rawId3.length);
  assertThat(metadata.length()).isEqualTo(0);
  // Test encoding byte only.
  rawId3 = buildSingleFrameTag("TXXX", new byte[] {ID3_TEXT_ENCODING_UTF_8});
  metadata = decoder.decode(rawId3, rawId3.length);
  assertThat(metadata.length()).isEqualTo(1);
  textInformationFrame = (TextInformationFrame) metadata.get(0);
  assertThat(textInformationFrame.id).isEqualTo("TXXX");
  assertThat(textInformationFrame.description).isEmpty();
  assertThat(textInformationFrame.value).isEmpty();
}