Class: FromGbxmlModel_Test

Inherits:
Minitest::Test
  • Object
show all
Defined in:
lib/measures/from_gbxml_model/tests/from_gbxml_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)



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_gbxml_model/tests/from_gbxml_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 = FromGbxmlModel.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



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

def test_example_model_with_output_path
  args = {}
  args['gbxml_model'] = File.join(File.dirname(__FILE__) + '/../../../../spec/samples/gbxml/gbXML_TRK.xml')
  args['output_file_path'] = File.join(File.dirname(__FILE__) + '/output/gbXML_TRK.hbjson')
  apply_measure_to_model(__method__.to_s.gsub('test_',''),args, nil)
end

#test_example_model_without_output_pathObject



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

def test_example_model_without_output_path
  args = {}
  args['gbxml_model'] = File.join(File.dirname(__FILE__) + '/../../../../spec/samples/gbxml/gbXML_TRK.xml')
  apply_measure_to_model(__method__.to_s.gsub('test_',''),args, nil)
end