@@ -376,35 +376,40 @@ def test_controls_disabling(self):
376376 cont = self .iris .domain [0 ]
377377 disc = self .iris .domain .class_var
378378 cont_box = widget .continuous_box
379+ sort_by_freq = widget .controls .sort_by_freq
379380 show_probs = widget .controls .show_probs
380381 stacked = widget .controls .stacked_columns
381382
382383 self ._set_var (cont )
383384 self ._set_cvar (disc )
385+ self .assertFalse (sort_by_freq .isEnabled ())
384386 self .assertTrue (cont_box .isEnabled ())
385387 self .assertTrue (show_probs .isEnabled ())
386388 self .assertTrue (stacked .isEnabled ())
387389
388390 self ._set_var (cont )
389391 self ._set_cvar (None )
392+ self .assertFalse (sort_by_freq .isEnabled ())
390393 self .assertTrue (cont_box .isEnabled ())
391394 self .assertFalse (show_probs .isEnabled ())
392395 self .assertFalse (stacked .isEnabled ())
393396
394397 self ._set_var (disc )
395398 self ._set_cvar (None )
399+ self .assertTrue (sort_by_freq .isEnabled ())
396400 self .assertFalse (cont_box .isEnabled ())
397401 self .assertFalse (show_probs .isEnabled ())
398402 self .assertFalse (stacked .isEnabled ())
399403
400404 self ._set_var (disc )
401405 self ._set_cvar (disc )
406+ self .assertTrue (sort_by_freq .isEnabled ())
402407 self .assertFalse (cont_box .isEnabled ())
403408 self .assertTrue (show_probs .isEnabled ())
404409 self .assertTrue (stacked .isEnabled ())
405410
406411 if os .getenv ("CI" ):
407- # Testing all combinations takes 10-15 seconds ; this should take < 2s
412+ # Testing all combinations takes almost a minute ; this should take < 2s
408413 # Code for fitter, stacked_columns and show_probs is independent, so
409414 # changing them simultaneously doesn't significantly degrade the tests
410415 def test_plot_types_combinations (self ):
@@ -424,6 +429,7 @@ def test_plot_types_combinations(self):
424429 self ._set_fitter (2 * b )
425430 self ._set_check (c .stacked_columns , b )
426431 self ._set_check (c .show_probs , b )
432+ self ._set_check (c .sort_by_freq , b )
427433 qApp .processEvents ()
428434 else :
429435 def test_plot_types_combinations (self ):
@@ -433,6 +439,7 @@ def test_plot_types_combinations(self):
433439
434440 widget = self .widget
435441 c = widget .controls
442+ set_chk = self ._set_check
436443 self .send_signal (widget .Inputs .data , self .iris )
437444 cont = self .iris .domain [0 ]
438445 disc = self .iris .domain .class_var
@@ -442,14 +449,15 @@ def test_plot_types_combinations(self):
442449 for cumulative in [False , True ]:
443450 for stack in [False , True ]:
444451 for show_probs in [False , True ]:
445- self ._set_var (var )
446- self ._set_cvar (cvar )
447- self ._set_fitter (fitter )
448- self ._set_check (c .cumulative_distr ,
449- cumulative )
450- self ._set_check (c .stacked_columns , stack )
451- self ._set_check (c .show_probs , show_probs )
452- qApp .processEvents ()
452+ for sort_by_freq in [False , True ]:
453+ self ._set_var (var )
454+ self ._set_cvar (cvar )
455+ self ._set_fitter (fitter )
456+ set_chk (c .cumulative_distr , cumulative )
457+ set_chk (c .stacked_columns , stack )
458+ set_chk (c .show_probs , show_probs )
459+ set_chk (c .sort_by_freq , sort_by_freq )
460+ qApp .processEvents ()
453461
454462 def test_selection_grouping (self ):
455463 """Widget groups consecutive selected bars"""
@@ -543,6 +551,56 @@ def test_summary(self):
543551 self .assertEqual (info ._StateInfo__output_summary .brief , "" )
544552 self .assertEqual (info ._StateInfo__output_summary .details , no_output )
545553
554+ def test_sort_by_freq_no_split (self ):
555+ data = Table ("heart_disease" )
556+ domain = data .domain
557+ sort_by_freq = self .widget .controls .sort_by_freq
558+
559+ self .send_signal (self .widget .Inputs .data , data )
560+ self ._set_var (domain ["gender" ])
561+ self ._set_cvar (None )
562+
563+ self ._set_check (sort_by_freq , False )
564+ out = self .get_output (self .widget .Outputs .histogram_data )
565+ self .assertEqual (out [0 ][0 ], "female" )
566+ self .assertEqual (out [0 ][1 ], 97 )
567+ self .assertEqual (out [1 ][0 ], "male" )
568+ self .assertEqual (out [1 ][1 ], 206 )
569+
570+ self ._set_check (sort_by_freq , True )
571+ out = self .get_output (self .widget .Outputs .histogram_data )
572+ self .assertEqual (out [0 ][0 ], "male" )
573+ self .assertEqual (out [0 ][1 ], 206 )
574+ self .assertEqual (out [1 ][0 ], "female" )
575+ self .assertEqual (out [1 ][1 ], 97 )
576+
577+ def test_sort_by_freq_split (self ):
578+ data = Table ("heart_disease" )
579+ domain = data .domain
580+ sort_by_freq = self .widget .controls .sort_by_freq
581+
582+ self .send_signal (self .widget .Inputs .data , data )
583+ self ._set_var (domain ["gender" ])
584+ self ._set_cvar (domain ["rest ECG" ])
585+
586+ self ._set_check (sort_by_freq , False )
587+ out = self .get_output (self .widget .Outputs .histogram_data )
588+ self .assertEqual (out [0 ][0 ], "female" )
589+ self .assertEqual (out [0 ][1 ], "normal" )
590+ self .assertEqual (out [0 ][2 ], 49 )
591+ self .assertEqual (out [4 ][0 ], "male" )
592+ self .assertEqual (out [4 ][1 ], "left vent hypertrophy" )
593+ self .assertEqual (out [4 ][2 ], 103 )
594+
595+ self ._set_check (sort_by_freq , True )
596+ out = self .get_output (self .widget .Outputs .histogram_data )
597+ self .assertEqual (out [0 ][0 ], "male" )
598+ self .assertEqual (out [0 ][1 ], "normal" )
599+ self .assertEqual (out [0 ][2 ], 102 )
600+ self .assertEqual (out [4 ][0 ], "female" )
601+ self .assertEqual (out [4 ][1 ], "left vent hypertrophy" )
602+ self .assertEqual (out [4 ][2 ], 45 )
603+
546604
547605if __name__ == "__main__" :
548606 unittest .main ()
0 commit comments