Class: FromHoneybeeModel_Test

Inherits:
Minitest::Test
  • Object
show all
Defined in:
lib/measures/from_honeybee_model/tests/from_honeybee_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
93
94
# File 'lib/measures/from_honeybee_model/tests/from_honeybee_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 = FromHoneybeeModel.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

  # 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

  # save the model to test output directory
  output_file_path = OpenStudio::Path.new(File.dirname(__FILE__) + "/output/#{test_name}_test_output.osm")
  model.save(output_file_path, true)
end

#test_detailed_loadsObject



114
115
116
117
118
# File 'lib/measures/from_honeybee_model/tests/from_honeybee_model_test.rb', line 114

def test_detailed_loads
  args = {}
  args['model_json'] = File.join(File.dirname(__FILE__) + "/../../../../spec/samples/model/model_energy_detailed_loads.json")
  apply_measure_to_model(__method__.to_s.gsub('test_',''),args, nil)
end

#test_multi_zone_officeObject



102
103
104
105
106
# File 'lib/measures/from_honeybee_model/tests/from_honeybee_model_test.rb', line 102

def test_multi_zone_office
  args = {}
  args['model_json'] = File.join(File.dirname(__FILE__) + "/../../../../spec/samples/model/model_complete_multi_zone_office.json")
  apply_measure_to_model(__method__.to_s.gsub('test_',''),args, nil)
end

#test_office_floorObject



120
121
122
123
124
# File 'lib/measures/from_honeybee_model/tests/from_honeybee_model_test.rb', line 120

def test_office_floor
  args = {}
  args['model_json'] = File.join(File.dirname(__FILE__) + "/../../../../spec/samples/model/model_complete_office_floor.json")
  apply_measure_to_model(__method__.to_s.gsub('test_',''),args, nil)
end

#test_shoe_boxObject



96
97
98
99
100
# File 'lib/measures/from_honeybee_model/tests/from_honeybee_model_test.rb', line 96

def test_shoe_box
  args = {}
  args['model_json'] = File.join(File.dirname(__FILE__) + "/../../../../spec/samples/model/model_energy_shoe_box.json")
  apply_measure_to_model(__method__.to_s.gsub('test_',''),args, nil)
end

#test_single_zone_officeObject



108
109
110
111
112
# File 'lib/measures/from_honeybee_model/tests/from_honeybee_model_test.rb', line 108

def test_single_zone_office
  args = {}
  args['model_json'] = File.join(File.dirname(__FILE__) + "/../../../../spec/samples/model/model_complete_single_zone_office.json")
  apply_measure_to_model(__method__.to_s.gsub('test_',''),args, nil)
end