class Test::Unit::Data::ClassMethods::Loader
def initialize(test_case)
- Api: - private
def initialize(test_case) @test_case = test_case end
def load(file_name)
- Api: - private
Other tags:
- See: #load_tsv -
See: #load_csv -
Raises:
-
(ArgumentError)
- if `file_name` is not supported file format.
Parameters:
-
file_name
(String
) -- full path to test data file.
def load(file_name) case File.extname(file_name).downcase when ".csv" load_csv(file_name) when ".tsv" load_tsv(file_name) else raise ArgumentError, "unsupported file format: <#{file_name}>" end end
def load_csv(file_name)
- Api: - private
Other tags:
- Example: Load data from CSV file without header -
Example: Load data from CSV file with header -
def load_csv(file_name) require 'csv' first_row = true header = nil CSV.foreach(file_name) do |row| if first_row first_row = false if row.first == "label" header = row[1..-1] next end end set_test_data(header, row) end end
def load_tsv(file_name)
- Api: - private
Other tags:
- Example: Load data from TSV file without header -
Example: Load data from TSV file with header -
def load_tsv(file_name) require "csv" if CSV.const_defined?(:VERSION) first_row = true header = nil CSV.foreach(file_name, :col_sep => "\t") do |row| if first_row first_row = false if row.first == "label" header = row[1..-1] next end end set_test_data(header, row) end else # for old CSV library first_row = true header = nil CSV.open(file_name, "r", "\t") do |row| if first_row first_row = false if row.first == "label" header = row[1..-1] next end end set_test_data(header, row) end end end
def normalize_value(value)
def normalize_value(value) return true if value == "true" return false if value == "false" begin Integer(value) rescue ArgumentError begin Float(value) rescue ArgumentError value end end end
def set_test_data(header, row)
def set_test_data(header, row) label = row.shift if header data = {} header.each_with_index do |key, i| data[key] = normalize_value(row[i]) end else data = row.collect do |cell| normalize_value(cell) end end @test_case.data(label, data) end