openstudio-analysis 1.0.2 → 1.1.0.pre.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +2 -1
  3. data/.travis.yml +2 -2
  4. data/CHANGELOG.md +24 -0
  5. data/Gemfile +1 -5
  6. data/LICENSE.md +1 -1
  7. data/Rakefile +1 -1
  8. data/lib/openstudio-analysis.rb +2 -1
  9. data/lib/openstudio/analysis.rb +23 -27
  10. data/lib/openstudio/analysis/algorithm_attributes.rb +1 -1
  11. data/lib/openstudio/analysis/formulation.rb +1 -1
  12. data/lib/openstudio/analysis/server_api.rb +8 -14
  13. data/lib/openstudio/analysis/support_files.rb +1 -1
  14. data/lib/openstudio/analysis/translator/datapoints.rb +24 -38
  15. data/lib/openstudio/analysis/translator/excel.rb +2 -2
  16. data/lib/openstudio/analysis/translator/workflow.rb +12 -15
  17. data/lib/openstudio/analysis/version.rb +4 -2
  18. data/lib/openstudio/analysis/workflow.rb +28 -36
  19. data/lib/openstudio/analysis/workflow_step.rb +67 -78
  20. data/lib/openstudio/helpers/hash.rb +1 -1
  21. data/lib/openstudio/helpers/string.rb +1 -1
  22. data/{spec/openstudio/server_api_spec.rb → lib/openstudio/helpers/utils.rb} +26 -28
  23. data/lib/openstudio/weather/epw.rb +1 -1
  24. data/openstudio-analysis.gemspec +17 -14
  25. data/update_license.rb +3 -3
  26. metadata +57 -194
  27. data/spec/files/0_1_09_no_variables.xlsx +0 -0
  28. data/spec/files/0_1_09_outputvars.xlsx +0 -0
  29. data/spec/files/0_1_09_setup_version_2.xlsx +0 -0
  30. data/spec/files/0_1_09_small_list.xlsx +0 -0
  31. data/spec/files/0_1_09_small_list_incomplete.xlsx +0 -0
  32. data/spec/files/0_1_09_small_list_repeat_vars.xlsx +0 -0
  33. data/spec/files/0_1_09_small_list_validation_errors.xlsx +0 -0
  34. data/spec/files/0_1_10_proxy.xlsx +0 -0
  35. data/spec/files/0_1_10_proxy_user.xlsx +0 -0
  36. data/spec/files/0_1_10_template_input.xlsx +0 -0
  37. data/spec/files/0_1_11_discrete_variables.xlsx +0 -0
  38. data/spec/files/0_1_12_discrete_dynamic_columns.xlsx +0 -0
  39. data/spec/files/0_2_0_template.xlsx +0 -0
  40. data/spec/files/0_2_0_template_simpletest.xlsx +0 -0
  41. data/spec/files/0_3_0_dynamic_uuids.xlsx +0 -0
  42. data/spec/files/0_3_0_measure_existence.xlsx +0 -0
  43. data/spec/files/0_3_0_outputs.xlsx +0 -0
  44. data/spec/files/0_3_3_short_names.xlsx +0 -0
  45. data/spec/files/0_3_5_multiple_measure_paths.xlsx +0 -0
  46. data/spec/files/0_3_7_unique_measure_names.xlsx +0 -0
  47. data/spec/files/0_3_7_worker_init_final.xlsx +0 -0
  48. data/spec/files/0_4_0_lhs_discrete_continuous.xlsx +0 -0
  49. data/spec/files/0_4_0_multiple_seeds.xlsx +0 -0
  50. data/spec/files/0_4_0_pivot_test.xlsx +0 -0
  51. data/spec/files/analysis/examples/discrete_lhs_example.json +0 -809
  52. data/spec/files/analysis/examples/medium_office_example.json +0 -1674
  53. data/spec/files/analysis/examples/medium_office_workflow.json +0 -1298
  54. data/spec/files/measures/ActualMeasureNoJson/measure.rb +0 -80
  55. data/spec/files/measures/ActualMeasureNoJson/measure.xml +0 -2
  56. data/spec/files/measures/ExampleMeasure/measure.json +0 -3
  57. data/spec/files/measures/ExampleMeasure/measure.rb +0 -5
  58. data/spec/files/measures/ExampleMeasure/measure.xml +0 -1
  59. data/spec/files/measures/IncreaseInsulationRValueForRoofs/measure.json +0 -36
  60. data/spec/files/measures/IncreaseInsulationRValueForRoofs/measure.rb +0 -22
  61. data/spec/files/measures/IncreaseInsulationRValueForRoofs/measure.xml +0 -5
  62. data/spec/files/measures/NoMeasureRbFile/.gitkeep +0 -0
  63. data/spec/files/measures/ReduceLightingLoadsByPercentage/measure.json +0 -3
  64. data/spec/files/measures/ReduceLightingLoadsByPercentage/measure.rb +0 -5
  65. data/spec/files/measures/ReduceLightingLoadsByPercentage/measure.xml +0 -1
  66. data/spec/files/measures/SetThermostatSchedules/measure.json +0 -63
  67. data/spec/files/measures/SetThermostatSchedules/measure.rb +0 -254
  68. data/spec/files/measures/SetThermostatSchedules/measure.xml +0 -2
  69. data/spec/files/measures/example_measure_auto_directory_name/measure.json +0 -3
  70. data/spec/files/measures/example_measure_auto_directory_name/measure.rb +0 -5
  71. data/spec/files/measures/example_measure_auto_directory_name/measure.xml +0 -1
  72. data/spec/files/measures/reduce_lighting_loads_by_percentage/measure.json +0 -3
  73. data/spec/files/measures/reduce_lighting_loads_by_percentage/measure.rb +0 -5
  74. data/spec/files/measures/reduce_lighting_loads_by_percentage/measure.xml +0 -1
  75. data/spec/files/measures/reduce_space_infiltration_by_percentage/measure.rb +0 -5
  76. data/spec/files/measures/reduce_space_infiltration_by_percentage/measure.xml +0 -1
  77. data/spec/files/measures/rotate_building/measure.rb +0 -5
  78. data/spec/files/measures/rotate_building/measure.xml +0 -1
  79. data/spec/files/measures/set_window_to_wall_ratio_by_facade/measure.rb +0 -5
  80. data/spec/files/measures/set_window_to_wall_ratio_by_facade/measure.xml +0 -1
  81. data/spec/files/measures_second_path/measure_in_another_dir/measure.json +0 -3
  82. data/spec/files/measures_second_path/measure_in_another_dir/measure.rb +0 -5
  83. data/spec/files/measures_second_path/measure_in_another_dir/measure.xml +0 -1
  84. data/spec/files/partial_weather.epw +0 -32
  85. data/spec/files/partial_weather_2.epw +0 -32
  86. data/spec/files/small_seed.osm +0 -4622
  87. data/spec/files/worker_init/first_file.rb +0 -15
  88. data/spec/files/worker_init/second_file.sh +0 -4
  89. data/spec/files/workflow/analysis.osa +0 -1334
  90. data/spec/files/workflow/datapoint_0.osd +0 -65
  91. data/spec/files/workflow/datapoint_1.osd +0 -65
  92. data/spec/files/workflow/datapoint_2.osd +0 -65
  93. data/spec/files/workflow/datapoint_wrong_osa_id.osd +0 -65
  94. data/spec/integration/server_api_spec.rb +0 -83
  95. data/spec/openstudio/excel_spec.rb +0 -606
  96. data/spec/openstudio/formulation_spec.rb +0 -200
  97. data/spec/openstudio/hash_spec.rb +0 -56
  98. data/spec/openstudio/osw_spec.rb +0 -129
  99. data/spec/openstudio/string_spec.rb +0 -34
  100. data/spec/openstudio/support_files_spec.rb +0 -89
  101. data/spec/openstudio/weather_spec.rb +0 -80
  102. data/spec/openstudio/workflow_spec.rb +0 -126
  103. data/spec/openstudio/workflow_step_spec.rb +0 -158
  104. data/spec/schema/osa.json +0 -613
  105. data/spec/schema/osa.png +0 -0
  106. data/spec/schema/osd.json +0 -110
  107. data/spec/schema/osd.png +0 -0
  108. data/spec/spec_helper.rb +0 -56
@@ -1,200 +0,0 @@
1
- # *******************************************************************************
2
- # OpenStudio(R), Copyright (c) 2008-2019, Alliance for Sustainable Energy, LLC.
3
- # All rights reserved.
4
- # Redistribution and use in source and binary forms, with or without
5
- # modification, are permitted provided that the following conditions are met:
6
- #
7
- # (1) Redistributions of source code must retain the above copyright notice,
8
- # this list of conditions and the following disclaimer.
9
- #
10
- # (2) Redistributions in binary form must reproduce the above copyright notice,
11
- # this list of conditions and the following disclaimer in the documentation
12
- # and/or other materials provided with the distribution.
13
- #
14
- # (3) Neither the name of the copyright holder nor the names of any contributors
15
- # may be used to endorse or promote products derived from this software without
16
- # specific prior written permission from the respective party.
17
- #
18
- # (4) Other than as required in clauses (1) and (2), distributions in any form
19
- # of modifications or other derivative works may not use the "OpenStudio"
20
- # trademark, "OS", "os", or any other confusingly similar designation without
21
- # specific prior written permission from Alliance for Sustainable Energy, LLC.
22
- #
23
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
24
- # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25
- # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
26
- # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER, THE UNITED STATES
27
- # GOVERNMENT, OR ANY CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
28
- # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
29
- # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
30
- # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
31
- # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
32
- # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
33
- # EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34
- # *******************************************************************************
35
-
36
- require 'spec_helper'
37
-
38
- describe OpenStudio::Analysis::Formulation do
39
- it 'should create an analysis' do
40
- a = OpenStudio::Analysis.create('Name of an analysis')
41
- expect(a).not_to be nil
42
- expect(a.display_name).to eq 'Name of an analysis'
43
- expect(a).to be_a OpenStudio::Analysis::Formulation
44
- end
45
-
46
- it 'should add measure paths' do
47
- expect(OpenStudio::Analysis.measure_paths).to eq ['./measures']
48
- OpenStudio::Analysis.measure_paths = ['a', 'b']
49
- expect(OpenStudio::Analysis.measure_paths).to eq ['a', 'b']
50
-
51
- # append a measure apth
52
- OpenStudio::Analysis.measure_paths << 'c'
53
- expect(OpenStudio::Analysis.measure_paths).to eq ['a', 'b', 'c']
54
- end
55
-
56
- it 'should have a workflow object' do
57
- a = OpenStudio::Analysis.create('workflow')
58
- expect(a.workflow).not_to be nil
59
- end
60
-
61
- it 'should load the workflow from a file' do
62
- OpenStudio::Analysis.measure_paths << 'spec/files/measures'
63
- a = OpenStudio::Analysis.create('workflow')
64
- file = File.join('spec/files/analysis/examples/medium_office_workflow.json')
65
- expect(a.workflow = OpenStudio::Analysis::Workflow.from_file(file)).not_to be nil
66
- end
67
-
68
- it 'should save a hash (version 1)' do
69
- OpenStudio::Analysis.measure_paths << 'spec/files/measures'
70
- a = OpenStudio::Analysis.create('workflow 2')
71
- file = File.join('spec/files/analysis/examples/medium_office_workflow.json')
72
- expect(a.workflow = OpenStudio::Analysis::Workflow.from_file(file)).not_to be nil
73
- h = a.to_hash
74
- # expect(h[:workflow].empty?).not_to eq true
75
- end
76
-
77
- it 'should read from windows fqp' do
78
- OpenStudio::Analysis.measure_paths << 'spec/files/measures'
79
- a = OpenStudio::Analysis.create('workflow 2')
80
- file = File.expand_path(File.join('spec/files/analysis/examples/medium_office_workflow.json'))
81
- file = file.tr('/', '\\') if Gem.win_platform?
82
- expect(a.workflow = OpenStudio::Analysis::Workflow.from_file(file)).not_to be nil
83
- end
84
-
85
- it 'should create a save an empty analysis' do
86
- a = OpenStudio::Analysis.create('workflow')
87
- run_dir = 'spec/files/export/workflow'
88
-
89
- FileUtils.mkdir_p run_dir
90
-
91
- h = a.to_hash
92
- expect(h[:analysis][:problem][:analysis_type]).to eq nil
93
- expect(a.save("#{run_dir}/analysis.json")).to eq true
94
- end
95
-
96
- it 'should increment objective functions' do
97
- a = OpenStudio::Analysis.create('my analysis')
98
-
99
- a.add_output(
100
- display_name: 'Total Natural Gas',
101
- name: 'standard_report_legacy.total_natural_gas',
102
- units: 'MJ/m2',
103
- objective_function: true
104
- )
105
-
106
- expect(a.to_hash[:analysis][:output_variables].first[:objective_function_index]).to eq 0
107
-
108
- a.add_output(
109
- display_name: 'Another Output',
110
- name: 'standard_report_legacy.output_2',
111
- units: 'MJ/m2',
112
- objective_function: true
113
- )
114
- expect(a.to_hash[:analysis][:output_variables].last[:objective_function_index]).to eq 1
115
-
116
- a.add_output(
117
- display_name: 'Another Output Not Objective Function',
118
- name: 'standard_report_legacy.output_3',
119
- units: 'MJ/m2',
120
- objective_function: false
121
- )
122
-
123
- a.add_output(
124
- display_name: 'Another Output 4',
125
- name: 'standard_report_legacy.output_4',
126
- units: 'MJ/m2',
127
- objective_function: true
128
- )
129
- expect(a.to_hash[:analysis][:output_variables].last[:objective_function_index]).to eq 2
130
- end
131
-
132
- it 'should not add the same output' do
133
- a = OpenStudio::Analysis.create('my analysis')
134
-
135
- a.add_output(
136
- display_name: 'Total Natural Gas',
137
- name: 'standard_report_legacy.total_natural_gas',
138
- units: 'MJ/m2',
139
- objective_function: true
140
- )
141
-
142
- a.add_output(
143
- display_name: 'Total Natural Gas',
144
- name: 'standard_report_legacy.total_natural_gas',
145
- units: 'MJ/m2',
146
- objective_function: false # this doesn't do anything
147
- )
148
-
149
- expect(a.to_hash[:analysis][:output_variables].size).to eq 1
150
- expect(a.to_hash[:analysis][:output_variables].last[:objective_function]).to eq true
151
- end
152
-
153
- it 'should create a new formulation' do
154
- a = OpenStudio::Analysis.create('my analysis')
155
- p = 'spec/files/measures/SetThermostatSchedules'
156
-
157
- a.workflow.add_measure_from_path('thermostat', 'thermostat', p)
158
- m = a.workflow.add_measure_from_path('thermostat_2', 'thermostat 2', p)
159
-
160
- d = {
161
- type: 'uniform',
162
- minimum: 5,
163
- maximum: 7,
164
- mean: 6.2
165
- }
166
- m.make_variable('cooling_sch', 'Change the cooling schedule', d)
167
- m.argument_value('heating_sch', 'some-string')
168
-
169
- expect(a.workflow.measures.size).to eq 2
170
- expect(a.workflow.measures[1].arguments[3][:value]).to eq 'some-string'
171
- expect(a.workflow.measures[1].variables[0][:uuid]).to match /[\w]{8}(-[\w]{4}){3}-[\w]{12}/
172
-
173
- a.analysis_type = 'single_run'
174
- a.algorithm.set_attribute('sample_method', 'all_variables')
175
- o = {
176
- display_name: 'Total Natural Gas',
177
- display_name_short: 'Total Natural Gas',
178
- metadata_id: nil,
179
- name: 'total_natural_gas',
180
- units: 'MJ/m2',
181
- objective_function: true,
182
- objective_function_index: 0,
183
- objective_function_target: 330.7,
184
- scaling_factor: nil,
185
- objective_function_group: nil
186
- }
187
- a.add_output(o)
188
-
189
- a.seed_model = 'spec/files/small_seed.osm'
190
- a.weather_file = 'spec/files/partial_weather.epw'
191
-
192
- expect(a.seed_model.first).to eq 'spec/files/small_seed.osm'
193
-
194
- expect(a.to_hash[:analysis][:problem][:algorithm][:objective_functions]).to match ['total_natural_gas']
195
- expect(a.analysis_type).to eq 'single_run'
196
-
197
- dp_hash = a.to_static_data_point_hash
198
- expect(dp_hash[:data_point][:set_variable_values].values).to eq ['*No Change*']
199
- end
200
- end
@@ -1,56 +0,0 @@
1
- # *******************************************************************************
2
- # OpenStudio(R), Copyright (c) 2008-2019, Alliance for Sustainable Energy, LLC.
3
- # All rights reserved.
4
- # Redistribution and use in source and binary forms, with or without
5
- # modification, are permitted provided that the following conditions are met:
6
- #
7
- # (1) Redistributions of source code must retain the above copyright notice,
8
- # this list of conditions and the following disclaimer.
9
- #
10
- # (2) Redistributions in binary form must reproduce the above copyright notice,
11
- # this list of conditions and the following disclaimer in the documentation
12
- # and/or other materials provided with the distribution.
13
- #
14
- # (3) Neither the name of the copyright holder nor the names of any contributors
15
- # may be used to endorse or promote products derived from this software without
16
- # specific prior written permission from the respective party.
17
- #
18
- # (4) Other than as required in clauses (1) and (2), distributions in any form
19
- # of modifications or other derivative works may not use the "OpenStudio"
20
- # trademark, "OS", "os", or any other confusingly similar designation without
21
- # specific prior written permission from Alliance for Sustainable Energy, LLC.
22
- #
23
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
24
- # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25
- # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
26
- # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER, THE UNITED STATES
27
- # GOVERNMENT, OR ANY CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
28
- # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
29
- # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
30
- # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
31
- # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
32
- # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
33
- # EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34
- # *******************************************************************************
35
-
36
- require 'spec_helper'
37
-
38
- describe Hash do
39
- context 'deep key' do
40
- before :all do
41
- @h = {
42
- a: ['array_1', 'array_2'],
43
- b: {
44
- c: {
45
- 'string_key' => 'finally'
46
- }
47
- }
48
- }
49
- end
50
-
51
- it 'should find the key' do
52
- expect(@h.deep_find(:a)).to eq ['array_1', 'array_2']
53
- expect(@h.deep_find('string_key')).to eq 'finally'
54
- end
55
- end
56
- end
@@ -1,129 +0,0 @@
1
- # *******************************************************************************
2
- # OpenStudio(R), Copyright (c) 2008-2019, Alliance for Sustainable Energy, LLC.
3
- # All rights reserved.
4
- # Redistribution and use in source and binary forms, with or without
5
- # modification, are permitted provided that the following conditions are met:
6
- #
7
- # (1) Redistributions of source code must retain the above copyright notice,
8
- # this list of conditions and the following disclaimer.
9
- #
10
- # (2) Redistributions in binary form must reproduce the above copyright notice,
11
- # this list of conditions and the following disclaimer in the documentation
12
- # and/or other materials provided with the distribution.
13
- #
14
- # (3) Neither the name of the copyright holder nor the names of any contributors
15
- # may be used to endorse or promote products derived from this software without
16
- # specific prior written permission from the respective party.
17
- #
18
- # (4) Other than as required in clauses (1) and (2), distributions in any form
19
- # of modifications or other derivative works may not use the "OpenStudio"
20
- # trademark, "OS", "os", or any other confusingly similar designation without
21
- # specific prior written permission from Alliance for Sustainable Energy, LLC.
22
- #
23
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
24
- # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25
- # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
26
- # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER, THE UNITED STATES
27
- # GOVERNMENT, OR ANY CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
28
- # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
29
- # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
30
- # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
31
- # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
32
- # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
33
- # EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34
- # *******************************************************************************
35
-
36
- require 'spec_helper'
37
-
38
- describe OpenStudio::Analysis::Translator::Workflow do
39
- before :all do
40
- clean_dir = File.expand_path 'spec/files/workflow/datapoints'
41
-
42
- if Dir.exist? clean_dir
43
- FileUtils.rm_rf clean_dir
44
- end
45
- end
46
-
47
- context 'read in the osa' do
48
- let(:osa_path) { File.expand_path 'analysis.osa' }
49
-
50
- before(:each) do
51
- Dir.chdir 'spec/files/workflow'
52
- @translator = OpenStudio::Analysis::Translator::Workflow.new(osa_path)
53
- end
54
-
55
- after(:each) do
56
- Dir.chdir '../../..'
57
- end
58
-
59
- it 'should find and load the osa' do
60
- expect(@translator).not_to be_nil
61
- end
62
-
63
- it 'should load the analysis' do
64
- expect(@translator.osa.class).to eq(Hash)
65
- expect(@translator.osa).not_to eq({})
66
- end
67
-
68
- it 'should not have measure or file paths' do
69
- expect(@translator.file_paths).to eq([])
70
- expect(@translator.measure_paths).to eq([])
71
- end
72
-
73
- it 'should have steps' do
74
- expect(@translator.steps.class).to eq(Array)
75
- expect(@translator.steps).not_to eq([])
76
- @translator.steps.each do |step|
77
- expect(step.class).to eq(Hash)
78
- expect(step).not_to eq({})
79
- end
80
- end
81
- end
82
-
83
- context 'write individual osws' do
84
- let(:osa_path) { 'analysis.osa' }
85
-
86
- before(:each) do
87
- FileUtils.mkdir_p 'spec/files/export/workflow' unless Dir.exist? 'spec/files/export/workflow'
88
-
89
- Dir.chdir 'spec/files/workflow'
90
- @translator = OpenStudio::Analysis::Translator::Workflow.new(osa_path)
91
- end
92
-
93
- after(:each) do
94
- Dir.chdir '../../..'
95
- end
96
-
97
- it 'should write a single osd' do
98
- osd_path = 'datapoint_0.osd'
99
- result = @translator.process_datapoint(osd_path)
100
- expect(result).to be_a(Hash)
101
-
102
- # Save the file to the export directory
103
- File.open('../../../spec/files/export/workflow/0.osw', 'w') { |f| f << JSON.pretty_generate(result) }
104
-
105
- expect(result.key?(:seed_model)).to eq false
106
- expect(result[:seed_file]).to eq 'large_office_air_cooled_chiller.osm'
107
- expect(result[:weather_file]).to eq 'USA_CO_Denver.Intl.AP.725650_TMY3.epw'
108
- expect(result[:file_format_version]).to eq '0.0.1'
109
- end
110
-
111
- it 'should not write a osd with a different osa id' do
112
- osd_path = 'datapoint_wrong_osa_id.osd'
113
- expect { @translator.process_datapoint(osd_path).first }.to raise_error(RuntimeError)
114
- end
115
-
116
- it 'should write several osds' do
117
- osd_paths = ['datapoint_0.osd', 'datapoint_1.osd', 'datapoint_2.osd']
118
- r = @translator.process_datapoints(osd_paths)
119
- expect(r.size).to eq 3
120
- end
121
-
122
- it 'should not fail when one osd is bad' do
123
- osd_paths = ['datapoint_0.osd', 'datapoint_1.osd', 'datapoint_wrong_osa_id.osd']
124
- r = @translator.process_datapoints(osd_paths)
125
- expect(r[0]).to be_a Hash
126
- expect(r[2]).to eq nil
127
- end
128
- end
129
- end
@@ -1,34 +0,0 @@
1
- # *******************************************************************************
2
- # OpenStudio(R), Copyright (c) 2008-2019, Alliance for Sustainable Energy, LLC.
3
- # All rights reserved.
4
- # Redistribution and use in source and binary forms, with or without
5
- # modification, are permitted provided that the following conditions are met:
6
- #
7
- # (1) Redistributions of source code must retain the above copyright notice,
8
- # this list of conditions and the following disclaimer.
9
- #
10
- # (2) Redistributions in binary form must reproduce the above copyright notice,
11
- # this list of conditions and the following disclaimer in the documentation
12
- # and/or other materials provided with the distribution.
13
- #
14
- # (3) Neither the name of the copyright holder nor the names of any contributors
15
- # may be used to endorse or promote products derived from this software without
16
- # specific prior written permission from the respective party.
17
- #
18
- # (4) Other than as required in clauses (1) and (2), distributions in any form
19
- # of modifications or other derivative works may not use the "OpenStudio"
20
- # trademark, "OS", "os", or any other confusingly similar designation without
21
- # specific prior written permission from Alliance for Sustainable Energy, LLC.
22
- #
23
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
24
- # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25
- # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
26
- # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER, THE UNITED STATES
27
- # GOVERNMENT, OR ANY CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
28
- # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
29
- # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
30
- # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
31
- # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
32
- # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
33
- # EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34
- # *******************************************************************************
@@ -1,89 +0,0 @@
1
- # *******************************************************************************
2
- # OpenStudio(R), Copyright (c) 2008-2019, Alliance for Sustainable Energy, LLC.
3
- # All rights reserved.
4
- # Redistribution and use in source and binary forms, with or without
5
- # modification, are permitted provided that the following conditions are met:
6
- #
7
- # (1) Redistributions of source code must retain the above copyright notice,
8
- # this list of conditions and the following disclaimer.
9
- #
10
- # (2) Redistributions in binary form must reproduce the above copyright notice,
11
- # this list of conditions and the following disclaimer in the documentation
12
- # and/or other materials provided with the distribution.
13
- #
14
- # (3) Neither the name of the copyright holder nor the names of any contributors
15
- # may be used to endorse or promote products derived from this software without
16
- # specific prior written permission from the respective party.
17
- #
18
- # (4) Other than as required in clauses (1) and (2), distributions in any form
19
- # of modifications or other derivative works may not use the "OpenStudio"
20
- # trademark, "OS", "os", or any other confusingly similar designation without
21
- # specific prior written permission from Alliance for Sustainable Energy, LLC.
22
- #
23
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
24
- # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25
- # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
26
- # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER, THE UNITED STATES
27
- # GOVERNMENT, OR ANY CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
28
- # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
29
- # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
30
- # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
31
- # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
32
- # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
33
- # EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34
- # *******************************************************************************
35
-
36
- require_relative './../spec_helper'
37
-
38
- describe OpenStudio::Analysis::SupportFiles do
39
- before :all do
40
- @s = OpenStudio::Analysis::SupportFiles.new
41
- expect(@s).to be_a OpenStudio::Analysis::SupportFiles
42
- end
43
-
44
- it 'should add files' do
45
- f = 'spec/files/worker_init/first_file.rb'
46
- @s.add(f)
47
-
48
- expect(@s.size).to eq 1
49
- expect(@s.files.first[:file]).to eq f
50
-
51
- # add some other items
52
- @s.add('spec/files/worker_init/second_file.sh')
53
-
54
- expect(@s.size).to eq 2
55
- @s.each do |f|
56
- expect(f).to_not be nil
57
- end
58
- end
59
-
60
- it 'should remove existing items' do
61
- f = 'spec/files/worker_init/second_file.sh'
62
- @s.add(f)
63
-
64
- @s.clear
65
- expect(@s.size).to eq 0
66
- end
67
-
68
- it 'should only add existing files' do
69
- f = 'spec/files/worker_init/second_file.sh'
70
- @s.add(f)
71
- @s.add(f)
72
-
73
- expect(@s.size).to eq 1
74
-
75
- f = 'non-existent.rb'
76
- expect { @s.add(f) }.to raise_error /Path or file does not exist and cannot be added.*/
77
- end
78
-
79
- it 'should add metadata data' do
80
- end
81
-
82
- it 'should add a directory' do
83
- @s.clear
84
- @s.add_files('spec/files/measures/**/*.rb', d: 'new')
85
-
86
- expect(@s.size).to eq 10
87
- expect(@s[0][:metadata][:d]).to eq 'new'
88
- end
89
- end