require "selftest_utils"

class CMDTEST_glob_files < Cmdtest::Testcase

  include SelftestUtils

  def make_file(name)
    create_file "t/CMDTEST_#{name}.rb", [
      "class CMDTEST_#{name} < Cmdtest::Testcase",
      "  def setup",
      "    prepend_path #{BIN.inspect}",
      "    prepend_path #{PLATFORM_BIN.inspect}",
      "  end",
      "",

      "  def test_1",
      "    cmd \"true\" do",
      "      comment \"#{name}\"",
      "    end",
      "  end",
      "",
      "end",
    ]
  end

  def test_1
    make_file("aaa")
    make_file("ccc")
    make_file("bbb")
    make_file("ddd")

    cmd_cmdtest do
      stdout_equal [
        "### aaa",
        "### bbb",
        "### ccc",
        "### ddd",
      ]
    end
  end

  def test_2
    # generate "aaa", "aab", "aac", ...
    names = (1..30).reduce(["aaa"]) {|acc, i| acc << acc[-1].succ }
    for name in names.shuffle(random: Random.new(1234))
      make_file(name)
    end

    cmd_cmdtest do
      stdout_equal names.map {|name| "### #{name}" }
    end
  end

end