11from pandas .util .testing import assert_series_equal
22from windpowerlib .power_output import (power_coefficient_curve ,
3- cp_curve_density_corr ,
4- power_curve , p_curve_density_corr )
3+ power_curve , _p_curve_density_corr )
54import pandas as pd
65import numpy as np
76from numpy .testing import assert_allclose
7+ import pytest
88
99
1010class TestPowerOutput :
@@ -16,6 +16,7 @@ def test_power_coefficient_curve(self):
1616 'cp_values' : pd .Series ([0.3 , 0.4 , 0.5 ],
1717 index = [4.0 , 5.0 , 6.0 ])}
1818
19+ # Tests without density correction:
1920 # Test wind_speed as pd.Series with density as pd.Series and np.array
2021 power_output_exp = pd .Series (data = [0.0 , 244615.399 , 0.0 ],
2122 name = 'feedin_wind_turbine' )
@@ -24,7 +25,6 @@ def test_power_coefficient_curve(self):
2425 parameters ['density' ] = np .array (parameters ['density' ])
2526 assert_series_equal (power_coefficient_curve (** parameters ),
2627 power_output_exp )
27-
2828 # Test wind_speed as np.array with density as np.array and pd.Series
2929 power_output_exp = np .array ([0.0 , 244615.399 , 0.0 ])
3030 parameters ['wind_speed' ] = np .array (parameters ['wind_speed' ])
@@ -36,71 +36,91 @@ def test_power_coefficient_curve(self):
3636 power_output_exp )
3737 assert isinstance (power_coefficient_curve (** parameters ), np .ndarray )
3838
39- def test_cp_curve_density_corrected (self ):
40- parameters = {'wind_speed' : pd .Series (data = [2.0 , 5.5 , 7.0 ]),
41- 'density' : pd .Series (data = [1.3 , 1.3 , 1.3 ]),
42- 'rotor_diameter' : 80 ,
43- 'cp_values' : pd .Series ([0.3 , 0.4 , 0.5 ],
44- index = [4.0 , 5.0 , 6.0 ])}
45-
46- # Test wind_speed as pd.Series with density as pd.Series and np.array
39+ # Tests with density correction:
40+ # Test wind_speed as np.array with density as pd.Series and np.array
41+ power_output_exp = np .array ([0.0 , 262869.785 , 0.0 ])
42+ parameters ['density_corr' ] = True
43+ assert_allclose (power_coefficient_curve (** parameters ),
44+ power_output_exp )
45+ assert isinstance (power_coefficient_curve (** parameters ), np .ndarray )
46+ parameters ['density' ] = np .array (parameters ['density' ])
47+ assert_allclose (power_coefficient_curve (** parameters ),
48+ power_output_exp )
49+ assert isinstance (power_coefficient_curve (** parameters ), np .ndarray )
50+ # Test wind_speed as pd.Series with density as np. array and pd.Series
4751 power_output_exp = pd .Series (data = [0.0 , 262869.785 , 0.0 ],
4852 name = 'feedin_wind_turbine' )
49- assert_series_equal (cp_curve_density_corr (** parameters ),
53+ parameters ['wind_speed' ] = pd .Series (data = parameters ['wind_speed' ])
54+ assert_series_equal (power_coefficient_curve (** parameters ),
5055 power_output_exp )
51- parameters ['density' ] = np . array ( parameters ['density' ])
52- assert_series_equal (cp_curve_density_corr (** parameters ),
56+ parameters ['density' ] = pd . Series ( data = parameters ['density' ])
57+ assert_series_equal (power_coefficient_curve (** parameters ),
5358 power_output_exp )
5459
55- # Test wind_speed as np.array with density as np.array and pd.Series
56- power_output_exp = np .array ([0.0 , 262869.785 , 0.0 ])
57- parameters ['wind_speed' ] = np .array (parameters ['wind_speed' ])
58- assert_allclose (cp_curve_density_corr (** parameters ),
59- power_output_exp )
60- assert isinstance (cp_curve_density_corr (** parameters ), np .ndarray )
61- parameters ['density' ] = pd .Series (data = parameters ['density' ])
62- assert_allclose (cp_curve_density_corr (** parameters ),
63- power_output_exp )
64- assert isinstance (cp_curve_density_corr (** parameters ), np .ndarray )
60+ # Raise TypeErrors due to wrong type of `density_corr`
61+ with pytest .raises (TypeError ):
62+ parameters ['density' ] = 'wrong_type'
63+ power_coefficient_curve (** parameters )
6564
6665 def test_power_curve (self ):
6766 parameters = {'wind_speed' : pd .Series (data = [2.0 , 5.5 , 7.0 ]),
6867 'p_values' : pd .Series ([300 , 400 , 500 ],
69- index = [4.0 , 5.0 , 6.0 ])}
68+ index = [4.0 , 5.0 , 6.0 ]),
69+ 'density' : pd .Series (data = [1.3 , 1.3 , 1.3 ]),
70+ 'density_corr' : False }
7071
72+ # Tests without density correction:
7173 # Test wind_speed as pd.Series
7274 power_output_exp = pd .Series (data = [0.0 , 450.0 , 0.0 ],
7375 name = 'feedin_wind_turbine' )
7476 assert_series_equal (power_curve (** parameters ), power_output_exp )
75-
7677 # Test wind_speed as np.array
7778 power_output_exp = np .array ([0.0 , 450.0 , 0.0 ])
7879 parameters ['wind_speed' ] = np .array (parameters ['wind_speed' ])
7980 assert_allclose (power_curve (** parameters ), power_output_exp )
8081 assert isinstance (power_curve (** parameters ), np .ndarray )
8182
83+ # Tests with density correction:
84+ # Test wind_speed as np.array with density as pd.Series and np.array
85+ power_output_exp = np .array ([0.0 , 461.00290572 , 0.0 ])
86+ parameters ['density_corr' ] = True
87+ assert_allclose (power_curve (** parameters ), power_output_exp )
88+ assert isinstance (power_curve (** parameters ), np .ndarray )
89+ parameters ['density' ] = np .array (parameters ['density' ])
90+ assert_allclose (power_curve (** parameters ), power_output_exp )
91+ assert isinstance (power_curve (** parameters ), np .ndarray )
92+ # Test wind_speed as pd.Series with density as np. array and pd.Series
93+ power_output_exp = pd .Series (data = [0.0 , 461.00290572 , 0.0 ],
94+ name = 'feedin_wind_turbine' )
95+ parameters ['wind_speed' ] = pd .Series (data = parameters ['wind_speed' ])
96+ assert_series_equal (power_curve (** parameters ), power_output_exp )
97+ parameters ['density' ] = pd .Series (data = parameters ['density' ])
98+ assert_series_equal (power_curve (** parameters ),
99+ power_output_exp )
100+
101+ # Raise TypeErrors due to wrong type of `density_corr`
102+ with pytest .raises (TypeError ):
103+ parameters ['density' ] = 'wrong_type'
104+ power_curve (** parameters )
105+
82106 def test_p_curve_density_corrected (self ):
83107 parameters = {'wind_speed' : pd .Series (data = [2.0 , 5.5 , 7.0 ]),
84108 'density' : pd .Series (data = [1.3 , 1.3 , 1.3 ]),
85109 'p_values' : pd .Series ([300 , 400 , 500 ],
86110 index = [4.0 , 5.0 , 6.0 ])}
87111
88112 # Test wind_speed as pd.Series with density as pd.Series and np.array
89- power_output_exp = pd .Series (data = [0.0 , 461.00290572 , 0.0 ],
90- name = 'feedin_wind_turbine' )
91- assert_series_equal (p_curve_density_corr (** parameters ),
92- power_output_exp )
113+ power_output_exp = [0.0 , 461.00290572240806 , 0.0 ]
114+ assert _p_curve_density_corr (** parameters ) == power_output_exp
93115 parameters ['density' ] = np .array (parameters ['density' ])
94- assert_series_equal (p_curve_density_corr (** parameters ),
95- power_output_exp )
116+ assert _p_curve_density_corr (** parameters ) == power_output_exp
96117
97118 # Test wind_speed as np.array with density as np.array and pd.Series
98- power_output_exp = np .array ([0.0 , 461.00290572 , 0.0 ])
99- parameters ['wind_speed' ] = np .array (parameters ['wind_speed' ])
100- assert_allclose (p_curve_density_corr (** parameters ),
101- power_output_exp )
102- assert isinstance (p_curve_density_corr (** parameters ), np .ndarray )
119+ assert _p_curve_density_corr (** parameters ) == power_output_exp
103120 parameters ['density' ] = pd .Series (data = parameters ['density' ])
104- assert_allclose (p_curve_density_corr (** parameters ),
105- power_output_exp )
106- assert isinstance (p_curve_density_corr (** parameters ), np .ndarray )
121+ assert _p_curve_density_corr (** parameters ) == power_output_exp
122+
123+ # Raise TypeError due to density is None
124+ with pytest .raises (TypeError ):
125+ parameters ['density' ] = None
126+ _p_curve_density_corr (** parameters )
0 commit comments