11import unittest
2+ from typing import Callable
23from zipfile import ZipFile
34
45import pandas as pd
56
7+ from data_flow import DataFlow
8+ from data_flow .lib import Operator
9+
610
711class BaseTestCase (unittest .TestCase ):
812 def setUp (self ):
@@ -18,3 +22,79 @@ def setUp(self):
1822
1923 def assertPandasEqual (self , df1 : pd .DataFrame , df2 : pd .DataFrame ):
2024 self .assertTrue (df1 .equals (df2 ), "Pandas DataFrames are not equal !" )
25+
26+ def all (self , function : Callable ):
27+ self ._sequence (data = function ())
28+ self ._filter_Eq (data = function ())
29+ self ._filter_Gte (data = function ())
30+ self ._filter_Lte (data = function ())
31+ self ._filter_Gt (data = function ())
32+ self ._filter_Lt (data = function ())
33+ self ._filter_Ne (data = function ())
34+
35+ # @count_assertions
36+ def _sequence (self , data : DataFlow .DataFrame ) -> None :
37+ self .assertPandasEqual (data .to_pandas (), DataFlow ().DataFrame ().from_csv (self .CSV_FILE ).to_pandas ())
38+ polars = data .to_polars ()
39+
40+ self .assertEqual (10 , len (data .columns ()))
41+
42+ data .columns_delete (
43+ [
44+ "Industry_aggregation_NZSIOC" ,
45+ "Industry_code_NZSIOC" ,
46+ "Industry_name_NZSIOC" ,
47+ "Industry_code_ANZSIC06" ,
48+ "Variable_code" ,
49+ "Variable_name" ,
50+ "Variable_category" ,
51+ ]
52+ )
53+
54+ self .assertEqual (3 , len (data .columns ()))
55+ self .assertListEqual (["Year" , "Units" , "Value" ], data .columns ())
56+
57+ data .columns_rename (columns_mapping = {"Year" : "_year_" , "Units" : "_units_" })
58+ self .assertListEqual (["_year_" , "_units_" , "Value" ], data .columns ())
59+
60+ data .columns_select (columns = ["_year_" ])
61+ self .assertListEqual (["_year_" ], data .columns ())
62+
63+ self .assertPandasEqual (
64+ DataFlow ().DataFrame ().from_polars (polars ).to_pandas (),
65+ DataFlow ().DataFrame ().from_csv (self .CSV_FILE ).to_pandas (),
66+ )
67+
68+ def _filter_Eq (self , data : DataFlow .DataFrame ) -> None :
69+ data .filter_on_column (column = "Year" , operator = Operator .Eq , value = 2018 )
70+ self .assertListEqual ([2018 ], list (data .to_pandas ().Year .unique ()))
71+
72+ def _filter_Gte (self , data : DataFlow .DataFrame ) -> None :
73+ data .filter_on_column (column = "Year" , operator = Operator .Gte , value = 2018 )
74+ result = data .to_pandas ().Year .unique ().tolist ()
75+ result .sort ()
76+ self .assertListEqual ([2018 , 2019 , 2020 , 2021 , 2022 , 2023 ], result )
77+
78+ def _filter_Lte (self , data : DataFlow .DataFrame ) -> None :
79+ data .filter_on_column (column = "Year" , operator = Operator .Lte , value = 2018 )
80+ result = data .to_pandas ().Year .unique ().tolist ()
81+ result .sort ()
82+ self .assertListEqual ([2013 , 2014 , 2015 , 2016 , 2017 , 2018 ], result )
83+
84+ def _filter_Gt (self , data : DataFlow .DataFrame ) -> None :
85+ data .filter_on_column (column = "Year" , operator = Operator .Gt , value = 2018 )
86+ result = data .to_pandas ().Year .unique ().tolist ()
87+ result .sort ()
88+ self .assertListEqual ([2019 , 2020 , 2021 , 2022 , 2023 ], result )
89+
90+ def _filter_Lt (self , data : DataFlow .DataFrame ) -> None :
91+ data .filter_on_column (column = "Year" , operator = Operator .Lt , value = 2018 )
92+ result = data .to_pandas ().Year .unique ().tolist ()
93+ result .sort ()
94+ self .assertListEqual ([2013 , 2014 , 2015 , 2016 , 2017 ], result )
95+
96+ def _filter_Ne (self , data : DataFlow .DataFrame ) -> None :
97+ data .filter_on_column (column = "Year" , operator = Operator .Ne , value = 2018 )
98+ result = data .to_pandas ().Year .unique ().tolist ()
99+ result .sort ()
100+ self .assertListEqual ([2013 , 2014 , 2015 , 2016 , 2017 , 2019 , 2020 , 2021 , 2022 , 2023 ], result )
0 commit comments