@Test
public void testDecodeWxxxFrame() {

  byte[] rawId3 = buildSingleFrameTag("WXXX", new byte[] {ID3_TEXT_ENCODING_UTF_8, 116, 101, 115,
      116, 0, 104, 116, 116, 112, 115, 58, 47, 47, 116, 101, 115, 116, 46, 99, 111, 109, 47, 97,
      98, 99, 63, 100, 101, 102});
  Id3Decoder decoder = new Id3Decoder();
  Metadata metadata = decoder.decode(rawId3, rawId3.length);
  assertThat(metadata.length()).isEqualTo(1);
  UrlLinkFrame urlLinkFrame = (UrlLinkFrame) metadata.get(0);
  assertThat(urlLinkFrame.id).isEqualTo("WXXX");
  assertThat(urlLinkFrame.description).isEqualTo("test");
  assertThat(urlLinkFrame.url).isEqualTo("https://test.com/abc?def");
  // Test empty.
  rawId3 = buildSingleFrameTag("WXXX", new byte[0]);
  metadata = decoder.decode(rawId3, rawId3.length);
  assertThat(metadata.length()).isEqualTo(0);
  // Test encoding byte only.
  rawId3 = buildSingleFrameTag("WXXX", new byte[] {ID3_TEXT_ENCODING_UTF_8});
  metadata = decoder.decode(rawId3, rawId3.length);
  assertThat(metadata.length()).isEqualTo(1);
  urlLinkFrame = (UrlLinkFrame) metadata.get(0);
  assertThat(urlLinkFrame.id).isEqualTo("WXXX");
  assertThat(urlLinkFrame.description).isEmpty();
  assertThat(urlLinkFrame.url).isEmpty();
}