# -*- coding: utf-8 -*-
# frozen_string_literal: true

require "helper"

class TestEncodingHandler < Nokogiri::TestCase
  def teardown
    Nokogiri::EncodingHandler.clear_aliases!
    # Replace default aliases removed by clear_aliases!
    Nokogiri.install_default_aliases
    super
  end

  def test_get
    refute_nil(Nokogiri::EncodingHandler["UTF-8"])
    assert_nil(Nokogiri::EncodingHandler["alsdkjfhaldskjfh"])
  end

  def test_name
    eh = Nokogiri::EncodingHandler["UTF-8"]
    assert_equal("UTF-8", eh.name)
  end

  def test_alias
    Nokogiri::EncodingHandler.alias("UTF-8", "UTF-18")
    assert_equal("UTF-8", Nokogiri::EncodingHandler["UTF-18"].name)
  end

  def test_cleanup_aliases
    assert_nil(Nokogiri::EncodingHandler["UTF-9"])
    Nokogiri::EncodingHandler.alias("UTF-8", "UTF-9")
    refute_nil(Nokogiri::EncodingHandler["UTF-9"])

    Nokogiri::EncodingHandler.clear_aliases!
    assert_nil(Nokogiri::EncodingHandler["UTF-9"])
  end

  def test_delete
    assert_nil(Nokogiri::EncodingHandler["UTF-9"])
    Nokogiri::EncodingHandler.alias("UTF-8", "UTF-9")
    refute_nil(Nokogiri::EncodingHandler["UTF-9"])

    Nokogiri::EncodingHandler.delete("UTF-9")
    assert_nil(Nokogiri::EncodingHandler["UTF-9"])
  end

  def test_delete_non_existent
    assert_nil(Nokogiri::EncodingHandler.delete("UTF-9"))
  end
end
