64 lines
2.8 KiB
Python
64 lines
2.8 KiB
Python
import unittest
|
|
from unittest.mock import MagicMock
|
|
|
|
from nose.tools import assert_almost_equal
|
|
|
|
from helix.calculators.wind_pressure_calculator import WindPressureCalculator
|
|
from helix.constants.exposure_category import ExposureCategory
|
|
|
|
|
|
class WindPressureCalculatorTest(unittest.TestCase):
|
|
def setUp(self):
|
|
self.values = MagicMock()
|
|
self.values.wind_speed.return_value = 110
|
|
self.values.exposure_category_transition_distance.return_value = 1000
|
|
self.subject = WindPressureCalculator(self.values)
|
|
|
|
def test_kz_with_exposure_BC_and_roof_height_less_than_15_feet(self):
|
|
assert_almost_equal(self.subject.calculate_k_z(12, ExposureCategory.B_C, 1000), 0.686, 3)
|
|
|
|
def test_kz_with_exposure_BC_and_roof_height_greater_than_15_feet(self):
|
|
assert_almost_equal(self.subject.calculate_k_z(100, ExposureCategory.B_C, 1000), 1.023, 3)
|
|
|
|
def test_kz_with_exposure_CB_and_roof_height_less_than_30_feet(self):
|
|
assert_almost_equal(self.subject.calculate_k_z(25, ExposureCategory.C_B, 1000), 0.856, 3)
|
|
|
|
def test_kz_with_exposure_CB_and_roof_height_greater_than_30_feet(self):
|
|
assert_almost_equal(self.subject.calculate_k_z(100, ExposureCategory.C_B, 1000), 1.139, 3)
|
|
|
|
def test_qz_with_exposure_B_and_roof_height_greater_than_30_feet(self):
|
|
self.values.building_height.return_value = 35
|
|
self.values.exposure_category.return_value = ExposureCategory.B
|
|
|
|
assert_almost_equal(self.subject.q_z(self.subject.K_z()), 19.276, 2)
|
|
|
|
def test_qz_with_exposure_B_and_roof_height_less_than_30_feet(self):
|
|
self.values.building_height.return_value = 12
|
|
self.values.exposure_category.return_value = ExposureCategory.B
|
|
|
|
assert_almost_equal(self.subject.q_z(self.subject.K_z()), 18.430, 2)
|
|
|
|
def test_qz_with_exposure_C_and_roof_height_greater_than_15_feet(self):
|
|
self.values.building_height.return_value = 35
|
|
self.values.exposure_category.return_value = ExposureCategory.C
|
|
|
|
assert_almost_equal(self.subject.q_z(self.subject.K_z()), 26.715, 2)
|
|
|
|
def test_qz_with_exposure_C_and_roof_height_less_than_15_feet(self):
|
|
self.values.building_height.return_value = 12
|
|
self.values.exposure_category.return_value = ExposureCategory.C
|
|
|
|
assert_almost_equal(self.subject.q_z(self.subject.K_z()), 22.35078017, 2)
|
|
|
|
def test_qz_with_exposure_D_and_roof_height_greater_than_15_feet(self):
|
|
self.values.building_height.return_value = 35
|
|
self.values.exposure_category.return_value = ExposureCategory.D
|
|
|
|
assert_almost_equal(self.subject.q_z(self.subject.K_z()), 31.432, 2)
|
|
|
|
def test_qz_with_exposure_D_and_roof_height_less_than_15_feet(self):
|
|
self.values.building_height.return_value = 12
|
|
self.values.exposure_category.return_value = ExposureCategory.D
|
|
|
|
assert_almost_equal(self.subject.q_z(self.subject.K_z()), 27.126, 2)
|