class Tryouts::Translators::MinitestTranslator

def generate_code(testrun)

def generate_code(testrun)
  file_basename = File.basename(testrun.source_file, '.rb')
  class_name    = "Test#{file_basename.gsub(/[^A-Za-z0-9]/, '')}"
  lines         = []
  lines << ''
  lines << "require 'minitest/test'"
  lines << "require 'minitest/autorun'"
  lines << ''
  lines << "class #{class_name} < Minitest::Test"
  if testrun.setup && !testrun.setup.empty?
    lines << '  def setup'
    testrun.setup.code.lines.each { |line| lines << "    #{line.chomp}" }
    lines << '  end'
    lines << ''
  end
  testrun.test_cases.each_with_index do |test_case, index|
    next if test_case.empty? || !test_case.expectations?
    method_name = "test_#{index.to_s.rjust(3, '0')}_#{parameterize(test_case.description)}"
    lines << "  def #{method_name}"
    if test_case.exception_expectations?
      # Handle exception expectations
      lines << '    error = assert_raises(StandardError) do'
      unless test_case.code.strip.empty?
        test_case.code.lines.each { |line| lines << "      #{line.chomp}" }
      end
      lines << '    end'
      test_case.exception_expectations.each do |expectation|
        lines << "    assert #{expectation}, \"Exception expectation failed: #{expectation}\""
      end
    else
      # Handle regular expectations
      unless test_case.code.strip.empty?
        lines << '    result = begin'
        test_case.code.lines.each { |line| lines << "      #{line.chomp}" }
        lines << '    end'
      end
      test_case.expectations.each do |expectation|
        lines << "    assert_equal #{expectation}, result"
      end
    end
    lines << '  end'
    lines << ''
  end
  if testrun.teardown && !testrun.teardown.empty?
    lines << '  def teardown'
    testrun.teardown.code.lines.each { |line| lines << "    #{line.chomp}" }
    lines << '  end'
  end
  lines << 'end'
  lines.join("\n")
end