Class: FromHoneybeeSimulationParameter_Test

Inherits:
Minitest::Test
  • Object
show all
Defined in:
lib/measures/from_honeybee_simulation_parameter/tests/from_honeybee_simulation_parameter_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_simulation_parameter/tests/from_honeybee_simulation_parameter_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 = FromHoneybeeSimulationParameter.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_simulation_par_detailedObject



103
104
105
106
107
# File 'lib/measures/from_honeybee_simulation_parameter/tests/from_honeybee_simulation_parameter_test.rb', line 103

def test_simulation_par_detailed
  args = {}
  args['simulation_parameter_json'] = File.join(File.dirname(__FILE__) +  "/../../../../spec/samples/simulation_parameter/simulation_par_detailed.json")
  apply_measure_to_model(__method__.to_s.gsub('test_',''),args, nil)
end

#test_simulation_par_simpleObject



96
97
98
99
100
101
# File 'lib/measures/from_honeybee_simulation_parameter/tests/from_honeybee_simulation_parameter_test.rb', line 96

def test_simulation_par_simple
  args = {}
  args['simulation_parameter_json'] = File.join(File.dirname(__FILE__) +
  "/../../../../spec/samples/simulation_parameter/simulation_par_simple.json")
  apply_measure_to_model(__method__.to_s.gsub('test_',''),args, nil)
end