@@ -222,6 +222,39 @@ def test_set_split_var_missing(self):
222222 self .assertEqual (len (w .parts .rows ),
223223 len (data .domain .class_var .values ) + 1 )
224224
225+ def _brown_selected_10 (self ):
226+ data = self .brown_selected [::5 ]
227+ data = data .transform (
228+ Domain (data .domain .attributes [:10 ], data .domain .class_vars ,
229+ data .domain .metas + (data .domain ["diau g" ],)))
230+ data .ensure_copy ()
231+ return data
232+
233+ def test_set_split_column_key (self ):
234+ data = self ._brown_selected_10 ()
235+ function = data .domain ["function" ]
236+ data_t = data .transpose (data )
237+ w = self .widget
238+ self .send_signal (self .widget .Inputs .data , data_t , widget = w )
239+ w .set_column_split_key (function )
240+ self .assertEqual (len (w .parts .columns ), len (function .values ))
241+ w .set_column_split_key (None )
242+ self .assertEqual (len (w .parts .columns ), 1 )
243+
244+ def test_set_split_column_key_missing (self ):
245+ data = self ._brown_selected_10 ()
246+ data .Y [:5 ] = np .nan
247+ data_t = data .transpose (data )
248+ function = data .domain ["function" ]
249+ w = self .widget
250+ self .send_signal (self .widget .Inputs .data , data_t , widget = w )
251+ w .set_column_split_key (function )
252+ self .assertEqual (len (w .parts .columns ), len (function .values ) + 1 )
253+ ncols = sum (len (p .indices ) for p in w .parts .columns )
254+ self .assertEqual (ncols , len (data_t .domain .attributes ))
255+ w .set_column_split_key (None )
256+ self .assertEqual (len (w .parts .columns ), 1 )
257+
225258 def test_palette_centering (self ):
226259 data = np .arange (2 ).reshape (- 1 , 1 )
227260 table = Table .from_numpy (Domain ([ContinuousVariable ("y" )]), data )
@@ -277,10 +310,7 @@ def test_row_color_annotations(self):
277310
278311 def test_row_color_annotations_with_na (self ):
279312 widget = self .widget
280- data = self .brown_selected [::5 ]
281- data = data .transform (
282- Domain (data .domain .attributes [:10 ], data .domain .class_vars ,
283- data .domain .metas + (data .domain ["diau g" ], )))
313+ data = self ._brown_selected_10 ()
284314 data .Y [:3 ] = np .nan
285315 data .metas [:3 , - 1 ] = np .nan
286316 self .send_signal (widget .Inputs .data , data , widget = widget )
@@ -295,6 +325,38 @@ def test_row_color_annotations_with_na(self):
295325 widget .set_annotation_color_var (None )
296326 self .assertFalse (widget .scene .widget .right_side_colors [0 ].isVisible ())
297327
328+ def test_col_color_annotations (self ):
329+ widget = self .widget
330+ data = self ._brown_selected_10 ()
331+ data_t = data .transpose (data )
332+ self .send_signal (widget .Inputs .data , data_t , widget = widget )
333+ # discrete
334+ widget .set_column_annotation_color_key (data .domain ["function" ])
335+ self .assertTrue (widget .scene .widget .top_side_colors [0 ].isVisible ())
336+ # continuous
337+ widget .set_column_annotation_color_key (data .domain ["diau g" ])
338+ widget .set_column_annotation_color_key (None )
339+ self .assertFalse (widget .scene .widget .top_side_colors [0 ].isVisible ())
340+
341+ def test_col_color_annotations_with_na (self ):
342+ widget = self .widget
343+ data = self ._brown_selected_10 ()
344+ data .Y [:3 ] = np .nan
345+ data .metas [:3 , - 1 ] = np .nan
346+ data_t = data .transpose (data )
347+ self .send_signal (widget .Inputs .data , data_t , widget = widget )
348+ widget .set_column_annotation_color_key (data .domain ["function" ])
349+ self .assertTrue (widget .scene .widget .top_side_colors [0 ].isVisible ())
350+ widget .set_column_annotation_color_key (data .domain ["diau g" ])
351+ data .Y [:] = np .nan
352+ data .metas [:, - 1 ] = np .nan
353+ data_t = data .transpose (data )
354+ self .send_signal (widget .Inputs .data , data_t , widget = widget )
355+ widget .set_column_annotation_color_key (data .domain ["function" ])
356+ widget .set_column_annotation_color_key (data .domain ["diau g" ])
357+ widget .set_column_annotation_color_key (None )
358+ self .assertFalse (widget .scene .widget .top_side_colors [0 ].isVisible ())
359+
298360 def test_summary (self ):
299361 """Check if status bar is updated when data is received"""
300362 info = self .widget .info
0 commit comments