Class: FromIDFModel_Test

Inherits:
Minitest::Test
  • Object
show all
Defined in:
lib/measures/from_idf_model/tests/from_idf_model_test.rb

Instance Method Summary collapse

Instance Method Details

#apply_measure_to_model(test_name, args, model_name = nil, result_value = 'Success', warnings_count = 0, info_count = nil) ⇒ Object

method to apply arguments, run measure, and assert results (only populate args hash with non-default argument values)

[View source]

40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/measures/from_idf_model/tests/from_idf_model_test.rb', line 40

def apply_measure_to_model(test_name, args, model_name = nil, result_value = 'Success', warnings_count = 0, info_count = nil)
  # create an instance of the measure
  measure = FromIDFModel.new

  # create an instance of a runner
  runner = OpenStudio::Measure::OSRunner.new(OpenStudio::WorkflowJSON.new)

  if model_name.nil?
    # make an empty model
    model = OpenStudio::Model::Model.new
  else
    # load the test model
    translator = OpenStudio::OSVersion::VersionTranslator.new
    path = OpenStudio::Path.new(File.dirname(__FILE__) + '/' + model_name)
    model = translator.loadModel(path)
    assert(!model.empty?)
    model = model.get
  end

  # get arguments
  arguments = measure.arguments(model)
  argument_map = OpenStudio::Measure.convertOSArgumentVectorToMap(arguments)

  # populate argument with specified hash value if specified
  arguments.each do |arg|
    temp_arg_var = arg.clone
    if args.key?(arg.name)
      assert(temp_arg_var.setValue(args[arg.name]), "could not set #{arg.name} to #{args[arg.name]}.")
    end
    argument_map[arg.name] = temp_arg_var
  end

  # run the measure
  measure.run(model, runner, argument_map)
  result = runner.result

  puts "this is measure #{measure.run(model, runner, argument_map)}"
  # show the output
  puts "measure results for #{test_name}"
  show_output(result)

  # assert that it ran correctly
  if result_value.nil? then result_value = 'Success' end
  assert_equal(result_value, result.value.valueName)

  # check count of warning and info messages
  unless info_count.nil? then assert(result.info.size == info_count) end
  unless warnings_count.nil? then assert(result.warnings.size == warnings_count, "warning count (#{result.warnings.size}) did not match expectation (#{warnings_count})") end

  # if 'Fail' passed in make sure at least one error message (while not typical there may be more than one message)
  if result_value == 'Fail' then assert(result.errors.size >= 1) end

end

#test_example_model_with_output_pathObject

[View source]

94
95
96
97
98
99
# File 'lib/measures/from_idf_model/tests/from_idf_model_test.rb', line 94

def test_example_model_with_output_path
  args = {}
  args['idf_model'] = File.join(File.dirname(__FILE__) + '/../../../../spec/samples/idf/5ZoneAirCooled.idf')
  args['output_file_path'] = File.join(File.dirname(__FILE__) + '/output/5ZoneAirCooled.hbjson')
  apply_measure_to_model(__method__.to_s.gsub('test_',''),args, nil)
end

#test_example_model_without_output_pathObject

[View source]

101
102
103
104
105
# File 'lib/measures/from_idf_model/tests/from_idf_model_test.rb', line 101

def test_example_model_without_output_path
  args = {}
  args['idf_model'] = File.join(File.dirname(__FILE__) + '/../../../../spec/samples/idf/5ZoneAirCooled.idf')
  apply_measure_to_model(__method__.to_s.gsub('test_',''),args, nil)
end