module Test::Unit::Data::ClassMethods

Public Instance Methods

data(*arguments, &block) click to toggle source

This method provides Data-Driven-Test functionality.

Define test data in the test code.

@overload data(label, data)

@param [String] label specify test case name.
@param data specify test data.

@example data(label, data)
  data("empty string", [true, ""])
  data("plain string", [false, "hello"])
  def test_empty?(data)
    expected, target = data
    assert_equal(expected, target.empty?)
  end

@overload data(data_set)

@param [Hash] data_set specify test data as a Hash that
  key is test label and value is test data.

@example data(data_set)
  data("empty string" => [true, ""],
       "plain string" => [false, "hello"])
  def test_empty?(data)
    expected, target = data
    assert_equal(expected, target.empty?)
  end

@overload data(&block)

@yieldreturn [Hash] return test data set as a Hash that
  key is test label and value is test data.

@example data(&block)
  data do
    data_set = {}
    data_set["empty string"] = [true, ""]
    data_set["plain string"] = [false, "hello"]
    data_set
  end
  def test_empty?(data)
    expected, target = data
    assert_equal(expected, target.empty?)
  end
# File lib/test/unit/data.rb, line 55
def data(*arguments, &block)
  n_arguments = arguments.size
  case n_arguments
  when 0
    raise ArgumentError, "no block is given" unless block_given?
    data_set = block
  when 1
    data_set = arguments[0]
  when 2
    data_set = {arguments[0] => arguments[1]}
  else
    message = "wrong number arguments(#{n_arguments} for 1..2)"
    raise ArgumentError, message
  end
  current_data = current_attribute(:data)[:value] || []
  attribute(:data, current_data + [data_set])
end
load_data(file_name) click to toggle source

This method provides Data-Driven-Test functionality.

Load test data from the file. This is shorthand to load test data from file. If you want to load complex file, you can use {#data} with block.

@param [String] file_name full path to test data file.

File format is automatically detected from filename extension.

@raise [ArgumentError] if file_name is not supported file format. @see Test::Unit::Data::ClassMethods::Loader#load

@example Load data from CSV file

load_data("/path/to/test-data.csv")
def test_empty?(data)
  assert_equal(data["expected"], data["target"].empty?)
end
# File lib/test/unit/data.rb, line 90
def load_data(file_name)
  loader = Loader.new(self)
  loader.load(file_name)
end