امتحان/test_ذریعہ_نکتہ.py
import os
import unittest
import pandas as pd
import pandas.testing as pdt
from تقدیر.ذرائع import جےسن, سی_اس_وی, دیسات, دیسات_ماھانہ
from تقدیر.وسائل import وسائل_پانا
from எண்ணிக்கை import உரைக்கு as உ
راستہ = os.path.split(__file__)[0]
مسل_جےسن_سالانہ = وسائل_پانا('سالانہ.json')
مسل_سی_اس_وی_سالانہ = وسائل_پانا('سالانہ.csv')
class امتحان_ذریعہ_نکتہ(unittest.TestCase):
@classmethod
def setUpClass(قسم):
قسم.سے, قسم.تک = '۲۰۱۳۰۱۰۱', '۲۰۱۳۰۱۰۹'
پای_جےسن = {
"تاریخ": ["۲۰۱۳۰۱" + دن for دن in ["۰۱", "۰۲", "۰۳", "۰۴", "۰۵", "۰۶", "۰۷", "۰۸", "۰۹"]],
"شمسی_تابکاری": [12.2, 12.9, 8.3, 4.9, 13.5, 13.5, 10.3, 13.1, 9.1],
"درجہ_حرارت_زیادہ": [7.8, 2.2, 3.3, 2.8, -1.1, 6.1, 10.0, 9.4, 12.8],
"درجہ_حرارت_کم": [-14.4, -13.3, -13.3, -10.6, -8.9, -10.6, -10.6, -8.3, -3.9],
"بارش": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
}
قسم.اعداد = pd.DataFrame(
پای_جےسن, columns=[س for س in پای_جےسن if س != 'تاریخ'],
index=pd.PeriodIndex([உ(تا, 'latin') for تا in پای_جےسن['تاریخ']], freq='D')
)
قسم.اعداد['درجہ_حرارت_اوسط'] = (قسم.اعداد["درجہ_حرارت_زیادہ"] + قسم.اعداد["درجہ_حرارت_کم"]) / 2
مسل_دیسات = وسائل_پانا('ACNM1301.WTH')
مسل_جےسن = وسائل_پانا('روزانہ.json')
مسل_سی_اس_وی = وسائل_پانا('روزانہ.csv')
قسم.جگہ = (34.583, -103.200, 1348)
تبدل = {'شمسی تابکاری': 'شمسی_تابکاری'}
قسم.ذرائع = {
'جےسن': جےسن(مسل_جےسن, *قسم.جگہ, تبديل_عمودی_ستون=تبدل),
'پای_جےسن': جےسن(پای_جےسن, *قسم.جگہ),
'سی_اس_وی': سی_اس_وی(مسل_سی_اس_وی, *قسم.جگہ, تبديل_ستون=تبدل),
'دیسات': دیسات(مسل_دیسات)
}
قسم.خاکے = '۲.۶'
قسم.ذرائع_خاکے = {
'جسان': جےسن(مسل_جےسن, *قسم.جگہ, خاکے=قسم.خاکے, تبديل_عمودی_ستون=تبدل),
'پای_جےسن': جےسن(پای_جےسن, *قسم.جگہ, خاکے=قسم.خاکے),
'سی_اس_وی': سی_اس_وی(مسل_سی_اس_وی, *قسم.جگہ, خاکے=قسم.خاکے, تبديل_ستون=تبدل),
'دیسات': دیسات(مسل_دیسات, خاکے=قسم.خاکے)
}
def test_کوائف_پانا(خود):
for نام, ذریعہ in خود.ذرائع.items():
with خود.subTest(نام):
pdt.assert_frame_equal(ذریعہ.کوائف_پانا(خود.سے, خود.تک, *خود.جگہ).روزانہ(), خود.اعداد, check_like=True)
def test_بلندی_سحی_نہیں(خود):
for نام, ذریعہ in خود.ذرائع.items():
with خود.subTest(نام):
خود.assertIsNone(ذریعہ.کوائف_پانا(خود.سے, خود.تک, *خود.جگہ[:-1], بلندی=-10))
def test_خاکے_سحی_نہیں(خود):
for نام, ذریعہ in خود.ذرائع_خاکے.items():
with خود.subTest(نام):
خود.assertIsNone(ذریعہ.کوائف_پانا(خود.سے, خود.تک, *خود.جگہ, خاکے='۸.۰'))
def testسحی_خاکے_(خود):
for نام, ذریعہ in خود.ذرائع_خاکے.items():
with خود.subTest(نام):
pdt.assert_frame_equal(
ذریعہ.کوائف_پانا(خود.سے, خود.تک, *خود.جگہ, خاکے='۲.۶').روزانہ(), خود.اعداد, check_like=True
)
class امتحان_ماہانہ(unittest.TestCase):
@classmethod
def setUpClass(قسم):
مسل_دیسات = وسائل_پانا('ARPE.MTH')
مسل_جےسن = وسائل_پانا('ماہانہ.json')
مسل_سی_اس_وی = وسائل_پانا('ماہانہ.csv')
قسم.جگہ = (34.583, -103.200, 1348)
قسم.ذريعے = {
'جسان': جےسن(مسل_جےسن, *قسم.جگہ),
'سی_اس_وی': سی_اس_وی(مسل_سی_اس_وی, *قسم.جگہ),
'دیسات': دیسات_ماھانہ(مسل_دیسات, *قسم.جگہ)
}
قسم.اعداد = pd.DataFrame(
{"شمسی_تابکاری": [25.44] * 31 + [23.43] * 28,
"درجہ_حرارت_زیادہ": [30.47] * 31 + [29.51] * 28,
"درجہ_حرارت_کم": [16.82] * 31 + [15.96] * 28,
"بارش": [4.10] * 31 + [1.92] * 28},
index=pd.period_range('۱۹۳۱۰۱۰۱', '۱۹۳۱۰۲۲۸', freq='D')
)
قسم.اعداد['درجہ_حرارت_اوسط'] = (قسم.اعداد["درجہ_حرارت_زیادہ"] + قسم.اعداد["درجہ_حرارت_کم"]) / 2
def test_کوائف_پانا(خود):
for نام, ذریعہ in خود.ذريعے.items():
with خود.subTest(نام):
pdt.assert_frame_equal(
ذریعہ.کوائف_پانا('۱۹۳۱۰۱۰۱', '۱۹۳۱۰۲۲۸', *خود.جگہ).اعداد, خود.اعداد, check_like=True
)
class امتحان_سالانہ(unittest.TestCase):
@classmethod
def setUpClass(قسم):
مسل_جےسن = وسائل_پانا('سالانہ.json')
مسل_سی_اس_وی = وسائل_پانا('سالانہ.csv')
قسم.جگہ = (34.583, -103.200, 1348)
قسم.ذريعے = {
'جسان': جےسن(مسل_جےسن, *قسم.جگہ),
'سی_اس_وی': سی_اس_وی(مسل_سی_اس_وی, *قسم.جگہ),
}
قسم.اعداد = pd.DataFrame(
{"شمسی_تابکاری": [25.44] * 366 + [23.43] * 365,
"درجہ_حرارت_زیادہ": [30.47] * 366 + [29.51] * 365,
"درجہ_حرارت_کم": [16.82] * 366 + [15.96] * 365,
"بارش": [4.10] * 366 + [1.92] * 365
},
index=pd.period_range('۲۰۱۲۰۱۰۱', '۲۰۱۳۱۲۳۱', freq='D')
)
قسم.اعداد['درجہ_حرارت_اوسط'] = (قسم.اعداد["درجہ_حرارت_زیادہ"] + قسم.اعداد["درجہ_حرارت_کم"]) / 2
def test_کوائف_پانا(خود):
for نام, ذریعہ in خود.ذريعے.items():
with خود.subTest(نام):
pdt.assert_frame_equal(
ذریعہ.کوائف_پانا('۲۰۱۲۰۱۰۱', '۲۰۱۳۱۲۳۱', *خود.جگہ).اعداد, خود.اعداد, check_like=True
)