@@ -28,53 +28,115 @@ def tearDownModule():
2828
2929
3030class CurrentColorKeysTest (unittest .TestCase ):
31- """Test correct scenarios for colorkeys and wrap functions .
31+ """ Test colorkeys function with user config [Theme] and [Keys] patterns .
3232
33- The 5 correct patterns are possible results of config dialog.
33+ colorkeys = config.IdleConf.current_colors_and_keys
34+ Test all patterns written by IDLE and some errors
35+ Item 'default' should really be 'builtin' (versus 'custom).
3436 """
3537 colorkeys = idleConf .current_colors_and_keys
38+ default_theme = 'IDLE Classic'
39+ default_keys = idleConf .default_keys ()
3640
37- def test_old_default (self ):
38- # name2 must be blank
41+ def test_old_builtin_theme (self ):
42+ # On initial installation, user main is blank.
43+ self .assertEqual (self .colorkeys ('Theme' ), self .default_theme )
44+ # For old default, name2 must be blank.
3945 usermain .read_string ('''
4046 [Theme]
41- default= 1
47+ default = True
4248 ''' )
43- self .assertEqual (self .colorkeys ('Theme' ), 'IDLE Classic' )
49+ # IDLE omits 'name' for default old builtin theme.
50+ self .assertEqual (self .colorkeys ('Theme' ), self .default_theme )
51+ # IDLE adds 'name' for non-default old builtin theme.
4452 usermain ['Theme' ]['name' ] = 'IDLE New'
4553 self .assertEqual (self .colorkeys ('Theme' ), 'IDLE New' )
46- usermain ['Theme' ]['name' ] = 'non-default' # error
47- self .assertEqual (self .colorkeys ('Theme' ), 'IDLE Classic' )
54+ # Erroneous non-default old builtin reverts to default.
55+ usermain ['Theme' ]['name' ] = 'non-existent'
56+ self .assertEqual (self .colorkeys ('Theme' ), self .default_theme )
4857 usermain .remove_section ('Theme' )
4958
50- def test_new_default (self ):
51- # name2 overrides name
59+ def test_new_builtin_theme (self ):
60+ # IDLE writes name2 for new builtins.
5261 usermain .read_string ('''
5362 [Theme]
54- default= 1
55- name= IDLE New
56- name2= IDLE Dark
63+ default = True
64+ name2 = IDLE Dark
5765 ''' )
5866 self .assertEqual (self .colorkeys ('Theme' ), 'IDLE Dark' )
59- usermain ['Theme' ]['name2' ] = 'non-default' # error
60- self .assertEqual (self .colorkeys ('Theme' ), 'IDLE Classic' )
67+ # Leftover 'name', not removed, is ignored.
68+ usermain ['Theme' ]['name' ] = 'IDLE New'
69+ self .assertEqual (self .colorkeys ('Theme' ), 'IDLE Dark' )
70+ # Erroneous non-default new builtin reverts to default.
71+ usermain ['Theme' ]['name2' ] = 'non-existent'
72+ self .assertEqual (self .colorkeys ('Theme' ), self .default_theme )
6173 usermain .remove_section ('Theme' )
6274
63- def test_user_override (self ):
64- # name2 does not matter
75+ def test_user_override_theme (self ):
76+ # Erroneous custom name (no definition) reverts to default.
6577 usermain .read_string ('''
6678 [Theme]
67- default= 0
68- name= Custom Dark
69- ''' ) # error until set userhigh
70- self .assertEqual (self .colorkeys ('Theme' ), 'IDLE Classic' )
79+ default = False
80+ name = Custom Dark
81+ ''' )
82+ self .assertEqual (self .colorkeys ('Theme' ), self .default_theme )
83+ # Custom name is valid with matching Section name.
7184 userhigh .read_string ('[Custom Dark]\n a=b' )
7285 self .assertEqual (self .colorkeys ('Theme' ), 'Custom Dark' )
73- usermain ['Theme' ]['name2' ] = 'IDLE Dark'
86+ # Name2 is ignored.
87+ usermain ['Theme' ]['name2' ] = 'non-existent'
7488 self .assertEqual (self .colorkeys ('Theme' ), 'Custom Dark' )
7589 usermain .remove_section ('Theme' )
7690 userhigh .remove_section ('Custom Dark' )
7791
92+ def test_old_builtin_keys (self ):
93+ # On initial installation, user main is blank.
94+ self .assertEqual (self .colorkeys ('Keys' ), self .default_keys )
95+ # For old default, name2 must be blank, name is always used.
96+ usermain .read_string ('''
97+ [Keys]
98+ default = True
99+ name = IDLE Classic Unix
100+ ''' )
101+ self .assertEqual (self .colorkeys ('Keys' ), 'IDLE Classic Unix' )
102+ # Erroneous non-default old builtin reverts to default.
103+ usermain ['Keys' ]['name' ] = 'non-existent'
104+ self .assertEqual (self .colorkeys ('Keys' ), self .default_keys )
105+ usermain .remove_section ('Keys' )
106+
107+ def test_new_builtin_keys (self ):
108+ # IDLE writes name2 for new builtins.
109+ usermain .read_string ('''
110+ [Keys]
111+ default = True
112+ name2 = IDLE Modern Unix
113+ ''' )
114+ self .assertEqual (self .colorkeys ('Keys' ), 'IDLE Modern Unix' )
115+ # Leftover 'name', not removed, is ignored.
116+ usermain ['Keys' ]['name' ] = 'IDLE Classic Unix'
117+ self .assertEqual (self .colorkeys ('Keys' ), 'IDLE Modern Unix' )
118+ # Erroneous non-default new builtin reverts to default.
119+ usermain ['Keys' ]['name2' ] = 'non-existent'
120+ self .assertEqual (self .colorkeys ('Keys' ), self .default_keys )
121+ usermain .remove_section ('Keys' )
122+
123+ def test_user_override_keys (self ):
124+ # Erroneous custom name (no definition) reverts to default.
125+ usermain .read_string ('''
126+ [Keys]
127+ default = False
128+ name = Custom Keys
129+ ''' )
130+ self .assertEqual (self .colorkeys ('Keys' ), self .default_keys )
131+ # Custom name is valid with matching Section name.
132+ userkeys .read_string ('[Custom Keys]\n a=b' )
133+ self .assertEqual (self .colorkeys ('Keys' ), 'Custom Keys' )
134+ # Name2 is ignored.
135+ usermain ['Keys' ]['name2' ] = 'non-existent'
136+ self .assertEqual (self .colorkeys ('Keys' ), 'Custom Keys' )
137+ usermain .remove_section ('Keys' )
138+ userkeys .remove_section ('Custom Keys' )
139+
78140
79141class WarningTest (unittest .TestCase ):
80142
0 commit comments