# coding: utf-8

require "selftest_utils"

class CMDTEST_output_encoding < Cmdtest::Testcase

  include SelftestUtils

  def test_output_encoding_ASCII_DEFAULT
    create_CMDTEST_foo [
      'cmd "echo.rb raksmorgas" do',
      '    comment "ok"',
      '    stdout_equal "raksmorgas\n"',
      'end',
      'cmd "echo.rb räksmörgås" do',
      '    comment "error"',
      'end',
    ]

    cmd_cmdtest do
      stdout_equal [
        "### ok",
        "### error",
        "--- ERROR: unexpected encoding: STDOUT not 'ascii'",
      ]
      exit_nonzero
    end
  end

  def test_output_encoding_UTF8_GLOBAL
    create_CMDTEST_foo [
      'output_encoding "utf-8"',
      'cmd "echo.rb raksmorgas" do',
      '    comment "ok ascii"',
      '    stdout_equal "raksmorgas\n"',
      'end',
      'cmd "echo.rb räksmörgås" do',
      '    comment "ok utf8"',
      '    stdout_equal "räksmörgås\n"',
      'end',
    ]

    cmd_cmdtest do
      stdout_equal [
        "### ok ascii",
        "### ok utf8",
      ]
    end
  end

  def test_output_encoding_UTF8_DOBLOCK
    create_CMDTEST_foo [
      'cmd "echo.rb räksmörgås" do',
      '    comment "ok in doblock"',
      '    output_encoding "utf-8" do',
      '        stdout_equal "räksmörgås\n"',
      '    end',
      'end',
      'cmd "echo.rb räksmörgås" do',
      '    comment "error outside doblock"',
      '    stdout_equal "räksmörgås\n"',
      'end',
    ]

    cmd_cmdtest do
      stdout_equal [
        "### ok in doblock",
        "### error outside doblock",
        "--- ERROR: unexpected encoding: STDOUT not 'ascii'",
      ]
      exit_nonzero
    end
  end


end