Skip to content

Commit b62448c

Browse files
committed
Add tests
1 parent 56bdc0e commit b62448c

File tree

1 file changed

+86
-0
lines changed

1 file changed

+86
-0
lines changed

tests/test_wind_farm.py

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
import pytest
2+
from windpowerlib import WindFarm, WindTurbine
3+
4+
5+
class TestWindFarm:
6+
7+
@classmethod
8+
def setup_class(self):
9+
"""Setup default values"""
10+
self.test_turbine = {'hub_height': 100,
11+
'turbine_type': 'E-126/4200'}
12+
self.test_turbine_2 = {'hub_height': 90,
13+
'turbine_type': 'V90/2000',
14+
'nominal_power': 2e6}
15+
16+
def test_initialization(self):
17+
"""simple initialization"""
18+
test_farm = {'wind_turbine_fleet': [
19+
{'wind_turbine': WindTurbine(**self.test_turbine),
20+
'number_of_turbines': 3},
21+
{'wind_turbine': WindTurbine(**self.test_turbine_2),
22+
'number_of_turbines': 2}]}
23+
windfarm = WindFarm(**test_farm)
24+
assert windfarm.nominal_power == 3 * 4.2e6 + 2 * 2e6
25+
26+
def test_initialization_2(self):
27+
"""WindTurbine in wind_turbine_fleet not initialized"""
28+
test_farm = {'wind_turbine_fleet': [
29+
{'wind_turbine': None,
30+
'number_of_turbines': 3}]}
31+
msg = 'Wind turbine must be provided as WindTurbine object'
32+
with pytest.raises(ValueError, match=msg):
33+
WindFarm(**test_farm)
34+
35+
def test_initialization_3(self):
36+
"""wind_turbine not specified in wind_turbine_fleet"""
37+
test_farm = {'wind_turbine_fleet': [
38+
{'wind_turbines': None,
39+
'number_of_turbines': 3}]}
40+
msg = 'Missing wind_turbine key in wind turbine'
41+
with pytest.raises(ValueError, match=msg):
42+
WindFarm(**test_farm)
43+
44+
def test_initialization_4(self):
45+
"""deduce number_of_turbines from total_capacity"""
46+
total_capacity = 3e6
47+
test_farm = {'wind_turbine_fleet': [
48+
{'wind_turbine': WindTurbine(**self.test_turbine_2),
49+
'total_capacity': total_capacity}]}
50+
windfarm = WindFarm(**test_farm)
51+
number_of_turbines = total_capacity / \
52+
self.test_turbine_2['nominal_power']
53+
assert number_of_turbines == windfarm.wind_turbine_fleet[0][
54+
'number_of_turbines']
55+
56+
def test_initialization_5(self):
57+
"""deducing number_of_turbines from total_capacity fails"""
58+
wt = WindTurbine(**self.test_turbine)
59+
wt.nominal_power = None
60+
test_farm = {'wind_turbine_fleet': [
61+
{'wind_turbine': wt,
62+
'total_capacity': 3e6}]}
63+
msg = 'Number of turbines of type'
64+
with pytest.raises(ValueError, match=msg):
65+
WindFarm(**test_farm)
66+
67+
def test_initialization_6(self):
68+
"""number_of_turbines and total_capacity not given"""
69+
test_farm = {'wind_turbine_fleet': [
70+
{'wind_turbine': WindTurbine(**self.test_turbine),
71+
'number_of_turbine': 3e6}]}
72+
msg = 'Please provide `number_of_turbines` or `total_capacity`'
73+
with pytest.raises(ValueError, match=msg):
74+
WindFarm(**test_farm)
75+
76+
def test_mean_hub_height(self):
77+
"""tests mean_hub_height method"""
78+
test_farm = {'wind_turbine_fleet': [
79+
{'wind_turbine': WindTurbine(**self.test_turbine),
80+
'number_of_turbines': 2},
81+
{'wind_turbine': WindTurbine(**self.test_turbine_2),
82+
'total_capacity': 3e6}]}
83+
windfarm = WindFarm(**test_farm)
84+
assert 97.265 == pytest.approx(
85+
windfarm.mean_hub_height().hub_height, 1e-3)
86+

0 commit comments

Comments
 (0)