Skip to content

Commit 7920640

Browse files
committed
Completes insulating layer test
1 parent 0b8a1ea commit 7920640

File tree

2 files changed

+80
-88
lines changed

2 files changed

+80
-88
lines changed

src/osut/osut.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -371,7 +371,7 @@ def insulatingLayer(lc=None) -> dict:
371371
i = 0 # iterator
372372

373373
if not hasattr(lc, CN.NS):
374-
return oslg.invalid("layered construction", mth, 1, CN.DBG, res)
374+
return oslg.invalid("lc", mth, 1, CN.DBG, res)
375375

376376
id = lc.nameString()
377377

tests/test_osut.py

Lines changed: 79 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -214,98 +214,91 @@ def test05_construction_thickness(self):
214214
self.assertEqual(o.status(), 0)
215215
self.assertFalse(o.logs())
216216

217-
218217
def test06_insulatingLayer(self):
219218
o = osut.oslg
220219
self.assertEqual(o.status(), 0)
221220
self.assertEqual(o.reset(DBG), DBG)
222221
self.assertEqual(o.level(), DBG)
223222
self.assertEqual(o.status(), 0)
224-
# it "checks (opaque) insulating layers within a layered construction" do
225-
# translator = OpenStudio::OSVersion::VersionTranslator.new
226-
# self.assertTrue(mod1.clean!).to eq(DBG)
227-
#
228-
# file = File.join(__dir__, "files/osms/out/seb2.osm")
229-
# path = OpenStudio::Path.new(file)
230-
# model = translator.loadModel(path)
231-
# self.assertTrue(model).to_not be_empty
232-
# model = model.get
233-
#
234-
# m = "OSut::insulatingLayer"
235-
# m1 = "Invalid 'lc' arg #1 (#{m})"
236-
#
237-
# model.getLayeredConstructions.each do |lc|
238-
# lyr = mod1.insulatingLayer(lc)
239-
# self.assertTrue(lyr).to be_a(Hash)
240-
# self.assertTrue(lyr).to have_key(:index)
241-
# self.assertTrue(lyr).to have_key(:type )
242-
# self.assertTrue(lyr).to have_key(:r)
243-
#
244-
# if lc.isFenestration
245-
# self.assertTrue(mod1.status).to be_zero
246-
# self.assertTrue(lyr[:index]).to be_nil
247-
# self.assertTrue(lyr[:type ]).to be_nil
248-
# self.assertTrue(lyr[:r ]).to be_zero
249-
# next
250-
# end
251-
#
252-
# unless [:standard, :massless].include?(lyr[:type]) # air wall mat
253-
# self.assertTrue(mod1.status).to be_zero
254-
# self.assertTrue(lyr[:index]).to be_nil
255-
# self.assertTrue(lyr[:type ]).to be_nil
256-
# self.assertTrue(lyr[:r ]).to be_zero
257-
# next
258-
# end
259-
#
260-
# self.assertTrue(lyr[:index] < lc.numLayers).to be true
261-
#
262-
# case lc.nameString
263-
# when "EXTERIOR-ROOF"
264-
# self.assertTrue(lyr[:index]).to eq(2)
265-
# self.assertTrue(lyr[:r ]).to be_within(TOL).of(5.08)
266-
# when "EXTERIOR-WALL"
267-
# self.assertTrue(lyr[:index]).to eq(2)
268-
# self.assertTrue(lyr[:r ]).to be_within(TOL).of(1.47)
269-
# when "Default interior ceiling"
270-
# self.assertTrue(lyr[:index]).to be_zero
271-
# self.assertTrue(lyr[:r ]).to be_within(TOL).of(0.12)
272-
# when "INTERIOR-WALL"
273-
# self.assertTrue(lyr[:index]).to eq(1)
274-
# self.assertTrue(lyr[:r ]).to be_within(TOL).of(0.24)
275-
# else
276-
# self.assertTrue(lyr[:index]).to be_zero
277-
# self.assertTrue(lyr[:r ]).to be_within(TOL).of(0.29)
278-
# end
279-
# end
280-
#
281-
# lyr = mod1.insulatingLayer(nil)
282-
# self.assertTrue(mod1.debug?).to be true
283-
# self.assertTrue(lyr[:index]).to be_nil
284-
# self.assertTrue(lyr[:type ]).to be_nil
285-
# self.assertTrue(lyr[:r ]).to be_zero
286-
# self.assertTrue(mod1.debug?).to be true
287-
# self.assertTrue(mod1.logs.size).to eq(1)
288-
# self.assertTrue(mod1.logs.first[:message]).to eq(m1)
289-
#
290-
# self.assertTrue(mod1.clean!).to eq(DBG)
291-
# lyr = mod1.insulatingLayer("")
292-
# self.assertTrue(mod1.debug?).to be true
293-
# self.assertTrue(lyr[:index]).to be_nil
294-
# self.assertTrue(lyr[:type ]).to be_nil
295-
# self.assertTrue(lyr[:r ]).to be_zero
296-
# self.assertTrue(mod1.debug?).to be true
297-
# self.assertTrue(mod1.logs.size).to eq(1)
298-
# self.assertTrue(mod1.logs.first[:message]).to eq(m1)
299-
#
300-
# self.assertTrue(mod1.clean!).to eq(DBG)
301-
# lyr = mod1.insulatingLayer(model)
302-
# self.assertTrue(mod1.debug?).to be true
303-
# self.assertTrue(lyr[:index]).to be_nil
304-
# self.assertTrue(lyr[:type ]).to be_nil
305-
# self.assertTrue(lyr[:r ]).to be_zero
306-
# self.assertTrue(mod1.debug?).to be true
307-
# self.assertTrue(mod1.logs.size).to eq(1)
308-
# self.assertTrue(mod1.logs.first[:message]).to eq(m1)
223+
224+
version = int("".join(openstudio.openStudioVersion().split(".")))
225+
translator = openstudio.osversion.VersionTranslator()
226+
227+
path = openstudio.path("./tests/files/osms/out/seb2.osm")
228+
model = translator.loadModel(path)
229+
self.assertTrue(model)
230+
model = model.get()
231+
232+
m0 = "Invalid 'lc' arg #1 (osut.insulatingLayer)"
233+
234+
for lc in model.getLayeredConstructions():
235+
id = lc.nameString()
236+
lyr = osut.insulatingLayer(lc)
237+
238+
self.assertTrue(isinstance(lyr, dict))
239+
self.assertTrue("index" in lyr)
240+
self.assertTrue("type" in lyr)
241+
self.assertTrue("r" in lyr)
242+
243+
if lc.isFenestration():
244+
self.assertEqual(o.status(), 0)
245+
self.assertFalse(lyr["index"])
246+
self.assertFalse(lyr["type"])
247+
self.assertEqual(lyr["r"], 0)
248+
continue
249+
250+
if lyr["type"] not in ["standard", "massless"]: # air wall material
251+
self.assertEqual(o.status(), 0)
252+
self.assertFalse(lyr["index"])
253+
self.assertFalse(lyr["type"])
254+
self.assertEqual(lyr["r"], 0)
255+
continue
256+
257+
self.assertTrue(lyr["index"] < lc.numLayers())
258+
259+
if id == "EXTERIOR-ROOF":
260+
self.assertEqual(lyr["index"], 2)
261+
self.assertEqual(round(lyr["r"], 2), 5.08)
262+
elif id == "EXTERIOR-WALL":
263+
self.assertEqual(lyr["index"], 2)
264+
self.assertEqual(round(lyr["r"], 2), 1.47)
265+
elif id == "Default interior ceiling":
266+
self.assertEqual(lyr["index"], 0)
267+
self.assertEqual(round(lyr["r"], 2), 0.12)
268+
elif id == "INTERIOR-WALL":
269+
self.assertEqual(lyr["index"], 1)
270+
self.assertEqual(round(lyr["r"], 2), 0.24)
271+
else:
272+
self.assertEqual(lyr["index"], 0)
273+
self.assertEqual(round(lyr["r"], 2), 0.29)
274+
275+
# Final stress tests.
276+
lyr = osut.insulatingLayer(None)
277+
self.assertTrue(o.is_debug())
278+
self.assertFalse(lyr["index"])
279+
self.assertFalse(lyr["type"])
280+
self.assertEqual(round(lyr["r"], 2), 0.00)
281+
self.assertEqual(len(o.logs()), 1)
282+
self.assertEqual(o.logs()[0]["message"], m0)
283+
self.assertEqual(o.clean(), DBG)
284+
285+
lyr = osut.insulatingLayer("")
286+
self.assertTrue(o.is_debug())
287+
self.assertFalse(lyr["index"])
288+
self.assertFalse(lyr["type"])
289+
self.assertEqual(round(lyr["r"], 2), 0.00)
290+
self.assertTrue(len(o.logs()), 1)
291+
self.assertEqual(o.logs()[0]["message"], m0)
292+
self.assertEqual(o.clean(), DBG)
293+
294+
lyr = osut.insulatingLayer(model)
295+
self.assertTrue(o.is_debug())
296+
self.assertFalse(lyr["index"])
297+
self.assertFalse(lyr["type"])
298+
self.assertEqual(round(lyr["r"], 2), 0.00)
299+
self.assertTrue(len(o.logs()), 1)
300+
self.assertEqual(o.logs()[0]["message"], m0)
301+
self.assertEqual(o.clean(), DBG)
309302

310303
def test07_genConstruction(self):
311304
m1 = "'specs' list? expecting dict (osut.genConstruction)"
@@ -950,7 +943,6 @@ def test08_genShade(self):
950943

951944
def test09_internal_mass(self):
952945
o = osut.oslg
953-
print(o.logs())
954946
self.assertEqual(o.status(), 0)
955947
self.assertEqual(o.reset(DBG), DBG)
956948
self.assertEqual(o.level(), DBG)

0 commit comments

Comments
 (0)