44from ipydatagrid import DataGrid
55
66
7+ @pytest .fixture
8+ def dataframe () -> None :
9+ return pd .DataFrame (
10+ data = {"A" : [1 , 2 , 3 ], "B" : [4 , 5 , 6 ]}, index = ["One" , "Two" , "Three" ]
11+ )
12+
13+
14+ @pytest .fixture
15+ def datagrid (dataframe ) -> None :
16+ return DataGrid (dataframe )
17+
18+
719@pytest .mark .parametrize ("clear" , [True , False ])
8- def test_selections (clear : bool ) -> None :
9- df = pd .DataFrame (data = {"A" : [1 , 2 , 3 ], "B" : [4 , 5 , 6 ]})
10- layout = {"height" : "100px" }
11- grid = DataGrid (df , selection_mode = "cell" , layout = layout , editable = True )
20+ def test_selections (clear : bool , dataframe : pd .DataFrame ) -> None :
21+ grid = DataGrid (dataframe , selection_mode = "cell" , editable = True )
1222 grid .select (1 , 0 , 2 , 1 ) # Select 1A to 2B
1323 if clear :
1424 grid .clear_selection ()
@@ -20,3 +30,75 @@ def test_selections(clear: bool) -> None:
2030 {"c" : 0 , "r" : 2 },
2131 {"c" : 1 , "r" : 2 },
2232 ]
33+
34+
35+ def test_data_getter (dataframe ) -> None :
36+ grid = DataGrid (dataframe )
37+ assert grid .data .equals (dataframe )
38+
39+
40+ def test_data_setter (dataframe ) -> None :
41+ grid = DataGrid (dataframe )
42+ new_df = pd .DataFrame (data = {"A" : [0 , 0 , 0 ], "B" : [4 , 5 , 6 ]})
43+ grid .data = new_df
44+ assert grid .data .equals (new_df )
45+
46+
47+ def test_get_cell_value (datagrid : DataGrid ) -> None :
48+ cell = datagrid .get_cell_value ("B" , "Three" )
49+ assert cell == [6 ]
50+
51+
52+ def test_set_cell_value () -> None :
53+ """ Cannot be tested without a running front end """
54+ pass
55+
56+
57+ def get_cell_value_by_index (datagrid : DataGrid ) -> None :
58+ cell = datagrid .get_cell_value_by_index ("B" , 1 )
59+ assert cell == [5 ]
60+
61+
62+ def test_set_cell_value_by_index () -> None :
63+ """ Cannot be tested without a running front end """
64+ pass
65+
66+
67+ @pytest .mark .parametrize ("invalid_index" , [True , False ])
68+ def test_column_name_to_index (invalid_index : bool , datagrid : DataGrid ) -> None :
69+ if invalid_index :
70+ assert datagrid ._column_name_to_index ("Z" ) is None
71+ else :
72+ assert datagrid ._column_name_to_index ("A" ) == 0
73+
74+
75+ @pytest .mark .parametrize ("invalid_index" , [True , False ])
76+ def test_column_index_to_name (invalid_index : bool , datagrid : DataGrid ) -> None :
77+ if invalid_index :
78+ assert datagrid ._column_index_to_name (4 ) is None
79+ else :
80+ assert datagrid ._column_index_to_name (1 ) == "B"
81+
82+
83+ def test_get_col_headers (datagrid ) -> None :
84+ assert datagrid ._get_col_headers () == ["A" , "B" ]
85+
86+
87+ @pytest .mark .parametrize ("invalid_prim_key" , [True , False ])
88+ def test_get_row_index_of_primary_key (
89+ invalid_prim_key : bool , datagrid : DataGrid
90+ ) -> None :
91+ if invalid_prim_key :
92+ assert datagrid ._get_row_index_of_primary_key ("Nay" ) == []
93+ else :
94+ assert datagrid ._get_row_index_of_primary_key ("Two" ) == [1 ]
95+
96+
97+ @pytest .mark .parametrize ("invalid_coords" , [True , False ])
98+ def test_get_cell_value_by_numerical_index (
99+ invalid_coords : bool , datagrid : DataGrid
100+ ) -> None :
101+ if invalid_coords :
102+ assert datagrid ._get_cell_value_by_numerical_index (2 , 2 ) is None
103+ else :
104+ assert datagrid ._get_cell_value_by_numerical_index (1 , 0 ) == 4
0 commit comments