added tests for str & repr
This commit is contained in:
		
							parent
							
								
									23882b2380
								
							
						
					
					
						commit
						d9ec9b508b
					
				| @ -1,5 +1,6 @@ | |||||||
| import datetime | import datetime | ||||||
| from typing import Mapping | import random | ||||||
|  | from typing import Literal, Mapping, Sequence | ||||||
| 
 | 
 | ||||||
| from fincal.core import AllFrequencies, Frequency, Series, TimeSeriesCore | from fincal.core import AllFrequencies, Frequency, Series, TimeSeriesCore | ||||||
| from fincal.fincal import create_date_series | from fincal.fincal import create_date_series | ||||||
| @ -15,6 +16,48 @@ class TestFrequency: | |||||||
|         assert D.freq_type == 'days' |         assert D.freq_type == 'days' | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | def create_test_data( | ||||||
|  |     frequency: str, | ||||||
|  |     eomonth: bool, | ||||||
|  |     n: int, | ||||||
|  |     gaps: float, | ||||||
|  |     month_position: Literal["start", "middle", "end"], | ||||||
|  |     date_as_str: bool, | ||||||
|  |     as_outer_type: Literal["dict", "list"] = "list", | ||||||
|  |     as_inner_type: Literal["dict", "list", "tuple"] = "tuple", | ||||||
|  | ) -> Sequence[tuple]: | ||||||
|  |     start_dates = { | ||||||
|  |         "start": datetime.datetime(2016, 1, 1), | ||||||
|  |         "middle": datetime.datetime(2016, 1, 15), | ||||||
|  |         "end": datetime.datetime(2016, 1, 31), | ||||||
|  |     } | ||||||
|  |     end_date = datetime.datetime(2021, 12, 31) | ||||||
|  |     dates = create_date_series(start_dates[month_position], end_date, frequency=frequency, eomonth=eomonth) | ||||||
|  |     dates = dates[:n] | ||||||
|  |     if gaps: | ||||||
|  |         num_gaps = int(len(dates) * gaps) | ||||||
|  |         to_remove = random.sample(dates, num_gaps) | ||||||
|  |         for i in to_remove: | ||||||
|  |             dates.remove(i) | ||||||
|  |     if date_as_str: | ||||||
|  |         dates = [i.strftime("%Y-%m-%d") for i in dates] | ||||||
|  | 
 | ||||||
|  |     values = [random.randint(8000, 90000) / 100 for _ in dates] | ||||||
|  | 
 | ||||||
|  |     data = list(zip(dates, values)) | ||||||
|  |     if as_outer_type == "list": | ||||||
|  |         if as_inner_type == "list": | ||||||
|  |             data = [list(i) for i in data] | ||||||
|  |         elif as_inner_type == "dict[1]": | ||||||
|  |             data = [dict((i,)) for i in data] | ||||||
|  |         elif as_inner_type == "dict[2]": | ||||||
|  |             data = [dict(date=i, value=j) for i, j in data] | ||||||
|  |     elif as_outer_type == "dict": | ||||||
|  |         data = dict(data) | ||||||
|  | 
 | ||||||
|  |     return data | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| class TestAllFrequencies: | class TestAllFrequencies: | ||||||
|     def test_attributes(self): |     def test_attributes(self): | ||||||
|         assert hasattr(AllFrequencies, 'D') |         assert hasattr(AllFrequencies, 'D') | ||||||
| @ -53,6 +96,15 @@ class TestSeries: | |||||||
| class TestTimeSeriesCore: | class TestTimeSeriesCore: | ||||||
|     data = [('2021-01-01', 220), ('2021-02-01', 230), ('2021-03-01', 240)] |     data = [('2021-01-01', 220), ('2021-02-01', 230), ('2021-03-01', 240)] | ||||||
| 
 | 
 | ||||||
|  |     def test_repr_str(self): | ||||||
|  |         ts = TimeSeriesCore(self.data, frequency='M') | ||||||
|  |         assert str(ts) in repr(ts).replace('\t', ' ') | ||||||
|  | 
 | ||||||
|  |         data = create_test_data(frequency="D", eomonth=False, n=50, gaps=0, month_position="start", date_as_str=True) | ||||||
|  |         ts = TimeSeriesCore(data, frequency="D") | ||||||
|  |         assert '...' in str(ts) | ||||||
|  |         assert '...' in repr(ts) | ||||||
|  | 
 | ||||||
|     def test_creation(self): |     def test_creation(self): | ||||||
|         ts = TimeSeriesCore(self.data, frequency='M') |         ts = TimeSeriesCore(self.data, frequency='M') | ||||||
|         assert isinstance(ts, TimeSeriesCore) |         assert isinstance(ts, TimeSeriesCore) | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user