@@ -446,3 +446,94 @@ def test_var_opt_invalid_value(self):
446446        # store invalid value in config file directly 
447447        self .config .setValue ('setting/var_option' , object )
448448        self .assertEqual (self .config .setting ["var_option" ], {"a" , "b" })
449+ 
450+ 
451+ class  TestPicardConfigSignals (TestPicardConfigCommon ):
452+ 
453+     def  _set_signal_value (self , name : str , old_value : object , new_value : object ):
454+         self .setting_name  =  name 
455+         self .setting_old_value  =  old_value 
456+         self .setting_new_value  =  new_value 
457+ 
458+     def  test_file_naming_signal (self ):
459+         TextOption ('setting' , 'option_text' , 'abc' )
460+         BoolOption ('setting' , 'option_bool' , False )
461+         IntOption ('setting' , 'option_int' , 1 )
462+         FloatOption ('setting' , 'option_float' , 1.0 )
463+         ListOption ('setting' , 'option_list' , [1 , 2 , 3 ])
464+         Option ('setting' , 'option_set' , {1 , 2 , 3 })
465+         Option ('setting' , 'option_dict' , {'a' : 1 , 'b' : 2 , 'c' : 3 })
466+ 
467+         self .config .setting .setting_changed_signal .connect (self ._set_signal_value )
468+ 
469+         # Test text option 
470+         self .setting_name  =  '' 
471+         self .setting_old_value  =  '' 
472+         self .setting_new_value  =  '' 
473+         self .config .setting ['option_text' ] =  'def' 
474+         self .assertEqual (self .setting_name , 'option_text' )
475+         self .assertEqual (self .setting_old_value , 'abc' )
476+         self .assertEqual (self .setting_new_value , 'def' )
477+ 
478+         # Test no signal if set to same value 
479+         self .setting_name  =  '' 
480+         self .setting_old_value  =  '' 
481+         self .setting_new_value  =  '' 
482+         self .config .setting ['option_text' ] =  'def' 
483+         self .assertEqual (self .setting_name , '' )
484+         self .assertEqual (self .setting_old_value , '' )
485+         self .assertEqual (self .setting_new_value , '' )
486+ 
487+         # Test bool option 
488+         self .setting_name  =  '' 
489+         self .setting_old_value  =  '' 
490+         self .setting_new_value  =  '' 
491+         self .config .setting ['option_bool' ] =  True 
492+         self .assertEqual (self .setting_name , 'option_bool' )
493+         self .assertEqual (self .setting_old_value , False )
494+         self .assertEqual (self .setting_new_value , True )
495+ 
496+         # Test int option 
497+         self .setting_name  =  '' 
498+         self .setting_old_value  =  '' 
499+         self .setting_new_value  =  '' 
500+         self .config .setting ['option_int' ] =  2 
501+         self .assertEqual (self .setting_name , 'option_int' )
502+         self .assertEqual (self .setting_old_value , 1 )
503+         self .assertEqual (self .setting_new_value , 2 )
504+ 
505+         # Test float option 
506+         self .setting_name  =  '' 
507+         self .setting_old_value  =  '' 
508+         self .setting_new_value  =  '' 
509+         self .config .setting ['option_float' ] =  2.5 
510+         self .assertEqual (self .setting_name , 'option_float' )
511+         self .assertEqual (self .setting_old_value , 1.0 )
512+         self .assertEqual (self .setting_new_value , 2.5 )
513+ 
514+         # Test list option 
515+         self .setting_name  =  '' 
516+         self .setting_old_value  =  '' 
517+         self .setting_new_value  =  '' 
518+         self .config .setting ['option_list' ] =  [3 , 2 , 1 ]
519+         self .assertEqual (self .setting_name , 'option_list' )
520+         self .assertEqual (self .setting_old_value , [1 , 2 , 3 ])
521+         self .assertEqual (self .setting_new_value , [3 , 2 , 1 ])
522+ 
523+         # Test option (set) 
524+         self .setting_name  =  '' 
525+         self .setting_old_value  =  '' 
526+         self .setting_new_value  =  '' 
527+         self .config .setting ['option_set' ] =  {4 , 5 , 6 }
528+         self .assertEqual (self .setting_name , 'option_set' )
529+         self .assertEqual (self .setting_old_value , {1 , 2 , 3 })
530+         self .assertEqual (self .setting_new_value , {4 , 5 , 6 })
531+ 
532+         # Test option (dict) 
533+         self .setting_name  =  '' 
534+         self .setting_old_value  =  '' 
535+         self .setting_new_value  =  '' 
536+         self .config .setting ['option_dict' ] =  {'a' : 3 , 'b' : 2 , 'c' : 1 }
537+         self .assertEqual (self .setting_name , 'option_dict' )
538+         self .assertEqual (self .setting_old_value , {'a' : 1 , 'b' : 2 , 'c' : 3 })
539+         self .assertEqual (self .setting_new_value , {'a' : 3 , 'b' : 2 , 'c' : 1 })
0 commit comments