Skip to content

Commit 9f65d07

Browse files
committed
extract settings model
1 parent dead183 commit 9f65d07

17 files changed

Lines changed: 1686 additions & 0 deletions
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
Class {
2+
#name : 'PhLSettingTest',
3+
#superclass : 'TestCase',
4+
#category : 'PharoLauncher-Settings-Tests',
5+
#package : 'PharoLauncher-Settings-Tests'
6+
}
7+
8+
{ #category : 'tests' }
9+
PhLSettingTest >> testCanReadRealValue [
10+
11+
self assert: SettingsTestData booleanSetting realValue equals: false.
12+
self assert: SettingsTestData rangeSetting realValue equals: 1.
13+
]
14+
15+
{ #category : 'tests' }
16+
PhLSettingTest >> testCanSetRealValueWhenBooleanSetting [
17+
| setting |
18+
setting := SettingsTestData booleanSetting.
19+
20+
setting realValue: false.
21+
self deny: setting realValue.
22+
23+
setting realValue: true.
24+
self assert: setting realValue
25+
]
26+
27+
{ #category : 'tests' }
28+
PhLSettingTest >> testCanSetRealValueWhenRangeSetting [
29+
| setting |
30+
setting := SettingsTestData rangeSetting.
31+
32+
setting realValue: 2.
33+
self assert: setting realValue equals: 2.
34+
35+
setting realValue: 1.5.
36+
self assert: setting realValue equals: 1.5.
37+
38+
]
39+
40+
{ #category : 'tests' }
41+
PhLSettingTest >> testChildIdentifier [
42+
43+
self
44+
assert: SettingsTestData rangeSetting settingIdentifier
45+
equals: '#appearance#scaleFactor'
46+
]
47+
48+
{ #category : 'tests - realTarget' }
49+
PhLSettingTest >> testReceiverIsClassDefiningSettingWhenNoTargetSpecified [
50+
51+
| setting |
52+
setting := (SettingsTestData settingsFor: #basic_setting_test_data) first.
53+
54+
self assert: setting settingReceiver equals: SettingsTestData
55+
]
56+
57+
{ #category : 'tests - realTarget' }
58+
PhLSettingTest >> testReceiverIsClassDefiningSettingWhenNoTargetSpecifiedAndGroupSWithNoTarget [
59+
60+
self
61+
assert: SettingsTestData basicSettingWithGroupAndNoTarget settingReceiver
62+
equals: SettingsTestData
63+
]
64+
65+
{ #category : 'tests - realTarget' }
66+
PhLSettingTest >> testReceiverIsEvaluationOfGroupTargetSelectorWhenNoTargetSpecifiedAndGroupTargetSelectorSpecified [
67+
68+
self
69+
assert: SettingsTestData basicSettingWithGroupTargetSelector settingReceiver
70+
equals: Array empty
71+
]
72+
73+
{ #category : 'tests - realTarget' }
74+
PhLSettingTest >> testReceiverIsEvaluationOfTargetSelectorWhenTargetSelectorSpecified [
75+
76+
| setting |
77+
setting := (SettingsTestData settingsFor: #basic_setting_with_target_selector_test_data) first.
78+
79+
self assert: setting settingReceiver equals: String empty
80+
]
81+
82+
{ #category : 'tests - realTarget' }
83+
PhLSettingTest >> testReceiverIsGroupTargetWhenNoTargetSpecified [
84+
85+
self
86+
assert: SettingsTestData basicSettingWithGroupTarget settingReceiver
87+
equals: Object
88+
]
89+
90+
{ #category : 'tests - realTarget' }
91+
PhLSettingTest >> testReceiverIsTargetWhenTargetSpecified [
92+
93+
| setting |
94+
setting := (SettingsTestData settingsFor: #basic_setting_with_target_test_data) first.
95+
96+
self assert: setting settingReceiver equals: String
97+
]
98+
99+
{ #category : 'tests' }
100+
PhLSettingTest >> testRootIdentifier [
101+
102+
self
103+
assert: SettingsTestData booleanSetting settingIdentifier
104+
equals: '#shouldQuit'
105+
]
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
Class {
2+
#name : 'PhLSystemSettingsTest',
3+
#superclass : 'TestCase',
4+
#category : 'PharoLauncher-Settings-Tests',
5+
#package : 'PharoLauncher-Settings-Tests'
6+
}
7+
8+
{ #category : 'building' }
9+
PhLSystemSettingsTest >> systemSettings [
10+
11+
^ (SettingsBuilder forPragmaNamed: #systemsettings) settings
12+
]
13+
14+
{ #category : 'tests' }
15+
PhLSystemSettingsTest >> testCanAccessAllSettingsRealValues [
16+
17+
self systemSettings do: [ :eachSetting |
18+
eachSetting hasDefaultValue and: [ eachSetting realValue ] ]
19+
]
20+
21+
{ #category : 'tests' }
22+
PhLSystemSettingsTest >> testUniqueIdentifiers [
23+
24+
| identifiers |
25+
identifiers := self systemSettings collect: [ :each | each settingIdentifier ].
26+
27+
self assert: identifiers size equals: identifiers asSet size
28+
]
29+
30+
{ #category : 'tests' }
31+
PhLSystemSettingsTest >> testUniqueNames [
32+
33+
| names |
34+
names := self systemSettings collect: [ :eachSetting |
35+
eachSetting groupName printString, eachSetting name ].
36+
37+
self assert: names size equals: names asSet size
38+
]
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
Class {
2+
#name : 'SettingsBuilderTest',
3+
#superclass : 'TestCase',
4+
#instVars : [
5+
'builder'
6+
],
7+
#category : 'PharoLauncher-Settings-Tests',
8+
#package : 'PharoLauncher-Settings-Tests'
9+
}
10+
11+
{ #category : 'tests' }
12+
SettingsBuilderTest >> testCanBuildAPickOneSetting [
13+
14+
| setting |
15+
builder := SettingsBuilder forPragmaNamed: #pick_one_setting_test_data.
16+
17+
self assert: builder settings size equals: 1.
18+
setting := builder settings first.
19+
self assert: setting name equals: #uiThemeClass.
20+
self assert: setting label equals: 'User interface theme'.
21+
self assert: setting defaultValue equals: PhLAppearanceThemeLight.
22+
self assert: setting domainValues equals: PhLAppearanceTheme all
23+
]
24+
25+
{ #category : 'tests' }
26+
SettingsBuilderTest >> testCanBuildARangeSetting [
27+
28+
| setting |
29+
builder := SettingsBuilder forPragmaNamed: #range_setting_test_data.
30+
31+
self assert: builder settings size equals: 1.
32+
setting := builder settings first.
33+
self assert: setting name equals: #scaleFactor.
34+
self assert: setting label equals: 'Display scale factor'.
35+
self assert: setting defaultValue equals: 1.
36+
self assert: setting range equals: (0.5 to: 5 by: 0.5)
37+
38+
]
39+
40+
{ #category : 'tests' }
41+
SettingsBuilderTest >> testCanBuildASetting [
42+
43+
| setting |
44+
builder := SettingsBuilder forPragmaNamed: #boolean_setting_test_data.
45+
46+
self assert: builder settings size equals: 1.
47+
setting := builder settings first.
48+
self assert: setting name equals: #shouldQuit.
49+
self assert: setting description equals: 'will quit the app after action if setting set to true'.
50+
self assert: setting label equals:'A boolean setting'.
51+
self assert: setting defaultValue equals: false
52+
53+
]
54+
55+
{ #category : 'tests' }
56+
SettingsBuilderTest >> testCanBuildASettingGroup [
57+
58+
| settingGroup |
59+
builder := SettingsBuilder forPragmaNamed: #basic_settings_group_test_data.
60+
61+
self assert: builder settings size equals: 1.
62+
settingGroup := builder settings first.
63+
self assert: settingGroup name equals: #nonInteractive.
64+
self assert: settingGroup description equals: 'Settings related to mode without UI'.
65+
self assert: settingGroup label equals: 'Headless mode'.
66+
self assert: settingGroup groupName equals: nil
67+
]
68+
69+
{ #category : 'tests' }
70+
SettingsBuilderTest >> testCanBuildASettingGroupDefiningASetting [
71+
72+
| setting settingGroup |
73+
builder := SettingsBuilder forPragmaNamed: #settings_group_with_setting_test_data.
74+
75+
self assert: builder settings size equals: 2.
76+
settingGroup := builder settings first.
77+
self assert: settingGroup name equals: #nonInteractive.
78+
79+
setting := builder settings second.
80+
self assert: setting name equals: #snapshotErrorImage.
81+
self assert: setting groupName equals: settingGroup name.
82+
self assert: setting group equals: settingGroup
83+
84+
]

0 commit comments

Comments
 (0)