# frozen_string_literal: true

require "test_helper"

class WahWah::ID3::V1Test < Minitest::Test
  def test_parse
    content = StringIO.new("TAGChina Girl\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00Iggy Pop\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00The Idiot\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x001977Iggy Pop Rocks\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x11".b)

    tag = WahWah::ID3::V1.new(content)

    assert_equal "v1", tag.version
    assert_equal 128, tag.size
    assert_equal "China Girl", tag.title
    assert_equal "Iggy Pop", tag.artist
    assert_equal "The Idiot", tag.album
    assert_equal "1977", tag.year
    assert_equal "Rock", tag.genre
    assert_equal 5, tag.track
    assert_equal ["Iggy Pop Rocks"], tag.comments
  end

  def test_no_track_number
    content = StringIO.new("TAGChina Girl\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00Iggy Pop\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00The Idiot\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x001977Iggy Pop Rockssssssssssssssss\x00\x11".b)

    tag = WahWah::ID3::V1.new(content)

    assert_equal "v1", tag.version
    assert_equal 128, tag.size
    assert_equal "China Girl", tag.title
    assert_equal "Iggy Pop", tag.artist
    assert_equal "The Idiot", tag.album
    assert_equal "1977", tag.year
    assert_equal "Rock", tag.genre
    assert_nil tag.track
    assert_equal ["Iggy Pop Rockssssssssssssssss"], tag.comments
  end

  def test_invalid_id3
    content = StringIO.new("tagChina Girl\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00Iggy Pop\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00The Idiot\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x001977Iggy Pop Rocks\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x11".b)

    tag = WahWah::ID3::V1.new(content)

    assert !tag.valid?
  end
end
