The Trunk: ToolBuilder-Tests-cmm.1.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

The Trunk: ToolBuilder-Tests-cmm.1.mcz

commits-2
Chris Muller uploaded a new version of ToolBuilder-Tests to project The Trunk:
http://source.squeak.org/trunk/ToolBuilder-Tests-cmm.1.mcz

==================== Summary ====================

Name: ToolBuilder-Tests-cmm.1
Author: cmm
Time: 15 December 2013, 4:25:47.507 pm
UUID: e77685b9-ca09-40c0-b84e-6caee75f4075
Ancestors:

ToolBuilder-Tests contains the specification that a compliant ToolBuilder must fulfill, together with the unit tests for ToolBuilder-Kernel.

==================== Snapshot ====================

SystemOrganization addCategory: #'ToolBuilder-Tests'!

TestCase subclass: #PluggableMenuItemSpecTests
        instanceVariableNames: ''
        classVariableNames: ''
        poolDictionaries: ''
        category: 'ToolBuilder-Tests'!

----- Method: PluggableMenuItemSpecTests>>testBeCheckableMakesItemCheckable (in category 'as yet unclassified') -----
testBeCheckableMakesItemCheckable
        | itemSpec |
        itemSpec := PluggableMenuItemSpec new.
        itemSpec beCheckable.
        self assert: itemSpec isCheckable description: 'Item not checkable'.!

----- Method: PluggableMenuItemSpecTests>>testByDefaultNotCheckable (in category 'as yet unclassified') -----
testByDefaultNotCheckable
        | itemSpec |
        itemSpec := PluggableMenuItemSpec new.
        self deny: itemSpec isCheckable.!

----- Method: PluggableMenuItemSpecTests>>testNoMarkerMakesItemChecked (in category 'as yet unclassified') -----
testNoMarkerMakesItemChecked
        | itemSpec |
        itemSpec := PluggableMenuItemSpec new.
        itemSpec label: '<no>no'.
        itemSpec analyzeLabel.
        self assert: itemSpec isCheckable description: 'item not checkable'.
        self deny: itemSpec checked description: 'item checked'.!

----- Method: PluggableMenuItemSpecTests>>testOffMarkerMakesItemChecked (in category 'as yet unclassified') -----
testOffMarkerMakesItemChecked
        | itemSpec |
        itemSpec := PluggableMenuItemSpec new.
        itemSpec label: '<off>off'.
        itemSpec analyzeLabel.
        self assert: itemSpec isCheckable description: 'item not checkable'.
        self deny: itemSpec checked description: 'item checked'.!

----- Method: PluggableMenuItemSpecTests>>testOnMarkerMakesItemChecked (in category 'as yet unclassified') -----
testOnMarkerMakesItemChecked
        | itemSpec |
        itemSpec := PluggableMenuItemSpec new.
        itemSpec label: '<on>on'.
        itemSpec analyzeLabel.
        self assert: itemSpec isCheckable description: 'item not checkable'.
        self assert: itemSpec isCheckable description: 'item not checked'.!

----- Method: PluggableMenuItemSpecTests>>testYesMarkerMakesItemChecked (in category 'as yet unclassified') -----
testYesMarkerMakesItemChecked
        | itemSpec |
        itemSpec := PluggableMenuItemSpec new.
        itemSpec label: '<yes>on'.
        itemSpec analyzeLabel.
        self assert: itemSpec isCheckable description: 'item not checkable'.
        self assert: itemSpec isCheckable description: 'item not checked'.!

TestCase subclass: #ToolBuilderTests
        instanceVariableNames: 'builder widget queries'
        classVariableNames: ''
        poolDictionaries: ''
        category: 'ToolBuilder-Tests'!

!ToolBuilderTests commentStamp: 'ar 2/11/2005 15:01' prior: 0!
Some tests to make sure ToolBuilder does what it says.!

----- Method: ToolBuilderTests class>>isAbstract (in category 'testing') -----
isAbstract
        ^self == ToolBuilderTests!

----- Method: ToolBuilderTests>>acceptWidgetText (in category 'support') -----
acceptWidgetText
        "accept text in widget"
        ^ self subclassResponsibility!

----- Method: ToolBuilderTests>>assertItemFiresWith: (in category 'tests-menus') -----
assertItemFiresWith: aBlock
        | spec |
        spec := builder pluggableMenuSpec new.
        spec model: self.
        aBlock value: spec.
        widget := builder build: spec.
        queries := IdentitySet new.
        self fireMenuItemWidget.
        self assert: (queries includes: #fireMenuAction)!

----- Method: ToolBuilderTests>>buttonWidgetEnabled (in category 'support') -----
buttonWidgetEnabled
        "Answer whether the current widget (a button) is currently enabled"
       
        ^ widget getModelState!

----- Method: ToolBuilderTests>>changeListWidget (in category 'support') -----
changeListWidget
        "Change the list widget's selection index"
        self subclassResponsibility!

----- Method: ToolBuilderTests>>expectedButtonSideEffects (in category 'support') -----
expectedButtonSideEffects
        "side effect queries we expect to see on buttons"
        ^#()!

----- Method: ToolBuilderTests>>fireButton (in category 'tests-button') -----
fireButton
        queries add: #fireButton.!

----- Method: ToolBuilderTests>>fireButtonWidget (in category 'support') -----
fireButtonWidget
        "Fire the widget, e.g., perform what is needed for the guy to trigger its action"
        self subclassResponsibility!

----- Method: ToolBuilderTests>>fireMenuAction (in category 'tests-menus') -----
fireMenuAction
        queries add: #fireMenuAction!

----- Method: ToolBuilderTests>>fireMenuItemWidget (in category 'tests-menus') -----
fireMenuItemWidget
        self subclassResponsibility!

----- Method: ToolBuilderTests>>getChildren (in category 'tests-panel') -----
getChildren
        queries add: #getChildren.
        ^#()!

----- Method: ToolBuilderTests>>getChildrenOf: (in category 'tests-trees') -----
getChildrenOf: item
        queries add: #getChildrenOf.
        ^(1 to: 9) asArray!

----- Method: ToolBuilderTests>>getColor (in category 'tests-text') -----
getColor
        queries add: #getColor.
        ^Color tan!

----- Method: ToolBuilderTests>>getEnabled (in category 'tests-button') -----
getEnabled
        queries add: #getEnabled.
        ^true!

----- Method: ToolBuilderTests>>getHelpOf: (in category 'tests-trees') -----
getHelpOf: item
        ^'help'!

----- Method: ToolBuilderTests>>getIconOf: (in category 'tests-trees') -----
getIconOf: item
        queries add: #getIconOf.
        ^nil!

----- Method: ToolBuilderTests>>getLabel (in category 'tests-button') -----
getLabel
        queries add: #getLabel.
        ^'TestLabel'!

----- Method: ToolBuilderTests>>getLabelOf: (in category 'tests-trees') -----
getLabelOf: item
        queries add: #getLabelOf.
        ^item asString!

----- Method: ToolBuilderTests>>getList (in category 'tests-lists') -----
getList
        queries add: #getList.
        ^(1 to: 100) collect:[:i| i printString].!

----- Method: ToolBuilderTests>>getListIndex (in category 'tests-lists') -----
getListIndex
        queries add: #getListIndex.
        ^13!

----- Method: ToolBuilderTests>>getListSelection (in category 'tests-lists') -----
getListSelection
        queries add: #getListSelection.
        ^'55'!

----- Method: ToolBuilderTests>>getMenu: (in category 'tests-lists') -----
getMenu: aMenu
        queries add: #getMenu.
        ^aMenu!

----- Method: ToolBuilderTests>>getRoots (in category 'tests-trees') -----
getRoots
        queries add: #getRoots.
        ^(1 to: 9) asArray!

----- Method: ToolBuilderTests>>getState (in category 'tests-button') -----
getState
        queries add: #getState.
        ^true!

----- Method: ToolBuilderTests>>getText (in category 'tests-text') -----
getText
        queries add: #getText.
        ^Text new!

----- Method: ToolBuilderTests>>getTextSelection (in category 'tests-text') -----
getTextSelection
        queries add: #getTextSelection.
        ^(1 to: 0)!

----- Method: ToolBuilderTests>>getTreeSelectionPath (in category 'tests-trees') -----
getTreeSelectionPath
        queries add: #getTreeSelectionPath.
        ^{2. 4. 3}!

----- Method: ToolBuilderTests>>hasChildren: (in category 'tests-trees') -----
hasChildren: item
        queries add: #hasChildren.
        ^true!

----- Method: ToolBuilderTests>>keyPress: (in category 'tests-lists') -----
keyPress: key
        queries add: #keyPress.!

----- Method: ToolBuilderTests>>makeButton (in category 'tests-button') -----
makeButton
        | spec |
        spec := self makeButtonSpec.
        widget := builder build: spec.
        ^widget!

----- Method: ToolBuilderTests>>makeButtonSpec (in category 'tests-button') -----
makeButtonSpec
        | spec |
        spec := builder pluggableButtonSpec new.
        spec name: #button.
        spec model: self.
        spec label: #getLabel.
        spec color: #getColor.
        spec state: #getState.
        spec enabled: #getEnabled.
        ^spec!

----- Method: ToolBuilderTests>>makeInputField (in category 'tests-input') -----
makeInputField
        | spec |
        spec := self makeInputFieldSpec.
        widget := builder build: spec.!

----- Method: ToolBuilderTests>>makeInputFieldSpec (in category 'tests-input') -----
makeInputFieldSpec
        | spec |
        spec := builder pluggableInputFieldSpec new.
        spec name: #input.
        spec model: self.
        spec getText: #getText.
        spec selection: #getTextSelection.
        spec color: #getColor.
        "<-- the following cannot be tested very well -->"
        spec setText: #setText:.
        spec menu: #getMenu:.
        ^spec!

----- Method: ToolBuilderTests>>makeItemList (in category 'tests-lists') -----
makeItemList
        | spec |
        spec := self makeItemListSpec.
        widget := builder build: spec.!

----- Method: ToolBuilderTests>>makeItemListSpec (in category 'tests-lists') -----
makeItemListSpec
        | spec |
        spec := builder pluggableListSpec new.
        spec name: #list.
        spec model: self.
        spec list: #getList.
        spec getSelected: #getListSelection.
        "<-- the following cannot be tested very well -->"
        spec setSelected: #setListSelection:.
        spec menu: #getMenu:.
        spec keyPress: #keyPress:.
        ^spec!

----- Method: ToolBuilderTests>>makeList (in category 'tests-lists') -----
makeList
        | spec |
        spec := self makeListSpec.
        widget := builder build: spec.!

----- Method: ToolBuilderTests>>makeListSpec (in category 'tests-lists') -----
makeListSpec
        | spec |
        spec := builder pluggableListSpec new.
        spec name: #list.
        spec model: self.
        spec list: #getList.
        spec getIndex: #getListIndex.
        "<-- the following cannot be tested very well -->"
        spec setIndex: #setListIndex:.
        spec menu: #getMenu:.
        spec keyPress: #keyPress:.
        ^spec!

----- Method: ToolBuilderTests>>makePanel (in category 'tests-panel') -----
makePanel
        | spec |
        spec := self makePanelSpec.
        widget := builder build: spec.!

----- Method: ToolBuilderTests>>makePanelSpec (in category 'tests-panel') -----
makePanelSpec
        | spec |
        spec := builder pluggablePanelSpec new.
        spec name: #panel.
        spec model: self.
        spec children: #getChildren.
        ^spec!

----- Method: ToolBuilderTests>>makeText (in category 'tests-text') -----
makeText
        | spec |
        spec := self makeTextSpec.
        widget := builder build: spec.!

----- Method: ToolBuilderTests>>makeTextSpec (in category 'tests-text') -----
makeTextSpec
        | spec |
        spec := builder pluggableTextSpec new.
        spec name: #text.
        spec model: self.
        spec getText: #getText.
        spec selection: #getTextSelection.
        spec color: #getColor.
        "<-- the following cannot be tested very well -->"
        spec setText: #setText:.
        spec menu: #getMenu:.
        ^spec!

----- Method: ToolBuilderTests>>makeTree (in category 'tests-trees') -----
makeTree
        | spec |
        spec := self makeTreeSpec.
        widget := builder build: spec.!

----- Method: ToolBuilderTests>>makeTreeSpec (in category 'tests-trees') -----
makeTreeSpec
        | spec |
        spec := builder pluggableTreeSpec new.
        spec name: #tree.
        spec model: self.
        spec roots: #getRoots.
        "<-- the following cannot be tested very well -->"
        spec getSelectedPath: #getTreeSelectionPath.
        spec getChildren: #getChildrenOf:.
        spec hasChildren: #hasChildren:.
        spec label: #getLabelOf:.
        spec icon: #getIconOf:.
        spec help: #getHelpOf:.
        spec setSelected: #setTreeSelection:.
        spec menu: #getMenu:.
        spec keyPress: #keyPress:.
        ^spec!

----- Method: ToolBuilderTests>>makeWindow (in category 'tests-window') -----
makeWindow
        | spec |
        spec := self makeWindowSpec.
        widget := builder build: spec.!

----- Method: ToolBuilderTests>>makeWindowSpec (in category 'tests-window') -----
makeWindowSpec
        | spec |
        spec := builder pluggableWindowSpec new.
        spec name: #window.
        spec model: self.
        spec children: #getChildren.
        spec label: #getLabel.
        spec closeAction: #noteWindowClosed.
        ^spec!

----- Method: ToolBuilderTests>>noteWindowClosed (in category 'tests-window') -----
noteWindowClosed
        queries add: #noteWindowClosed.!

----- Method: ToolBuilderTests>>openWindow (in category 'tests-window') -----
openWindow
        | spec |
        spec := self makeWindowSpec.
        widget := builder open: spec.!

----- Method: ToolBuilderTests>>returnFalse (in category 'support') -----
returnFalse
        ^false!

----- Method: ToolBuilderTests>>returnTrue (in category 'support') -----
returnTrue
        ^true!

----- Method: ToolBuilderTests>>setListIndex: (in category 'tests-lists') -----
setListIndex: index
        queries add: #setListIndex.!

----- Method: ToolBuilderTests>>setListSelection: (in category 'tests-lists') -----
setListSelection: newIndex
        queries add: #setListSelection.!

----- Method: ToolBuilderTests>>setText: (in category 'tests-text') -----
setText: newText
        queries add: #setText.
        ^false!

----- Method: ToolBuilderTests>>setTreeSelection: (in category 'tests-trees') -----
setTreeSelection: node
        queries add: #setTreeSelection.!

----- Method: ToolBuilderTests>>setUp (in category 'support') -----
setUp
        queries := IdentitySet new.!

----- Method: ToolBuilderTests>>shutDown (in category 'support') -----
shutDown
        self myDependents: nil!

----- Method: ToolBuilderTests>>testAddTargetSelectorArgumentList (in category 'tests-menus') -----
testAddTargetSelectorArgumentList
        self assertItemFiresWith:
                [:spec | spec
                                add: 'Menu Item'
                                target: self
                                selector: #fireMenuAction
                                argumentList: #()]!

----- Method: ToolBuilderTests>>testButtonFiresBlock (in category 'tests-button') -----
testButtonFiresBlock
        | spec |
        spec := builder pluggableButtonSpec new.
        spec model: self.
        spec action: [self fireButton].
        widget := builder build: spec.
        queries := IdentitySet new.
        self fireButtonWidget.
        self assert: (queries includes: #fireButton).!

----- Method: ToolBuilderTests>>testButtonFiresMessage (in category 'tests-button') -----
testButtonFiresMessage
        | spec |
        spec := builder pluggableButtonSpec new.
        spec model: self.
        spec action: (MessageSend receiver: self selector: #fireButton arguments: #()).
        widget := builder build: spec.
        queries := IdentitySet new.
        self fireButtonWidget.
        self assert: (queries includes: #fireButton).!

----- Method: ToolBuilderTests>>testButtonFiresSymbol (in category 'tests-button') -----
testButtonFiresSymbol
        | spec |
        spec := builder pluggableButtonSpec new.
        spec model: self.
        spec action: #fireButton.
        widget := builder build: spec.
        queries := IdentitySet new.
        self fireButtonWidget.
        self assert: (queries includes: #fireButton).!

----- Method: ToolBuilderTests>>testButtonInitiallyDisabled (in category 'tests-button') -----
testButtonInitiallyDisabled
        | spec |
        spec := builder pluggableButtonSpec new.
        spec model: self.
        spec label: #getLabel.
        spec color: #getColor.
        spec state: #getState.
        spec enabled: #returnFalse.
        widget := builder build: spec.
        self deny: (self buttonWidgetEnabled)!

----- Method: ToolBuilderTests>>testButtonInitiallyDisabledSelector (in category 'tests-button') -----
testButtonInitiallyDisabledSelector
        | spec |
        spec := builder pluggableButtonSpec new.
        spec model: self.
        spec label: #getLabel.
        spec color: #getColor.
        spec state: #getState.
        spec enabled: #returnFalse.
        widget := builder build: spec.
        self deny: (self buttonWidgetEnabled)!

----- Method: ToolBuilderTests>>testButtonInitiallyEnabled (in category 'tests-button') -----
testButtonInitiallyEnabled
        | spec |
        spec := builder pluggableButtonSpec new.
        spec model: self.
        spec label: #getLabel.
        spec color: #getColor.
        spec state: #getState.
        spec enabled: #returnTrue.
        widget := builder build: spec.
        self assert: (self buttonWidgetEnabled)!

----- Method: ToolBuilderTests>>testButtonInitiallyEnabledSelector (in category 'tests-button') -----
testButtonInitiallyEnabledSelector
        | spec |
        spec := builder pluggableButtonSpec new.
        spec model: self.
        spec label: #getLabel.
        spec color: #getColor.
        spec state: #getState.
        spec enabled: #returnTrue.
        widget := builder build: spec.
        self assert: (self buttonWidgetEnabled)!

----- Method: ToolBuilderTests>>testButtonWidgetID (in category 'tests-button') -----
testButtonWidgetID
        self makeButton.
        self assert: (builder widgetAt: #button) == widget.!

----- Method: ToolBuilderTests>>testGetButtonColor (in category 'tests-button') -----
testGetButtonColor
        self makeButton.
        queries := IdentitySet new.
        self changed: #getColor.
        self assert: (queries includes: #getColor).
        self assert: self widgetColor = self getColor.!

----- Method: ToolBuilderTests>>testGetButtonEnabled (in category 'tests-button') -----
testGetButtonEnabled
        self makeButton.
        queries := IdentitySet new.
        self changed: #getEnabled.
        self assert: (queries includes: #getEnabled).!

----- Method: ToolBuilderTests>>testGetButtonLabel (in category 'tests-button') -----
testGetButtonLabel
        self makeButton.
        queries := IdentitySet new.
        self changed: #getLabel.
        self assert: (queries includes: #getLabel).!

----- Method: ToolBuilderTests>>testGetButtonSideEffects (in category 'tests-button') -----
testGetButtonSideEffects
        self makeButton.
        queries := IdentitySet new.
        self changed: #testSignalWithNoDiscernableEffect.
        self expectedButtonSideEffects do:[:sym|
                self assert: (queries includes: sym).
                queries remove: sym.
        ].
        self assert: queries isEmpty.!

----- Method: ToolBuilderTests>>testGetButtonState (in category 'tests-button') -----
testGetButtonState
        self makeButton.
        queries := IdentitySet new.
        self changed: #getState.
        self assert: (queries includes: #getState).!

----- Method: ToolBuilderTests>>testGetInputFieldColor (in category 'tests-input') -----
testGetInputFieldColor
        self makeInputField.
        queries := IdentitySet new.
        self changed: #getColor.
        self assert: (queries includes: #getColor).
        self assert: self widgetColor = self getColor.!

----- Method: ToolBuilderTests>>testGetInputFieldSelection (in category 'tests-input') -----
testGetInputFieldSelection
        self makeInputField.
        queries := IdentitySet new.
        self changed: #getTextSelection.
        self assert: (queries includes: #getTextSelection).!

----- Method: ToolBuilderTests>>testGetInputFieldSideEffectFree (in category 'tests-input') -----
testGetInputFieldSideEffectFree
        self makeInputField.
        queries := IdentitySet new.
        self changed: #testSignalWithNoDiscernableEffect.
        self assert: queries isEmpty.!

----- Method: ToolBuilderTests>>testGetInputFieldText (in category 'tests-input') -----
testGetInputFieldText
        self makeInputField.
        queries := IdentitySet new.
        self changed: #getText.
        self assert: (queries includes: #getText).!

----- Method: ToolBuilderTests>>testGetItemListSideEffectFree (in category 'tests-lists') -----
testGetItemListSideEffectFree
        self makeItemList.
        queries := IdentitySet new.
        self changed: #testSignalWithNoDiscernableEffect.
        self assert: queries isEmpty.!

----- Method: ToolBuilderTests>>testGetList (in category 'tests-lists') -----
testGetList
        self makeList.
        queries := IdentitySet new.
        self changed: #getList.
        self assert: (queries includes: #getList).!

----- Method: ToolBuilderTests>>testGetListIndex (in category 'tests-lists') -----
testGetListIndex
        self makeList.
        queries := IdentitySet new.
        self changed: #getListIndex.
        self assert: (queries includes: #getListIndex).!

----- Method: ToolBuilderTests>>testGetListSelection (in category 'tests-lists') -----
testGetListSelection
        self makeItemList.
        queries := IdentitySet new.
        self changed: #getListSelection.
        self assert: (queries includes: #getListSelection).!

----- Method: ToolBuilderTests>>testGetListSideEffectFree (in category 'tests-lists') -----
testGetListSideEffectFree
        self makeList.
        queries := IdentitySet new.
        self changed: #testSignalWithNoDiscernableEffect.
        self assert: queries isEmpty.!

----- Method: ToolBuilderTests>>testGetPanelChildren (in category 'tests-panel') -----
testGetPanelChildren
        self makePanel.
        queries := IdentitySet new.
        self changed: #getChildren.
        self assert: (queries includes: #getChildren).!

----- Method: ToolBuilderTests>>testGetPanelSideEffectFree (in category 'tests-panel') -----
testGetPanelSideEffectFree
        self makePanel.
        queries := IdentitySet new.
        self changed: #testSignalWithNoDiscernableEffect.
        self assert: queries isEmpty.!

----- Method: ToolBuilderTests>>testGetText (in category 'tests-text') -----
testGetText
        self makeText.
        queries := IdentitySet new.
        self changed: #getText.
        self assert: (queries includes: #getText).!

----- Method: ToolBuilderTests>>testGetTextColor (in category 'tests-text') -----
testGetTextColor
        self makeText.
        queries := IdentitySet new.
        self changed: #getColor.
        self assert: (queries includes: #getColor).
        self assert: self widgetColor = self getColor.!

----- Method: ToolBuilderTests>>testGetTextSelection (in category 'tests-text') -----
testGetTextSelection
        self makeText.
        queries := IdentitySet new.
        self changed: #getTextSelection.
        self assert: (queries includes: #getTextSelection).!

----- Method: ToolBuilderTests>>testGetTextSideEffectFree (in category 'tests-text') -----
testGetTextSideEffectFree
        self makeText.
        queries := IdentitySet new.
        self changed: #testSignalWithNoDiscernableEffect.
        self assert: queries isEmpty.!

----- Method: ToolBuilderTests>>testGetWindowChildren (in category 'tests-window') -----
testGetWindowChildren
        self makeWindow.
        queries := IdentitySet new.
        self changed: #getChildren.
        self assert: (queries includes: #getChildren).!

----- Method: ToolBuilderTests>>testGetWindowLabel (in category 'tests-window') -----
testGetWindowLabel
        self makeWindow.
        queries := IdentitySet new.
        self changed: #getLabel.
        self assert: (queries includes: #getLabel).!

----- Method: ToolBuilderTests>>testGetWindowSideEffectFree (in category 'tests-window') -----
testGetWindowSideEffectFree
        self makeWindow.
        queries := IdentitySet new.
        self changed: #testSignalWithNoDiscernableEffect.
        self assert: queries isEmpty.!

----- Method: ToolBuilderTests>>testInputWidgetID (in category 'tests-input') -----
testInputWidgetID
        self makeInputField.
        self assert: (builder widgetAt: #input) == widget.!

----- Method: ToolBuilderTests>>testItemListWidgetID (in category 'tests-lists') -----
testItemListWidgetID
        self makeItemList.
        self assert: (builder widgetAt: #list) == widget.!

----- Method: ToolBuilderTests>>testListWidgetID (in category 'tests-lists') -----
testListWidgetID
        self makeList.
        self assert: (builder widgetAt: #list) == widget.!

----- Method: ToolBuilderTests>>testPanelWidgetID (in category 'tests-panel') -----
testPanelWidgetID
        self makePanel.
        self assert: (builder widgetAt: #panel) == widget.!

----- Method: ToolBuilderTests>>testSetInputField (in category 'tests-input') -----
testSetInputField
        self makeInputField.
        queries := IdentitySet new.
        self acceptWidgetText.
        self assert: (queries includes: #setText).!

----- Method: ToolBuilderTests>>testSetListIndex (in category 'tests-lists') -----
testSetListIndex
        self makeList.
        queries := IdentitySet new.
        self changeListWidget.
        self assert: (queries includes: #setListIndex).!

----- Method: ToolBuilderTests>>testSetListSelection (in category 'tests-lists') -----
testSetListSelection
        self makeItemList.
        queries := IdentitySet new.
        self changeListWidget.
        self assert: (queries includes: #setListSelection).!

----- Method: ToolBuilderTests>>testSetText (in category 'tests-text') -----
testSetText
        self makeText.
        queries := IdentitySet new.
        self acceptWidgetText.
        self assert: (queries includes: #setText).!

----- Method: ToolBuilderTests>>testTextWidgetID (in category 'tests-text') -----
testTextWidgetID
        self makeText.
        self assert: (builder widgetAt: #text) == widget!

----- Method: ToolBuilderTests>>testTreeExpandPath (in category 'tests-trees') -----
testTreeExpandPath
        "@@@@: REMOVE THIS - it's a hack (changed: #openPath)"
        self makeTree.
        queries := IdentitySet new.
        self changed: {#openPath. '4'. '2'. '3'}.
        self waitTick.
        self assert: (queries includes: #getChildrenOf).
        self assert: (queries includes: #setTreeSelection).
        self assert: (queries includes: #getLabelOf).
!

----- Method: ToolBuilderTests>>testTreeExpandPathFirst (in category 'tests-trees') -----
testTreeExpandPathFirst
        "@@@@: REMOVE THIS - it's a hack (changed: #openPath)"
        self makeTree.
        queries := IdentitySet new.
        self changed: {#openPath. '1'. '2'. '2'}.
        self waitTick.
        self assert: (queries includes: #getChildrenOf).
        self assert: (queries includes: #setTreeSelection).
        self assert: (queries includes: #getLabelOf).
!

----- Method: ToolBuilderTests>>testTreeGetSelectionPath (in category 'tests-trees') -----
testTreeGetSelectionPath
        self makeTree.
        queries := IdentitySet new.
        self changed: #getTreeSelectionPath.
        self waitTick.
        self assert: (queries includes: #getTreeSelectionPath).
        self assert: (queries includes: #getChildrenOf).
        self assert: (queries includes: #setTreeSelection).
!

----- Method: ToolBuilderTests>>testTreeRoots (in category 'tests-trees') -----
testTreeRoots
        self makeTree.
        queries := IdentitySet new.
        self changed: #getRoots.
        self assert: (queries includes: #getRoots).!

----- Method: ToolBuilderTests>>testTreeWidgetID (in category 'tests-trees') -----
testTreeWidgetID
        self makeTree.
        self assert: (builder widgetAt: #tree) == widget.!

----- Method: ToolBuilderTests>>testWindowCloseAction (in category 'tests-window') -----
testWindowCloseAction
        self openWindow.
        builder close: widget.
        self assert: (queries includes: #noteWindowClosed).!

----- Method: ToolBuilderTests>>testWindowID (in category 'tests-window') -----
testWindowID
        self makeWindow.
        self assert: (builder widgetAt: #window) == widget.!

----- Method: ToolBuilderTests>>waitTick (in category 'support') -----
waitTick
        ^nil!

----- Method: ToolBuilderTests>>widgetColor (in category 'support') -----
widgetColor
        "Answer color from widget"
        self subclassResponsibility

        "NOTE: You can bail out if you don't know how to get the color from the widget:
                ^self getColor
        will work."!


Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: ToolBuilder-Tests-cmm.1.mcz

Chris Muller-3
Now I'm starting to cuss!  I don't know why you didn't just start over again but I cannot tolerate a corrupt MC model from the get-go for this new package.

MC cannot support two versions with the same exact name, _especially_ in the same ancestry!

I didn't want to hassle you yet again so I went ahead and re-did it -- made ToolBuilder-Tests-cmm.1 and updated update-fbs.272 to point to that one.  Deleted your fbs.1 from the repository.

 - Chris



On Sun, Dec 15, 2013 at 4:25 PM, <[hidden email]> wrote:
Chris Muller uploaded a new version of ToolBuilder-Tests to project The Trunk:
http://source.squeak.org/trunk/ToolBuilder-Tests-cmm.1.mcz

==================== Summary ====================

Name: ToolBuilder-Tests-cmm.1
Author: cmm
Time: 15 December 2013, 4:25:47.507 pm
UUID: e77685b9-ca09-40c0-b84e-6caee75f4075
Ancestors:

ToolBuilder-Tests contains the specification that a compliant ToolBuilder must fulfill, together with the unit tests for ToolBuilder-Kernel.

==================== Snapshot ====================

SystemOrganization addCategory: #'ToolBuilder-Tests'!

TestCase subclass: #PluggableMenuItemSpecTests
        instanceVariableNames: ''
        classVariableNames: ''
        poolDictionaries: ''
        category: 'ToolBuilder-Tests'!

----- Method: PluggableMenuItemSpecTests>>testBeCheckableMakesItemCheckable (in category 'as yet unclassified') -----
testBeCheckableMakesItemCheckable
        | itemSpec |
        itemSpec := PluggableMenuItemSpec new.
        itemSpec beCheckable.
        self assert: itemSpec isCheckable description: 'Item not checkable'.!

----- Method: PluggableMenuItemSpecTests>>testByDefaultNotCheckable (in category 'as yet unclassified') -----
testByDefaultNotCheckable
        | itemSpec |
        itemSpec := PluggableMenuItemSpec new.
        self deny: itemSpec isCheckable.!

----- Method: PluggableMenuItemSpecTests>>testNoMarkerMakesItemChecked (in category 'as yet unclassified') -----
testNoMarkerMakesItemChecked
        | itemSpec |
        itemSpec := PluggableMenuItemSpec new.
        itemSpec label: '<no>no'.
        itemSpec analyzeLabel.
        self assert: itemSpec isCheckable description: 'item not checkable'.
        self deny: itemSpec checked description: 'item checked'.!

----- Method: PluggableMenuItemSpecTests>>testOffMarkerMakesItemChecked (in category 'as yet unclassified') -----
testOffMarkerMakesItemChecked
        | itemSpec |
        itemSpec := PluggableMenuItemSpec new.
        itemSpec label: '<off>off'.
        itemSpec analyzeLabel.
        self assert: itemSpec isCheckable description: 'item not checkable'.
        self deny: itemSpec checked description: 'item checked'.!

----- Method: PluggableMenuItemSpecTests>>testOnMarkerMakesItemChecked (in category 'as yet unclassified') -----
testOnMarkerMakesItemChecked
        | itemSpec |
        itemSpec := PluggableMenuItemSpec new.
        itemSpec label: '<on>on'.
        itemSpec analyzeLabel.
        self assert: itemSpec isCheckable description: 'item not checkable'.
        self assert: itemSpec isCheckable description: 'item not checked'.!

----- Method: PluggableMenuItemSpecTests>>testYesMarkerMakesItemChecked (in category 'as yet unclassified') -----
testYesMarkerMakesItemChecked
        | itemSpec |
        itemSpec := PluggableMenuItemSpec new.
        itemSpec label: '<yes>on'.
        itemSpec analyzeLabel.
        self assert: itemSpec isCheckable description: 'item not checkable'.
        self assert: itemSpec isCheckable description: 'item not checked'.!

TestCase subclass: #ToolBuilderTests
        instanceVariableNames: 'builder widget queries'
        classVariableNames: ''
        poolDictionaries: ''
        category: 'ToolBuilder-Tests'!

!ToolBuilderTests commentStamp: 'ar 2/11/2005 15:01' prior: 0!
Some tests to make sure ToolBuilder does what it says.!

----- Method: ToolBuilderTests class>>isAbstract (in category 'testing') -----
isAbstract
        ^self == ToolBuilderTests!

----- Method: ToolBuilderTests>>acceptWidgetText (in category 'support') -----
acceptWidgetText
        "accept text in widget"
        ^ self subclassResponsibility!

----- Method: ToolBuilderTests>>assertItemFiresWith: (in category 'tests-menus') -----
assertItemFiresWith: aBlock
        | spec |
        spec := builder pluggableMenuSpec new.
        spec model: self.
        aBlock value: spec.
        widget := builder build: spec.
        queries := IdentitySet new.
        self fireMenuItemWidget.
        self assert: (queries includes: #fireMenuAction)!

----- Method: ToolBuilderTests>>buttonWidgetEnabled (in category 'support') -----
buttonWidgetEnabled
        "Answer whether the current widget (a button) is currently enabled"

        ^ widget getModelState!

----- Method: ToolBuilderTests>>changeListWidget (in category 'support') -----
changeListWidget
        "Change the list widget's selection index"
        self subclassResponsibility!

----- Method: ToolBuilderTests>>expectedButtonSideEffects (in category 'support') -----
expectedButtonSideEffects
        "side effect queries we expect to see on buttons"
        ^#()!

----- Method: ToolBuilderTests>>fireButton (in category 'tests-button') -----
fireButton
        queries add: #fireButton.!

----- Method: ToolBuilderTests>>fireButtonWidget (in category 'support') -----
fireButtonWidget
        "Fire the widget, e.g., perform what is needed for the guy to trigger its action"
        self subclassResponsibility!

----- Method: ToolBuilderTests>>fireMenuAction (in category 'tests-menus') -----
fireMenuAction
        queries add: #fireMenuAction!

----- Method: ToolBuilderTests>>fireMenuItemWidget (in category 'tests-menus') -----
fireMenuItemWidget
        self subclassResponsibility!

----- Method: ToolBuilderTests>>getChildren (in category 'tests-panel') -----
getChildren
        queries add: #getChildren.
        ^#()!

----- Method: ToolBuilderTests>>getChildrenOf: (in category 'tests-trees') -----
getChildrenOf: item
        queries add: #getChildrenOf.
        ^(1 to: 9) asArray!

----- Method: ToolBuilderTests>>getColor (in category 'tests-text') -----
getColor
        queries add: #getColor.
        ^Color tan!

----- Method: ToolBuilderTests>>getEnabled (in category 'tests-button') -----
getEnabled
        queries add: #getEnabled.
        ^true!

----- Method: ToolBuilderTests>>getHelpOf: (in category 'tests-trees') -----
getHelpOf: item
        ^'help'!

----- Method: ToolBuilderTests>>getIconOf: (in category 'tests-trees') -----
getIconOf: item
        queries add: #getIconOf.
        ^nil!

----- Method: ToolBuilderTests>>getLabel (in category 'tests-button') -----
getLabel
        queries add: #getLabel.
        ^'TestLabel'!

----- Method: ToolBuilderTests>>getLabelOf: (in category 'tests-trees') -----
getLabelOf: item
        queries add: #getLabelOf.
        ^item asString!

----- Method: ToolBuilderTests>>getList (in category 'tests-lists') -----
getList
        queries add: #getList.
        ^(1 to: 100) collect:[:i| i printString].!

----- Method: ToolBuilderTests>>getListIndex (in category 'tests-lists') -----
getListIndex
        queries add: #getListIndex.
        ^13!

----- Method: ToolBuilderTests>>getListSelection (in category 'tests-lists') -----
getListSelection
        queries add: #getListSelection.
        ^'55'!

----- Method: ToolBuilderTests>>getMenu: (in category 'tests-lists') -----
getMenu: aMenu
        queries add: #getMenu.
        ^aMenu!

----- Method: ToolBuilderTests>>getRoots (in category 'tests-trees') -----
getRoots
        queries add: #getRoots.
        ^(1 to: 9) asArray!

----- Method: ToolBuilderTests>>getState (in category 'tests-button') -----
getState
        queries add: #getState.
        ^true!

----- Method: ToolBuilderTests>>getText (in category 'tests-text') -----
getText
        queries add: #getText.
        ^Text new!

----- Method: ToolBuilderTests>>getTextSelection (in category 'tests-text') -----
getTextSelection
        queries add: #getTextSelection.
        ^(1 to: 0)!

----- Method: ToolBuilderTests>>getTreeSelectionPath (in category 'tests-trees') -----
getTreeSelectionPath
        queries add: #getTreeSelectionPath.
        ^{2. 4. 3}!

----- Method: ToolBuilderTests>>hasChildren: (in category 'tests-trees') -----
hasChildren: item
        queries add: #hasChildren.
        ^true!

----- Method: ToolBuilderTests>>keyPress: (in category 'tests-lists') -----
keyPress: key
        queries add: #keyPress.!

----- Method: ToolBuilderTests>>makeButton (in category 'tests-button') -----
makeButton
        | spec |
        spec := self makeButtonSpec.
        widget := builder build: spec.
        ^widget!

----- Method: ToolBuilderTests>>makeButtonSpec (in category 'tests-button') -----
makeButtonSpec
        | spec |
        spec := builder pluggableButtonSpec new.
        spec name: #button.
        spec model: self.
        spec label: #getLabel.
        spec color: #getColor.
        spec state: #getState.
        spec enabled: #getEnabled.
        ^spec!

----- Method: ToolBuilderTests>>makeInputField (in category 'tests-input') -----
makeInputField
        | spec |
        spec := self makeInputFieldSpec.
        widget := builder build: spec.!

----- Method: ToolBuilderTests>>makeInputFieldSpec (in category 'tests-input') -----
makeInputFieldSpec
        | spec |
        spec := builder pluggableInputFieldSpec new.
        spec name: #input.
        spec model: self.
        spec getText: #getText.
        spec selection: #getTextSelection.
        spec color: #getColor.
        "<-- the following cannot be tested very well -->"
        spec setText: #setText:.
        spec menu: #getMenu:.
        ^spec!

----- Method: ToolBuilderTests>>makeItemList (in category 'tests-lists') -----
makeItemList
        | spec |
        spec := self makeItemListSpec.
        widget := builder build: spec.!

----- Method: ToolBuilderTests>>makeItemListSpec (in category 'tests-lists') -----
makeItemListSpec
        | spec |
        spec := builder pluggableListSpec new.
        spec name: #list.
        spec model: self.
        spec list: #getList.
        spec getSelected: #getListSelection.
        "<-- the following cannot be tested very well -->"
        spec setSelected: #setListSelection:.
        spec menu: #getMenu:.
        spec keyPress: #keyPress:.
        ^spec!

----- Method: ToolBuilderTests>>makeList (in category 'tests-lists') -----
makeList
        | spec |
        spec := self makeListSpec.
        widget := builder build: spec.!

----- Method: ToolBuilderTests>>makeListSpec (in category 'tests-lists') -----
makeListSpec
        | spec |
        spec := builder pluggableListSpec new.
        spec name: #list.
        spec model: self.
        spec list: #getList.
        spec getIndex: #getListIndex.
        "<-- the following cannot be tested very well -->"
        spec setIndex: #setListIndex:.
        spec menu: #getMenu:.
        spec keyPress: #keyPress:.
        ^spec!

----- Method: ToolBuilderTests>>makePanel (in category 'tests-panel') -----
makePanel
        | spec |
        spec := self makePanelSpec.
        widget := builder build: spec.!

----- Method: ToolBuilderTests>>makePanelSpec (in category 'tests-panel') -----
makePanelSpec
        | spec |
        spec := builder pluggablePanelSpec new.
        spec name: #panel.
        spec model: self.
        spec children: #getChildren.
        ^spec!

----- Method: ToolBuilderTests>>makeText (in category 'tests-text') -----
makeText
        | spec |
        spec := self makeTextSpec.
        widget := builder build: spec.!

----- Method: ToolBuilderTests>>makeTextSpec (in category 'tests-text') -----
makeTextSpec
        | spec |
        spec := builder pluggableTextSpec new.
        spec name: #text.
        spec model: self.
        spec getText: #getText.
        spec selection: #getTextSelection.
        spec color: #getColor.
        "<-- the following cannot be tested very well -->"
        spec setText: #setText:.
        spec menu: #getMenu:.
        ^spec!

----- Method: ToolBuilderTests>>makeTree (in category 'tests-trees') -----
makeTree
        | spec |
        spec := self makeTreeSpec.
        widget := builder build: spec.!

----- Method: ToolBuilderTests>>makeTreeSpec (in category 'tests-trees') -----
makeTreeSpec
        | spec |
        spec := builder pluggableTreeSpec new.
        spec name: #tree.
        spec model: self.
        spec roots: #getRoots.
        "<-- the following cannot be tested very well -->"
        spec getSelectedPath: #getTreeSelectionPath.
        spec getChildren: #getChildrenOf:.
        spec hasChildren: #hasChildren:.
        spec label: #getLabelOf:.
        spec icon: #getIconOf:.
        spec help: #getHelpOf:.
        spec setSelected: #setTreeSelection:.
        spec menu: #getMenu:.
        spec keyPress: #keyPress:.
        ^spec!

----- Method: ToolBuilderTests>>makeWindow (in category 'tests-window') -----
makeWindow
        | spec |
        spec := self makeWindowSpec.
        widget := builder build: spec.!

----- Method: ToolBuilderTests>>makeWindowSpec (in category 'tests-window') -----
makeWindowSpec
        | spec |
        spec := builder pluggableWindowSpec new.
        spec name: #window.
        spec model: self.
        spec children: #getChildren.
        spec label: #getLabel.
        spec closeAction: #noteWindowClosed.
        ^spec!

----- Method: ToolBuilderTests>>noteWindowClosed (in category 'tests-window') -----
noteWindowClosed
        queries add: #noteWindowClosed.!

----- Method: ToolBuilderTests>>openWindow (in category 'tests-window') -----
openWindow
        | spec |
        spec := self makeWindowSpec.
        widget := builder open: spec.!

----- Method: ToolBuilderTests>>returnFalse (in category 'support') -----
returnFalse
        ^false!

----- Method: ToolBuilderTests>>returnTrue (in category 'support') -----
returnTrue
        ^true!

----- Method: ToolBuilderTests>>setListIndex: (in category 'tests-lists') -----
setListIndex: index
        queries add: #setListIndex.!

----- Method: ToolBuilderTests>>setListSelection: (in category 'tests-lists') -----
setListSelection: newIndex
        queries add: #setListSelection.!

----- Method: ToolBuilderTests>>setText: (in category 'tests-text') -----
setText: newText
        queries add: #setText.
        ^false!

----- Method: ToolBuilderTests>>setTreeSelection: (in category 'tests-trees') -----
setTreeSelection: node
        queries add: #setTreeSelection.!

----- Method: ToolBuilderTests>>setUp (in category 'support') -----
setUp
        queries := IdentitySet new.!

----- Method: ToolBuilderTests>>shutDown (in category 'support') -----
shutDown
        self myDependents: nil!

----- Method: ToolBuilderTests>>testAddTargetSelectorArgumentList (in category 'tests-menus') -----
testAddTargetSelectorArgumentList
        self assertItemFiresWith:
                [:spec | spec
                                add: 'Menu Item'
                                target: self
                                selector: #fireMenuAction
                                argumentList: #()]!

----- Method: ToolBuilderTests>>testButtonFiresBlock (in category 'tests-button') -----
testButtonFiresBlock
        | spec |
        spec := builder pluggableButtonSpec new.
        spec model: self.
        spec action: [self fireButton].
        widget := builder build: spec.
        queries := IdentitySet new.
        self fireButtonWidget.
        self assert: (queries includes: #fireButton).!

----- Method: ToolBuilderTests>>testButtonFiresMessage (in category 'tests-button') -----
testButtonFiresMessage
        | spec |
        spec := builder pluggableButtonSpec new.
        spec model: self.
        spec action: (MessageSend receiver: self selector: #fireButton arguments: #()).
        widget := builder build: spec.
        queries := IdentitySet new.
        self fireButtonWidget.
        self assert: (queries includes: #fireButton).!

----- Method: ToolBuilderTests>>testButtonFiresSymbol (in category 'tests-button') -----
testButtonFiresSymbol
        | spec |
        spec := builder pluggableButtonSpec new.
        spec model: self.
        spec action: #fireButton.
        widget := builder build: spec.
        queries := IdentitySet new.
        self fireButtonWidget.
        self assert: (queries includes: #fireButton).!

----- Method: ToolBuilderTests>>testButtonInitiallyDisabled (in category 'tests-button') -----
testButtonInitiallyDisabled
        | spec |
        spec := builder pluggableButtonSpec new.
        spec model: self.
        spec label: #getLabel.
        spec color: #getColor.
        spec state: #getState.
        spec enabled: #returnFalse.
        widget := builder build: spec.
        self deny: (self buttonWidgetEnabled)!

----- Method: ToolBuilderTests>>testButtonInitiallyDisabledSelector (in category 'tests-button') -----
testButtonInitiallyDisabledSelector
        | spec |
        spec := builder pluggableButtonSpec new.
        spec model: self.
        spec label: #getLabel.
        spec color: #getColor.
        spec state: #getState.
        spec enabled: #returnFalse.
        widget := builder build: spec.
        self deny: (self buttonWidgetEnabled)!

----- Method: ToolBuilderTests>>testButtonInitiallyEnabled (in category 'tests-button') -----
testButtonInitiallyEnabled
        | spec |
        spec := builder pluggableButtonSpec new.
        spec model: self.
        spec label: #getLabel.
        spec color: #getColor.
        spec state: #getState.
        spec enabled: #returnTrue.
        widget := builder build: spec.
        self assert: (self buttonWidgetEnabled)!

----- Method: ToolBuilderTests>>testButtonInitiallyEnabledSelector (in category 'tests-button') -----
testButtonInitiallyEnabledSelector
        | spec |
        spec := builder pluggableButtonSpec new.
        spec model: self.
        spec label: #getLabel.
        spec color: #getColor.
        spec state: #getState.
        spec enabled: #returnTrue.
        widget := builder build: spec.
        self assert: (self buttonWidgetEnabled)!

----- Method: ToolBuilderTests>>testButtonWidgetID (in category 'tests-button') -----
testButtonWidgetID
        self makeButton.
        self assert: (builder widgetAt: #button) == widget.!

----- Method: ToolBuilderTests>>testGetButtonColor (in category 'tests-button') -----
testGetButtonColor
        self makeButton.
        queries := IdentitySet new.
        self changed: #getColor.
        self assert: (queries includes: #getColor).
        self assert: self widgetColor = self getColor.!

----- Method: ToolBuilderTests>>testGetButtonEnabled (in category 'tests-button') -----
testGetButtonEnabled
        self makeButton.
        queries := IdentitySet new.
        self changed: #getEnabled.
        self assert: (queries includes: #getEnabled).!

----- Method: ToolBuilderTests>>testGetButtonLabel (in category 'tests-button') -----
testGetButtonLabel
        self makeButton.
        queries := IdentitySet new.
        self changed: #getLabel.
        self assert: (queries includes: #getLabel).!

----- Method: ToolBuilderTests>>testGetButtonSideEffects (in category 'tests-button') -----
testGetButtonSideEffects
        self makeButton.
        queries := IdentitySet new.
        self changed: #testSignalWithNoDiscernableEffect.
        self expectedButtonSideEffects do:[:sym|
                self assert: (queries includes: sym).
                queries remove: sym.
        ].
        self assert: queries isEmpty.!

----- Method: ToolBuilderTests>>testGetButtonState (in category 'tests-button') -----
testGetButtonState
        self makeButton.
        queries := IdentitySet new.
        self changed: #getState.
        self assert: (queries includes: #getState).!

----- Method: ToolBuilderTests>>testGetInputFieldColor (in category 'tests-input') -----
testGetInputFieldColor
        self makeInputField.
        queries := IdentitySet new.
        self changed: #getColor.
        self assert: (queries includes: #getColor).
        self assert: self widgetColor = self getColor.!

----- Method: ToolBuilderTests>>testGetInputFieldSelection (in category 'tests-input') -----
testGetInputFieldSelection
        self makeInputField.
        queries := IdentitySet new.
        self changed: #getTextSelection.
        self assert: (queries includes: #getTextSelection).!

----- Method: ToolBuilderTests>>testGetInputFieldSideEffectFree (in category 'tests-input') -----
testGetInputFieldSideEffectFree
        self makeInputField.
        queries := IdentitySet new.
        self changed: #testSignalWithNoDiscernableEffect.
        self assert: queries isEmpty.!

----- Method: ToolBuilderTests>>testGetInputFieldText (in category 'tests-input') -----
testGetInputFieldText
        self makeInputField.
        queries := IdentitySet new.
        self changed: #getText.
        self assert: (queries includes: #getText).!

----- Method: ToolBuilderTests>>testGetItemListSideEffectFree (in category 'tests-lists') -----
testGetItemListSideEffectFree
        self makeItemList.
        queries := IdentitySet new.
        self changed: #testSignalWithNoDiscernableEffect.
        self assert: queries isEmpty.!

----- Method: ToolBuilderTests>>testGetList (in category 'tests-lists') -----
testGetList
        self makeList.
        queries := IdentitySet new.
        self changed: #getList.
        self assert: (queries includes: #getList).!

----- Method: ToolBuilderTests>>testGetListIndex (in category 'tests-lists') -----
testGetListIndex
        self makeList.
        queries := IdentitySet new.
        self changed: #getListIndex.
        self assert: (queries includes: #getListIndex).!

----- Method: ToolBuilderTests>>testGetListSelection (in category 'tests-lists') -----
testGetListSelection
        self makeItemList.
        queries := IdentitySet new.
        self changed: #getListSelection.
        self assert: (queries includes: #getListSelection).!

----- Method: ToolBuilderTests>>testGetListSideEffectFree (in category 'tests-lists') -----
testGetListSideEffectFree
        self makeList.
        queries := IdentitySet new.
        self changed: #testSignalWithNoDiscernableEffect.
        self assert: queries isEmpty.!

----- Method: ToolBuilderTests>>testGetPanelChildren (in category 'tests-panel') -----
testGetPanelChildren
        self makePanel.
        queries := IdentitySet new.
        self changed: #getChildren.
        self assert: (queries includes: #getChildren).!

----- Method: ToolBuilderTests>>testGetPanelSideEffectFree (in category 'tests-panel') -----
testGetPanelSideEffectFree
        self makePanel.
        queries := IdentitySet new.
        self changed: #testSignalWithNoDiscernableEffect.
        self assert: queries isEmpty.!

----- Method: ToolBuilderTests>>testGetText (in category 'tests-text') -----
testGetText
        self makeText.
        queries := IdentitySet new.
        self changed: #getText.
        self assert: (queries includes: #getText).!

----- Method: ToolBuilderTests>>testGetTextColor (in category 'tests-text') -----
testGetTextColor
        self makeText.
        queries := IdentitySet new.
        self changed: #getColor.
        self assert: (queries includes: #getColor).
        self assert: self widgetColor = self getColor.!

----- Method: ToolBuilderTests>>testGetTextSelection (in category 'tests-text') -----
testGetTextSelection
        self makeText.
        queries := IdentitySet new.
        self changed: #getTextSelection.
        self assert: (queries includes: #getTextSelection).!

----- Method: ToolBuilderTests>>testGetTextSideEffectFree (in category 'tests-text') -----
testGetTextSideEffectFree
        self makeText.
        queries := IdentitySet new.
        self changed: #testSignalWithNoDiscernableEffect.
        self assert: queries isEmpty.!

----- Method: ToolBuilderTests>>testGetWindowChildren (in category 'tests-window') -----
testGetWindowChildren
        self makeWindow.
        queries := IdentitySet new.
        self changed: #getChildren.
        self assert: (queries includes: #getChildren).!

----- Method: ToolBuilderTests>>testGetWindowLabel (in category 'tests-window') -----
testGetWindowLabel
        self makeWindow.
        queries := IdentitySet new.
        self changed: #getLabel.
        self assert: (queries includes: #getLabel).!

----- Method: ToolBuilderTests>>testGetWindowSideEffectFree (in category 'tests-window') -----
testGetWindowSideEffectFree
        self makeWindow.
        queries := IdentitySet new.
        self changed: #testSignalWithNoDiscernableEffect.
        self assert: queries isEmpty.!

----- Method: ToolBuilderTests>>testInputWidgetID (in category 'tests-input') -----
testInputWidgetID
        self makeInputField.
        self assert: (builder widgetAt: #input) == widget.!

----- Method: ToolBuilderTests>>testItemListWidgetID (in category 'tests-lists') -----
testItemListWidgetID
        self makeItemList.
        self assert: (builder widgetAt: #list) == widget.!

----- Method: ToolBuilderTests>>testListWidgetID (in category 'tests-lists') -----
testListWidgetID
        self makeList.
        self assert: (builder widgetAt: #list) == widget.!

----- Method: ToolBuilderTests>>testPanelWidgetID (in category 'tests-panel') -----
testPanelWidgetID
        self makePanel.
        self assert: (builder widgetAt: #panel) == widget.!

----- Method: ToolBuilderTests>>testSetInputField (in category 'tests-input') -----
testSetInputField
        self makeInputField.
        queries := IdentitySet new.
        self acceptWidgetText.
        self assert: (queries includes: #setText).!

----- Method: ToolBuilderTests>>testSetListIndex (in category 'tests-lists') -----
testSetListIndex
        self makeList.
        queries := IdentitySet new.
        self changeListWidget.
        self assert: (queries includes: #setListIndex).!

----- Method: ToolBuilderTests>>testSetListSelection (in category 'tests-lists') -----
testSetListSelection
        self makeItemList.
        queries := IdentitySet new.
        self changeListWidget.
        self assert: (queries includes: #setListSelection).!

----- Method: ToolBuilderTests>>testSetText (in category 'tests-text') -----
testSetText
        self makeText.
        queries := IdentitySet new.
        self acceptWidgetText.
        self assert: (queries includes: #setText).!

----- Method: ToolBuilderTests>>testTextWidgetID (in category 'tests-text') -----
testTextWidgetID
        self makeText.
        self assert: (builder widgetAt: #text) == widget!

----- Method: ToolBuilderTests>>testTreeExpandPath (in category 'tests-trees') -----
testTreeExpandPath
        "@@@@: REMOVE THIS - it's a hack (changed: #openPath)"
        self makeTree.
        queries := IdentitySet new.
        self changed: {#openPath. '4'. '2'. '3'}.
        self waitTick.
        self assert: (queries includes: #getChildrenOf).
        self assert: (queries includes: #setTreeSelection).
        self assert: (queries includes: #getLabelOf).
!

----- Method: ToolBuilderTests>>testTreeExpandPathFirst (in category 'tests-trees') -----
testTreeExpandPathFirst
        "@@@@: REMOVE THIS - it's a hack (changed: #openPath)"
        self makeTree.
        queries := IdentitySet new.
        self changed: {#openPath. '1'. '2'. '2'}.
        self waitTick.
        self assert: (queries includes: #getChildrenOf).
        self assert: (queries includes: #setTreeSelection).
        self assert: (queries includes: #getLabelOf).
!

----- Method: ToolBuilderTests>>testTreeGetSelectionPath (in category 'tests-trees') -----
testTreeGetSelectionPath
        self makeTree.
        queries := IdentitySet new.
        self changed: #getTreeSelectionPath.
        self waitTick.
        self assert: (queries includes: #getTreeSelectionPath).
        self assert: (queries includes: #getChildrenOf).
        self assert: (queries includes: #setTreeSelection).
!

----- Method: ToolBuilderTests>>testTreeRoots (in category 'tests-trees') -----
testTreeRoots
        self makeTree.
        queries := IdentitySet new.
        self changed: #getRoots.
        self assert: (queries includes: #getRoots).!

----- Method: ToolBuilderTests>>testTreeWidgetID (in category 'tests-trees') -----
testTreeWidgetID
        self makeTree.
        self assert: (builder widgetAt: #tree) == widget.!

----- Method: ToolBuilderTests>>testWindowCloseAction (in category 'tests-window') -----
testWindowCloseAction
        self openWindow.
        builder close: widget.
        self assert: (queries includes: #noteWindowClosed).!

----- Method: ToolBuilderTests>>testWindowID (in category 'tests-window') -----
testWindowID
        self makeWindow.
        self assert: (builder widgetAt: #window) == widget.!

----- Method: ToolBuilderTests>>waitTick (in category 'support') -----
waitTick
        ^nil!

----- Method: ToolBuilderTests>>widgetColor (in category 'support') -----
widgetColor
        "Answer color from widget"
        self subclassResponsibility

        "NOTE: You can bail out if you don't know how to get the color from the widget:
                ^self getColor
        will work."!





Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: ToolBuilder-Tests-cmm.1.mcz

Frank Shearar-3
What are you talking about? I issued a new package, with a new name.
"ToolBuilder-Kernel" is not "Toolbuilder-Kernel". Seriously, I don't
appreciate this tone, Chris.

Yes, I screwed up. But I don't need you jumping up and down.

If you knew that a case sensitive difference in the package name was
inadequate, maybe you should have warned me. That would have been
useful. MC versions have UUIDs. If they do not use these versions to
determine their ancestry, the model is _broken_.

frank

On 15 December 2013 22:33, Chris Muller <[hidden email]> wrote:

> Now I'm starting to cuss!  I don't know why you didn't just start over again
> but I cannot tolerate a corrupt MC model from the get-go for this new
> package.
>
> MC cannot support two versions with the same exact name, _especially_ in the
> same ancestry!
>
> I didn't want to hassle you yet again so I went ahead and re-did it -- made
> ToolBuilder-Tests-cmm.1 and updated update-fbs.272 to point to that one.
> Deleted your fbs.1 from the repository.
>
>  - Chris
>
>
>
> On Sun, Dec 15, 2013 at 4:25 PM, <[hidden email]> wrote:
>>
>> Chris Muller uploaded a new version of ToolBuilder-Tests to project The
>> Trunk:
>> http://source.squeak.org/trunk/ToolBuilder-Tests-cmm.1.mcz
>>
>> ==================== Summary ====================
>>
>> Name: ToolBuilder-Tests-cmm.1
>> Author: cmm
>> Time: 15 December 2013, 4:25:47.507 pm
>> UUID: e77685b9-ca09-40c0-b84e-6caee75f4075
>> Ancestors:
>>
>> ToolBuilder-Tests contains the specification that a compliant ToolBuilder
>> must fulfill, together with the unit tests for ToolBuilder-Kernel.
>>
>> ==================== Snapshot ====================
>>
>> SystemOrganization addCategory: #'ToolBuilder-Tests'!
>>
>> TestCase subclass: #PluggableMenuItemSpecTests
>>         instanceVariableNames: ''
>>         classVariableNames: ''
>>         poolDictionaries: ''
>>         category: 'ToolBuilder-Tests'!
>>
>> ----- Method:
>> PluggableMenuItemSpecTests>>testBeCheckableMakesItemCheckable (in category
>> 'as yet unclassified') -----
>> testBeCheckableMakesItemCheckable
>>         | itemSpec |
>>         itemSpec := PluggableMenuItemSpec new.
>>         itemSpec beCheckable.
>>         self assert: itemSpec isCheckable description: 'Item not
>> checkable'.!
>>
>> ----- Method: PluggableMenuItemSpecTests>>testByDefaultNotCheckable (in
>> category 'as yet unclassified') -----
>> testByDefaultNotCheckable
>>         | itemSpec |
>>         itemSpec := PluggableMenuItemSpec new.
>>         self deny: itemSpec isCheckable.!
>>
>> ----- Method: PluggableMenuItemSpecTests>>testNoMarkerMakesItemChecked (in
>> category 'as yet unclassified') -----
>> testNoMarkerMakesItemChecked
>>         | itemSpec |
>>         itemSpec := PluggableMenuItemSpec new.
>>         itemSpec label: '<no>no'.
>>         itemSpec analyzeLabel.
>>         self assert: itemSpec isCheckable description: 'item not
>> checkable'.
>>         self deny: itemSpec checked description: 'item checked'.!
>>
>> ----- Method: PluggableMenuItemSpecTests>>testOffMarkerMakesItemChecked
>> (in category 'as yet unclassified') -----
>> testOffMarkerMakesItemChecked
>>         | itemSpec |
>>         itemSpec := PluggableMenuItemSpec new.
>>         itemSpec label: '<off>off'.
>>         itemSpec analyzeLabel.
>>         self assert: itemSpec isCheckable description: 'item not
>> checkable'.
>>         self deny: itemSpec checked description: 'item checked'.!
>>
>> ----- Method: PluggableMenuItemSpecTests>>testOnMarkerMakesItemChecked (in
>> category 'as yet unclassified') -----
>> testOnMarkerMakesItemChecked
>>         | itemSpec |
>>         itemSpec := PluggableMenuItemSpec new.
>>         itemSpec label: '<on>on'.
>>         itemSpec analyzeLabel.
>>         self assert: itemSpec isCheckable description: 'item not
>> checkable'.
>>         self assert: itemSpec isCheckable description: 'item not
>> checked'.!
>>
>> ----- Method: PluggableMenuItemSpecTests>>testYesMarkerMakesItemChecked
>> (in category 'as yet unclassified') -----
>> testYesMarkerMakesItemChecked
>>         | itemSpec |
>>         itemSpec := PluggableMenuItemSpec new.
>>         itemSpec label: '<yes>on'.
>>         itemSpec analyzeLabel.
>>         self assert: itemSpec isCheckable description: 'item not
>> checkable'.
>>         self assert: itemSpec isCheckable description: 'item not
>> checked'.!
>>
>> TestCase subclass: #ToolBuilderTests
>>         instanceVariableNames: 'builder widget queries'
>>         classVariableNames: ''
>>         poolDictionaries: ''
>>         category: 'ToolBuilder-Tests'!
>>
>> !ToolBuilderTests commentStamp: 'ar 2/11/2005 15:01' prior: 0!
>> Some tests to make sure ToolBuilder does what it says.!
>>
>> ----- Method: ToolBuilderTests class>>isAbstract (in category 'testing')
>> -----
>> isAbstract
>>         ^self == ToolBuilderTests!
>>
>> ----- Method: ToolBuilderTests>>acceptWidgetText (in category 'support')
>> -----
>> acceptWidgetText
>>         "accept text in widget"
>>         ^ self subclassResponsibility!
>>
>> ----- Method: ToolBuilderTests>>assertItemFiresWith: (in category
>> 'tests-menus') -----
>> assertItemFiresWith: aBlock
>>         | spec |
>>         spec := builder pluggableMenuSpec new.
>>         spec model: self.
>>         aBlock value: spec.
>>         widget := builder build: spec.
>>         queries := IdentitySet new.
>>         self fireMenuItemWidget.
>>         self assert: (queries includes: #fireMenuAction)!
>>
>> ----- Method: ToolBuilderTests>>buttonWidgetEnabled (in category
>> 'support') -----
>> buttonWidgetEnabled
>>         "Answer whether the current widget (a button) is currently
>> enabled"
>>
>>         ^ widget getModelState!
>>
>> ----- Method: ToolBuilderTests>>changeListWidget (in category 'support')
>> -----
>> changeListWidget
>>         "Change the list widget's selection index"
>>         self subclassResponsibility!
>>
>> ----- Method: ToolBuilderTests>>expectedButtonSideEffects (in category
>> 'support') -----
>> expectedButtonSideEffects
>>         "side effect queries we expect to see on buttons"
>>         ^#()!
>>
>> ----- Method: ToolBuilderTests>>fireButton (in category 'tests-button')
>> -----
>> fireButton
>>         queries add: #fireButton.!
>>
>> ----- Method: ToolBuilderTests>>fireButtonWidget (in category 'support')
>> -----
>> fireButtonWidget
>>         "Fire the widget, e.g., perform what is needed for the guy to
>> trigger its action"
>>         self subclassResponsibility!
>>
>> ----- Method: ToolBuilderTests>>fireMenuAction (in category 'tests-menus')
>> -----
>> fireMenuAction
>>         queries add: #fireMenuAction!
>>
>> ----- Method: ToolBuilderTests>>fireMenuItemWidget (in category
>> 'tests-menus') -----
>> fireMenuItemWidget
>>         self subclassResponsibility!
>>
>> ----- Method: ToolBuilderTests>>getChildren (in category 'tests-panel')
>> -----
>> getChildren
>>         queries add: #getChildren.
>>         ^#()!
>>
>> ----- Method: ToolBuilderTests>>getChildrenOf: (in category 'tests-trees')
>> -----
>> getChildrenOf: item
>>         queries add: #getChildrenOf.
>>         ^(1 to: 9) asArray!
>>
>> ----- Method: ToolBuilderTests>>getColor (in category 'tests-text') -----
>> getColor
>>         queries add: #getColor.
>>         ^Color tan!
>>
>> ----- Method: ToolBuilderTests>>getEnabled (in category 'tests-button')
>> -----
>> getEnabled
>>         queries add: #getEnabled.
>>         ^true!
>>
>> ----- Method: ToolBuilderTests>>getHelpOf: (in category 'tests-trees')
>> -----
>> getHelpOf: item
>>         ^'help'!
>>
>> ----- Method: ToolBuilderTests>>getIconOf: (in category 'tests-trees')
>> -----
>> getIconOf: item
>>         queries add: #getIconOf.
>>         ^nil!
>>
>> ----- Method: ToolBuilderTests>>getLabel (in category 'tests-button')
>> -----
>> getLabel
>>         queries add: #getLabel.
>>         ^'TestLabel'!
>>
>> ----- Method: ToolBuilderTests>>getLabelOf: (in category 'tests-trees')
>> -----
>> getLabelOf: item
>>         queries add: #getLabelOf.
>>         ^item asString!
>>
>> ----- Method: ToolBuilderTests>>getList (in category 'tests-lists') -----
>> getList
>>         queries add: #getList.
>>         ^(1 to: 100) collect:[:i| i printString].!
>>
>> ----- Method: ToolBuilderTests>>getListIndex (in category 'tests-lists')
>> -----
>> getListIndex
>>         queries add: #getListIndex.
>>         ^13!
>>
>> ----- Method: ToolBuilderTests>>getListSelection (in category
>> 'tests-lists') -----
>> getListSelection
>>         queries add: #getListSelection.
>>         ^'55'!
>>
>> ----- Method: ToolBuilderTests>>getMenu: (in category 'tests-lists') -----
>> getMenu: aMenu
>>         queries add: #getMenu.
>>         ^aMenu!
>>
>> ----- Method: ToolBuilderTests>>getRoots (in category 'tests-trees') -----
>> getRoots
>>         queries add: #getRoots.
>>         ^(1 to: 9) asArray!
>>
>> ----- Method: ToolBuilderTests>>getState (in category 'tests-button')
>> -----
>> getState
>>         queries add: #getState.
>>         ^true!
>>
>> ----- Method: ToolBuilderTests>>getText (in category 'tests-text') -----
>> getText
>>         queries add: #getText.
>>         ^Text new!
>>
>> ----- Method: ToolBuilderTests>>getTextSelection (in category
>> 'tests-text') -----
>> getTextSelection
>>         queries add: #getTextSelection.
>>         ^(1 to: 0)!
>>
>> ----- Method: ToolBuilderTests>>getTreeSelectionPath (in category
>> 'tests-trees') -----
>> getTreeSelectionPath
>>         queries add: #getTreeSelectionPath.
>>         ^{2. 4. 3}!
>>
>> ----- Method: ToolBuilderTests>>hasChildren: (in category 'tests-trees')
>> -----
>> hasChildren: item
>>         queries add: #hasChildren.
>>         ^true!
>>
>> ----- Method: ToolBuilderTests>>keyPress: (in category 'tests-lists')
>> -----
>> keyPress: key
>>         queries add: #keyPress.!
>>
>> ----- Method: ToolBuilderTests>>makeButton (in category 'tests-button')
>> -----
>> makeButton
>>         | spec |
>>         spec := self makeButtonSpec.
>>         widget := builder build: spec.
>>         ^widget!
>>
>> ----- Method: ToolBuilderTests>>makeButtonSpec (in category
>> 'tests-button') -----
>> makeButtonSpec
>>         | spec |
>>         spec := builder pluggableButtonSpec new.
>>         spec name: #button.
>>         spec model: self.
>>         spec label: #getLabel.
>>         spec color: #getColor.
>>         spec state: #getState.
>>         spec enabled: #getEnabled.
>>         ^spec!
>>
>> ----- Method: ToolBuilderTests>>makeInputField (in category 'tests-input')
>> -----
>> makeInputField
>>         | spec |
>>         spec := self makeInputFieldSpec.
>>         widget := builder build: spec.!
>>
>> ----- Method: ToolBuilderTests>>makeInputFieldSpec (in category
>> 'tests-input') -----
>> makeInputFieldSpec
>>         | spec |
>>         spec := builder pluggableInputFieldSpec new.
>>         spec name: #input.
>>         spec model: self.
>>         spec getText: #getText.
>>         spec selection: #getTextSelection.
>>         spec color: #getColor.
>>         "<-- the following cannot be tested very well -->"
>>         spec setText: #setText:.
>>         spec menu: #getMenu:.
>>         ^spec!
>>
>> ----- Method: ToolBuilderTests>>makeItemList (in category 'tests-lists')
>> -----
>> makeItemList
>>         | spec |
>>         spec := self makeItemListSpec.
>>         widget := builder build: spec.!
>>
>> ----- Method: ToolBuilderTests>>makeItemListSpec (in category
>> 'tests-lists') -----
>> makeItemListSpec
>>         | spec |
>>         spec := builder pluggableListSpec new.
>>         spec name: #list.
>>         spec model: self.
>>         spec list: #getList.
>>         spec getSelected: #getListSelection.
>>         "<-- the following cannot be tested very well -->"
>>         spec setSelected: #setListSelection:.
>>         spec menu: #getMenu:.
>>         spec keyPress: #keyPress:.
>>         ^spec!
>>
>> ----- Method: ToolBuilderTests>>makeList (in category 'tests-lists') -----
>> makeList
>>         | spec |
>>         spec := self makeListSpec.
>>         widget := builder build: spec.!
>>
>> ----- Method: ToolBuilderTests>>makeListSpec (in category 'tests-lists')
>> -----
>> makeListSpec
>>         | spec |
>>         spec := builder pluggableListSpec new.
>>         spec name: #list.
>>         spec model: self.
>>         spec list: #getList.
>>         spec getIndex: #getListIndex.
>>         "<-- the following cannot be tested very well -->"
>>         spec setIndex: #setListIndex:.
>>         spec menu: #getMenu:.
>>         spec keyPress: #keyPress:.
>>         ^spec!
>>
>> ----- Method: ToolBuilderTests>>makePanel (in category 'tests-panel')
>> -----
>> makePanel
>>         | spec |
>>         spec := self makePanelSpec.
>>         widget := builder build: spec.!
>>
>> ----- Method: ToolBuilderTests>>makePanelSpec (in category 'tests-panel')
>> -----
>> makePanelSpec
>>         | spec |
>>         spec := builder pluggablePanelSpec new.
>>         spec name: #panel.
>>         spec model: self.
>>         spec children: #getChildren.
>>         ^spec!
>>
>> ----- Method: ToolBuilderTests>>makeText (in category 'tests-text') -----
>> makeText
>>         | spec |
>>         spec := self makeTextSpec.
>>         widget := builder build: spec.!
>>
>> ----- Method: ToolBuilderTests>>makeTextSpec (in category 'tests-text')
>> -----
>> makeTextSpec
>>         | spec |
>>         spec := builder pluggableTextSpec new.
>>         spec name: #text.
>>         spec model: self.
>>         spec getText: #getText.
>>         spec selection: #getTextSelection.
>>         spec color: #getColor.
>>         "<-- the following cannot be tested very well -->"
>>         spec setText: #setText:.
>>         spec menu: #getMenu:.
>>         ^spec!
>>
>> ----- Method: ToolBuilderTests>>makeTree (in category 'tests-trees') -----
>> makeTree
>>         | spec |
>>         spec := self makeTreeSpec.
>>         widget := builder build: spec.!
>>
>> ----- Method: ToolBuilderTests>>makeTreeSpec (in category 'tests-trees')
>> -----
>> makeTreeSpec
>>         | spec |
>>         spec := builder pluggableTreeSpec new.
>>         spec name: #tree.
>>         spec model: self.
>>         spec roots: #getRoots.
>>         "<-- the following cannot be tested very well -->"
>>         spec getSelectedPath: #getTreeSelectionPath.
>>         spec getChildren: #getChildrenOf:.
>>         spec hasChildren: #hasChildren:.
>>         spec label: #getLabelOf:.
>>         spec icon: #getIconOf:.
>>         spec help: #getHelpOf:.
>>         spec setSelected: #setTreeSelection:.
>>         spec menu: #getMenu:.
>>         spec keyPress: #keyPress:.
>>         ^spec!
>>
>> ----- Method: ToolBuilderTests>>makeWindow (in category 'tests-window')
>> -----
>> makeWindow
>>         | spec |
>>         spec := self makeWindowSpec.
>>         widget := builder build: spec.!
>>
>> ----- Method: ToolBuilderTests>>makeWindowSpec (in category
>> 'tests-window') -----
>> makeWindowSpec
>>         | spec |
>>         spec := builder pluggableWindowSpec new.
>>         spec name: #window.
>>         spec model: self.
>>         spec children: #getChildren.
>>         spec label: #getLabel.
>>         spec closeAction: #noteWindowClosed.
>>         ^spec!
>>
>> ----- Method: ToolBuilderTests>>noteWindowClosed (in category
>> 'tests-window') -----
>> noteWindowClosed
>>         queries add: #noteWindowClosed.!
>>
>> ----- Method: ToolBuilderTests>>openWindow (in category 'tests-window')
>> -----
>> openWindow
>>         | spec |
>>         spec := self makeWindowSpec.
>>         widget := builder open: spec.!
>>
>> ----- Method: ToolBuilderTests>>returnFalse (in category 'support') -----
>> returnFalse
>>         ^false!
>>
>> ----- Method: ToolBuilderTests>>returnTrue (in category 'support') -----
>> returnTrue
>>         ^true!
>>
>> ----- Method: ToolBuilderTests>>setListIndex: (in category 'tests-lists')
>> -----
>> setListIndex: index
>>         queries add: #setListIndex.!
>>
>> ----- Method: ToolBuilderTests>>setListSelection: (in category
>> 'tests-lists') -----
>> setListSelection: newIndex
>>         queries add: #setListSelection.!
>>
>> ----- Method: ToolBuilderTests>>setText: (in category 'tests-text') -----
>> setText: newText
>>         queries add: #setText.
>>         ^false!
>>
>> ----- Method: ToolBuilderTests>>setTreeSelection: (in category
>> 'tests-trees') -----
>> setTreeSelection: node
>>         queries add: #setTreeSelection.!
>>
>> ----- Method: ToolBuilderTests>>setUp (in category 'support') -----
>> setUp
>>         queries := IdentitySet new.!
>>
>> ----- Method: ToolBuilderTests>>shutDown (in category 'support') -----
>> shutDown
>>         self myDependents: nil!
>>
>> ----- Method: ToolBuilderTests>>testAddTargetSelectorArgumentList (in
>> category 'tests-menus') -----
>> testAddTargetSelectorArgumentList
>>         self assertItemFiresWith:
>>                 [:spec | spec
>>                                 add: 'Menu Item'
>>                                 target: self
>>                                 selector: #fireMenuAction
>>                                 argumentList: #()]!
>>
>> ----- Method: ToolBuilderTests>>testButtonFiresBlock (in category
>> 'tests-button') -----
>> testButtonFiresBlock
>>         | spec |
>>         spec := builder pluggableButtonSpec new.
>>         spec model: self.
>>         spec action: [self fireButton].
>>         widget := builder build: spec.
>>         queries := IdentitySet new.
>>         self fireButtonWidget.
>>         self assert: (queries includes: #fireButton).!
>>
>> ----- Method: ToolBuilderTests>>testButtonFiresMessage (in category
>> 'tests-button') -----
>> testButtonFiresMessage
>>         | spec |
>>         spec := builder pluggableButtonSpec new.
>>         spec model: self.
>>         spec action: (MessageSend receiver: self selector: #fireButton
>> arguments: #()).
>>         widget := builder build: spec.
>>         queries := IdentitySet new.
>>         self fireButtonWidget.
>>         self assert: (queries includes: #fireButton).!
>>
>> ----- Method: ToolBuilderTests>>testButtonFiresSymbol (in category
>> 'tests-button') -----
>> testButtonFiresSymbol
>>         | spec |
>>         spec := builder pluggableButtonSpec new.
>>         spec model: self.
>>         spec action: #fireButton.
>>         widget := builder build: spec.
>>         queries := IdentitySet new.
>>         self fireButtonWidget.
>>         self assert: (queries includes: #fireButton).!
>>
>> ----- Method: ToolBuilderTests>>testButtonInitiallyDisabled (in category
>> 'tests-button') -----
>> testButtonInitiallyDisabled
>>         | spec |
>>         spec := builder pluggableButtonSpec new.
>>         spec model: self.
>>         spec label: #getLabel.
>>         spec color: #getColor.
>>         spec state: #getState.
>>         spec enabled: #returnFalse.
>>         widget := builder build: spec.
>>         self deny: (self buttonWidgetEnabled)!
>>
>> ----- Method: ToolBuilderTests>>testButtonInitiallyDisabledSelector (in
>> category 'tests-button') -----
>> testButtonInitiallyDisabledSelector
>>         | spec |
>>         spec := builder pluggableButtonSpec new.
>>         spec model: self.
>>         spec label: #getLabel.
>>         spec color: #getColor.
>>         spec state: #getState.
>>         spec enabled: #returnFalse.
>>         widget := builder build: spec.
>>         self deny: (self buttonWidgetEnabled)!
>>
>> ----- Method: ToolBuilderTests>>testButtonInitiallyEnabled (in category
>> 'tests-button') -----
>> testButtonInitiallyEnabled
>>         | spec |
>>         spec := builder pluggableButtonSpec new.
>>         spec model: self.
>>         spec label: #getLabel.
>>         spec color: #getColor.
>>         spec state: #getState.
>>         spec enabled: #returnTrue.
>>         widget := builder build: spec.
>>         self assert: (self buttonWidgetEnabled)!
>>
>> ----- Method: ToolBuilderTests>>testButtonInitiallyEnabledSelector (in
>> category 'tests-button') -----
>> testButtonInitiallyEnabledSelector
>>         | spec |
>>         spec := builder pluggableButtonSpec new.
>>         spec model: self.
>>         spec label: #getLabel.
>>         spec color: #getColor.
>>         spec state: #getState.
>>         spec enabled: #returnTrue.
>>         widget := builder build: spec.
>>         self assert: (self buttonWidgetEnabled)!
>>
>> ----- Method: ToolBuilderTests>>testButtonWidgetID (in category
>> 'tests-button') -----
>> testButtonWidgetID
>>         self makeButton.
>>         self assert: (builder widgetAt: #button) == widget.!
>>
>> ----- Method: ToolBuilderTests>>testGetButtonColor (in category
>> 'tests-button') -----
>> testGetButtonColor
>>         self makeButton.
>>         queries := IdentitySet new.
>>         self changed: #getColor.
>>         self assert: (queries includes: #getColor).
>>         self assert: self widgetColor = self getColor.!
>>
>> ----- Method: ToolBuilderTests>>testGetButtonEnabled (in category
>> 'tests-button') -----
>> testGetButtonEnabled
>>         self makeButton.
>>         queries := IdentitySet new.
>>         self changed: #getEnabled.
>>         self assert: (queries includes: #getEnabled).!
>>
>> ----- Method: ToolBuilderTests>>testGetButtonLabel (in category
>> 'tests-button') -----
>> testGetButtonLabel
>>         self makeButton.
>>         queries := IdentitySet new.
>>         self changed: #getLabel.
>>         self assert: (queries includes: #getLabel).!
>>
>> ----- Method: ToolBuilderTests>>testGetButtonSideEffects (in category
>> 'tests-button') -----
>> testGetButtonSideEffects
>>         self makeButton.
>>         queries := IdentitySet new.
>>         self changed: #testSignalWithNoDiscernableEffect.
>>         self expectedButtonSideEffects do:[:sym|
>>                 self assert: (queries includes: sym).
>>                 queries remove: sym.
>>         ].
>>         self assert: queries isEmpty.!
>>
>> ----- Method: ToolBuilderTests>>testGetButtonState (in category
>> 'tests-button') -----
>> testGetButtonState
>>         self makeButton.
>>         queries := IdentitySet new.
>>         self changed: #getState.
>>         self assert: (queries includes: #getState).!
>>
>> ----- Method: ToolBuilderTests>>testGetInputFieldColor (in category
>> 'tests-input') -----
>> testGetInputFieldColor
>>         self makeInputField.
>>         queries := IdentitySet new.
>>         self changed: #getColor.
>>         self assert: (queries includes: #getColor).
>>         self assert: self widgetColor = self getColor.!
>>
>> ----- Method: ToolBuilderTests>>testGetInputFieldSelection (in category
>> 'tests-input') -----
>> testGetInputFieldSelection
>>         self makeInputField.
>>         queries := IdentitySet new.
>>         self changed: #getTextSelection.
>>         self assert: (queries includes: #getTextSelection).!
>>
>> ----- Method: ToolBuilderTests>>testGetInputFieldSideEffectFree (in
>> category 'tests-input') -----
>> testGetInputFieldSideEffectFree
>>         self makeInputField.
>>         queries := IdentitySet new.
>>         self changed: #testSignalWithNoDiscernableEffect.
>>         self assert: queries isEmpty.!
>>
>> ----- Method: ToolBuilderTests>>testGetInputFieldText (in category
>> 'tests-input') -----
>> testGetInputFieldText
>>         self makeInputField.
>>         queries := IdentitySet new.
>>         self changed: #getText.
>>         self assert: (queries includes: #getText).!
>>
>> ----- Method: ToolBuilderTests>>testGetItemListSideEffectFree (in category
>> 'tests-lists') -----
>> testGetItemListSideEffectFree
>>         self makeItemList.
>>         queries := IdentitySet new.
>>         self changed: #testSignalWithNoDiscernableEffect.
>>         self assert: queries isEmpty.!
>>
>> ----- Method: ToolBuilderTests>>testGetList (in category 'tests-lists')
>> -----
>> testGetList
>>         self makeList.
>>         queries := IdentitySet new.
>>         self changed: #getList.
>>         self assert: (queries includes: #getList).!
>>
>> ----- Method: ToolBuilderTests>>testGetListIndex (in category
>> 'tests-lists') -----
>> testGetListIndex
>>         self makeList.
>>         queries := IdentitySet new.
>>         self changed: #getListIndex.
>>         self assert: (queries includes: #getListIndex).!
>>
>> ----- Method: ToolBuilderTests>>testGetListSelection (in category
>> 'tests-lists') -----
>> testGetListSelection
>>         self makeItemList.
>>         queries := IdentitySet new.
>>         self changed: #getListSelection.
>>         self assert: (queries includes: #getListSelection).!
>>
>> ----- Method: ToolBuilderTests>>testGetListSideEffectFree (in category
>> 'tests-lists') -----
>> testGetListSideEffectFree
>>         self makeList.
>>         queries := IdentitySet new.
>>         self changed: #testSignalWithNoDiscernableEffect.
>>         self assert: queries isEmpty.!
>>
>> ----- Method: ToolBuilderTests>>testGetPanelChildren (in category
>> 'tests-panel') -----
>> testGetPanelChildren
>>         self makePanel.
>>         queries := IdentitySet new.
>>         self changed: #getChildren.
>>         self assert: (queries includes: #getChildren).!
>>
>> ----- Method: ToolBuilderTests>>testGetPanelSideEffectFree (in category
>> 'tests-panel') -----
>> testGetPanelSideEffectFree
>>         self makePanel.
>>         queries := IdentitySet new.
>>         self changed: #testSignalWithNoDiscernableEffect.
>>         self assert: queries isEmpty.!
>>
>> ----- Method: ToolBuilderTests>>testGetText (in category 'tests-text')
>> -----
>> testGetText
>>         self makeText.
>>         queries := IdentitySet new.
>>         self changed: #getText.
>>         self assert: (queries includes: #getText).!
>>
>> ----- Method: ToolBuilderTests>>testGetTextColor (in category
>> 'tests-text') -----
>> testGetTextColor
>>         self makeText.
>>         queries := IdentitySet new.
>>         self changed: #getColor.
>>         self assert: (queries includes: #getColor).
>>         self assert: self widgetColor = self getColor.!
>>
>> ----- Method: ToolBuilderTests>>testGetTextSelection (in category
>> 'tests-text') -----
>> testGetTextSelection
>>         self makeText.
>>         queries := IdentitySet new.
>>         self changed: #getTextSelection.
>>         self assert: (queries includes: #getTextSelection).!
>>
>> ----- Method: ToolBuilderTests>>testGetTextSideEffectFree (in category
>> 'tests-text') -----
>> testGetTextSideEffectFree
>>         self makeText.
>>         queries := IdentitySet new.
>>         self changed: #testSignalWithNoDiscernableEffect.
>>         self assert: queries isEmpty.!
>>
>> ----- Method: ToolBuilderTests>>testGetWindowChildren (in category
>> 'tests-window') -----
>> testGetWindowChildren
>>         self makeWindow.
>>         queries := IdentitySet new.
>>         self changed: #getChildren.
>>         self assert: (queries includes: #getChildren).!
>>
>> ----- Method: ToolBuilderTests>>testGetWindowLabel (in category
>> 'tests-window') -----
>> testGetWindowLabel
>>         self makeWindow.
>>         queries := IdentitySet new.
>>         self changed: #getLabel.
>>         self assert: (queries includes: #getLabel).!
>>
>> ----- Method: ToolBuilderTests>>testGetWindowSideEffectFree (in category
>> 'tests-window') -----
>> testGetWindowSideEffectFree
>>         self makeWindow.
>>         queries := IdentitySet new.
>>         self changed: #testSignalWithNoDiscernableEffect.
>>         self assert: queries isEmpty.!
>>
>> ----- Method: ToolBuilderTests>>testInputWidgetID (in category
>> 'tests-input') -----
>> testInputWidgetID
>>         self makeInputField.
>>         self assert: (builder widgetAt: #input) == widget.!
>>
>> ----- Method: ToolBuilderTests>>testItemListWidgetID (in category
>> 'tests-lists') -----
>> testItemListWidgetID
>>         self makeItemList.
>>         self assert: (builder widgetAt: #list) == widget.!
>>
>> ----- Method: ToolBuilderTests>>testListWidgetID (in category
>> 'tests-lists') -----
>> testListWidgetID
>>         self makeList.
>>         self assert: (builder widgetAt: #list) == widget.!
>>
>> ----- Method: ToolBuilderTests>>testPanelWidgetID (in category
>> 'tests-panel') -----
>> testPanelWidgetID
>>         self makePanel.
>>         self assert: (builder widgetAt: #panel) == widget.!
>>
>> ----- Method: ToolBuilderTests>>testSetInputField (in category
>> 'tests-input') -----
>> testSetInputField
>>         self makeInputField.
>>         queries := IdentitySet new.
>>         self acceptWidgetText.
>>         self assert: (queries includes: #setText).!
>>
>> ----- Method: ToolBuilderTests>>testSetListIndex (in category
>> 'tests-lists') -----
>> testSetListIndex
>>         self makeList.
>>         queries := IdentitySet new.
>>         self changeListWidget.
>>         self assert: (queries includes: #setListIndex).!
>>
>> ----- Method: ToolBuilderTests>>testSetListSelection (in category
>> 'tests-lists') -----
>> testSetListSelection
>>         self makeItemList.
>>         queries := IdentitySet new.
>>         self changeListWidget.
>>         self assert: (queries includes: #setListSelection).!
>>
>> ----- Method: ToolBuilderTests>>testSetText (in category 'tests-text')
>> -----
>> testSetText
>>         self makeText.
>>         queries := IdentitySet new.
>>         self acceptWidgetText.
>>         self assert: (queries includes: #setText).!
>>
>> ----- Method: ToolBuilderTests>>testTextWidgetID (in category
>> 'tests-text') -----
>> testTextWidgetID
>>         self makeText.
>>         self assert: (builder widgetAt: #text) == widget!
>>
>> ----- Method: ToolBuilderTests>>testTreeExpandPath (in category
>> 'tests-trees') -----
>> testTreeExpandPath
>>         "@@@@: REMOVE THIS - it's a hack (changed: #openPath)"
>>         self makeTree.
>>         queries := IdentitySet new.
>>         self changed: {#openPath. '4'. '2'. '3'}.
>>         self waitTick.
>>         self assert: (queries includes: #getChildrenOf).
>>         self assert: (queries includes: #setTreeSelection).
>>         self assert: (queries includes: #getLabelOf).
>> !
>>
>> ----- Method: ToolBuilderTests>>testTreeExpandPathFirst (in category
>> 'tests-trees') -----
>> testTreeExpandPathFirst
>>         "@@@@: REMOVE THIS - it's a hack (changed: #openPath)"
>>         self makeTree.
>>         queries := IdentitySet new.
>>         self changed: {#openPath. '1'. '2'. '2'}.
>>         self waitTick.
>>         self assert: (queries includes: #getChildrenOf).
>>         self assert: (queries includes: #setTreeSelection).
>>         self assert: (queries includes: #getLabelOf).
>> !
>>
>> ----- Method: ToolBuilderTests>>testTreeGetSelectionPath (in category
>> 'tests-trees') -----
>> testTreeGetSelectionPath
>>         self makeTree.
>>         queries := IdentitySet new.
>>         self changed: #getTreeSelectionPath.
>>         self waitTick.
>>         self assert: (queries includes: #getTreeSelectionPath).
>>         self assert: (queries includes: #getChildrenOf).
>>         self assert: (queries includes: #setTreeSelection).
>> !
>>
>> ----- Method: ToolBuilderTests>>testTreeRoots (in category 'tests-trees')
>> -----
>> testTreeRoots
>>         self makeTree.
>>         queries := IdentitySet new.
>>         self changed: #getRoots.
>>         self assert: (queries includes: #getRoots).!
>>
>> ----- Method: ToolBuilderTests>>testTreeWidgetID (in category
>> 'tests-trees') -----
>> testTreeWidgetID
>>         self makeTree.
>>         self assert: (builder widgetAt: #tree) == widget.!
>>
>> ----- Method: ToolBuilderTests>>testWindowCloseAction (in category
>> 'tests-window') -----
>> testWindowCloseAction
>>         self openWindow.
>>         builder close: widget.
>>         self assert: (queries includes: #noteWindowClosed).!
>>
>> ----- Method: ToolBuilderTests>>testWindowID (in category 'tests-window')
>> -----
>> testWindowID
>>         self makeWindow.
>>         self assert: (builder widgetAt: #window) == widget.!
>>
>> ----- Method: ToolBuilderTests>>waitTick (in category 'support') -----
>> waitTick
>>         ^nil!
>>
>> ----- Method: ToolBuilderTests>>widgetColor (in category 'support') -----
>> widgetColor
>>         "Answer color from widget"
>>         self subclassResponsibility
>>
>>         "NOTE: You can bail out if you don't know how to get the color
>> from the widget:
>>                 ^self getColor
>>         will work."!
>>
>>
>
>
>
>

Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: ToolBuilder-Tests-cmm.1.mcz

Chris Muller-3
MC uses Version UUID's correctly to unambiguously identify its ancestry.  Alas, the limitation of FileBased repository's cannot possibly support this ancestry model:

================
Name: ToolBuilder-Tests-fbs.1
Author: fbs
Time: 15 December 2013, 9:56:20.616 am
UUID: 8772d620-cf6d-a540-9cf4-c7925daf8c6a
Ancestors: ToolBuilder-Tests-fbs.1
=================

The logic of SqueakSource, which sometimes involves diffing versions _on the server_ has not been tested with this situation.  And, we already know its delicate because a few weeks ago we found slow SS trying to diff a package with no ancestry and caught in an endless loop with growing memory.

This is a new and unique and unnecessary scenario that invites another endless loop situation in the server.  That's why I jumped up and down.



On Sun, Dec 15, 2013 at 4:45 PM, Frank Shearar <[hidden email]> wrote:
What are you talking about? I issued a new package, with a new name.
"ToolBuilder-Kernel" is not "Toolbuilder-Kernel". Seriously, I don't
appreciate this tone, Chris.

Yes, I screwed up. But I don't need you jumping up and down.

If you knew that a case sensitive difference in the package name was
inadequate, maybe you should have warned me. That would have been
useful. MC versions have UUIDs. If they do not use these versions to
determine their ancestry, the model is _broken_.

frank

On 15 December 2013 22:33, Chris Muller <[hidden email]> wrote:
> Now I'm starting to cuss!  I don't know why you didn't just start over again
> but I cannot tolerate a corrupt MC model from the get-go for this new
> package.
>
> MC cannot support two versions with the same exact name, _especially_ in the
> same ancestry!
>
> I didn't want to hassle you yet again so I went ahead and re-did it -- made
> ToolBuilder-Tests-cmm.1 and updated update-fbs.272 to point to that one.
> Deleted your fbs.1 from the repository.
>
>  - Chris
>
>
>
> On Sun, Dec 15, 2013 at 4:25 PM, <[hidden email]> wrote:
>>
>> Chris Muller uploaded a new version of ToolBuilder-Tests to project The
>> Trunk:
>> http://source.squeak.org/trunk/ToolBuilder-Tests-cmm.1.mcz
>>
>> ==================== Summary ====================
>>
>> Name: ToolBuilder-Tests-cmm.1
>> Author: cmm
>> Time: 15 December 2013, 4:25:47.507 pm
>> UUID: e77685b9-ca09-40c0-b84e-6caee75f4075
>> Ancestors:
>>
>> ToolBuilder-Tests contains the specification that a compliant ToolBuilder
>> must fulfill, together with the unit tests for ToolBuilder-Kernel.
>>
>> ==================== Snapshot ====================
>>
>> SystemOrganization addCategory: #'ToolBuilder-Tests'!
>>
>> TestCase subclass: #PluggableMenuItemSpecTests
>>         instanceVariableNames: ''
>>         classVariableNames: ''
>>         poolDictionaries: ''
>>         category: 'ToolBuilder-Tests'!
>>
>> ----- Method:
>> PluggableMenuItemSpecTests>>testBeCheckableMakesItemCheckable (in category
>> 'as yet unclassified') -----
>> testBeCheckableMakesItemCheckable
>>         | itemSpec |
>>         itemSpec := PluggableMenuItemSpec new.
>>         itemSpec beCheckable.
>>         self assert: itemSpec isCheckable description: 'Item not
>> checkable'.!
>>
>> ----- Method: PluggableMenuItemSpecTests>>testByDefaultNotCheckable (in
>> category 'as yet unclassified') -----
>> testByDefaultNotCheckable
>>         | itemSpec |
>>         itemSpec := PluggableMenuItemSpec new.
>>         self deny: itemSpec isCheckable.!
>>
>> ----- Method: PluggableMenuItemSpecTests>>testNoMarkerMakesItemChecked (in
>> category 'as yet unclassified') -----
>> testNoMarkerMakesItemChecked
>>         | itemSpec |
>>         itemSpec := PluggableMenuItemSpec new.
>>         itemSpec label: '<no>no'.
>>         itemSpec analyzeLabel.
>>         self assert: itemSpec isCheckable description: 'item not
>> checkable'.
>>         self deny: itemSpec checked description: 'item checked'.!
>>
>> ----- Method: PluggableMenuItemSpecTests>>testOffMarkerMakesItemChecked
>> (in category 'as yet unclassified') -----
>> testOffMarkerMakesItemChecked
>>         | itemSpec |
>>         itemSpec := PluggableMenuItemSpec new.
>>         itemSpec label: '<off>off'.
>>         itemSpec analyzeLabel.
>>         self assert: itemSpec isCheckable description: 'item not
>> checkable'.
>>         self deny: itemSpec checked description: 'item checked'.!
>>
>> ----- Method: PluggableMenuItemSpecTests>>testOnMarkerMakesItemChecked (in
>> category 'as yet unclassified') -----
>> testOnMarkerMakesItemChecked
>>         | itemSpec |
>>         itemSpec := PluggableMenuItemSpec new.
>>         itemSpec label: '<on>on'.
>>         itemSpec analyzeLabel.
>>         self assert: itemSpec isCheckable description: 'item not
>> checkable'.
>>         self assert: itemSpec isCheckable description: 'item not
>> checked'.!
>>
>> ----- Method: PluggableMenuItemSpecTests>>testYesMarkerMakesItemChecked
>> (in category 'as yet unclassified') -----
>> testYesMarkerMakesItemChecked
>>         | itemSpec |
>>         itemSpec := PluggableMenuItemSpec new.
>>         itemSpec label: '<yes>on'.
>>         itemSpec analyzeLabel.
>>         self assert: itemSpec isCheckable description: 'item not
>> checkable'.
>>         self assert: itemSpec isCheckable description: 'item not
>> checked'.!
>>
>> TestCase subclass: #ToolBuilderTests
>>         instanceVariableNames: 'builder widget queries'
>>         classVariableNames: ''
>>         poolDictionaries: ''
>>         category: 'ToolBuilder-Tests'!
>>
>> !ToolBuilderTests commentStamp: 'ar 2/11/2005 15:01' prior: 0!
>> Some tests to make sure ToolBuilder does what it says.!
>>
>> ----- Method: ToolBuilderTests class>>isAbstract (in category 'testing')
>> -----
>> isAbstract
>>         ^self == ToolBuilderTests!
>>
>> ----- Method: ToolBuilderTests>>acceptWidgetText (in category 'support')
>> -----
>> acceptWidgetText
>>         "accept text in widget"
>>         ^ self subclassResponsibility!
>>
>> ----- Method: ToolBuilderTests>>assertItemFiresWith: (in category
>> 'tests-menus') -----
>> assertItemFiresWith: aBlock
>>         | spec |
>>         spec := builder pluggableMenuSpec new.
>>         spec model: self.
>>         aBlock value: spec.
>>         widget := builder build: spec.
>>         queries := IdentitySet new.
>>         self fireMenuItemWidget.
>>         self assert: (queries includes: #fireMenuAction)!
>>
>> ----- Method: ToolBuilderTests>>buttonWidgetEnabled (in category
>> 'support') -----
>> buttonWidgetEnabled
>>         "Answer whether the current widget (a button) is currently
>> enabled"
>>
>>         ^ widget getModelState!
>>
>> ----- Method: ToolBuilderTests>>changeListWidget (in category 'support')
>> -----
>> changeListWidget
>>         "Change the list widget's selection index"
>>         self subclassResponsibility!
>>
>> ----- Method: ToolBuilderTests>>expectedButtonSideEffects (in category
>> 'support') -----
>> expectedButtonSideEffects
>>         "side effect queries we expect to see on buttons"
>>         ^#()!
>>
>> ----- Method: ToolBuilderTests>>fireButton (in category 'tests-button')
>> -----
>> fireButton
>>         queries add: #fireButton.!
>>
>> ----- Method: ToolBuilderTests>>fireButtonWidget (in category 'support')
>> -----
>> fireButtonWidget
>>         "Fire the widget, e.g., perform what is needed for the guy to
>> trigger its action"
>>         self subclassResponsibility!
>>
>> ----- Method: ToolBuilderTests>>fireMenuAction (in category 'tests-menus')
>> -----
>> fireMenuAction
>>         queries add: #fireMenuAction!
>>
>> ----- Method: ToolBuilderTests>>fireMenuItemWidget (in category
>> 'tests-menus') -----
>> fireMenuItemWidget
>>         self subclassResponsibility!
>>
>> ----- Method: ToolBuilderTests>>getChildren (in category 'tests-panel')
>> -----
>> getChildren
>>         queries add: #getChildren.
>>         ^#()!
>>
>> ----- Method: ToolBuilderTests>>getChildrenOf: (in category 'tests-trees')
>> -----
>> getChildrenOf: item
>>         queries add: #getChildrenOf.
>>         ^(1 to: 9) asArray!
>>
>> ----- Method: ToolBuilderTests>>getColor (in category 'tests-text') -----
>> getColor
>>         queries add: #getColor.
>>         ^Color tan!
>>
>> ----- Method: ToolBuilderTests>>getEnabled (in category 'tests-button')
>> -----
>> getEnabled
>>         queries add: #getEnabled.
>>         ^true!
>>
>> ----- Method: ToolBuilderTests>>getHelpOf: (in category 'tests-trees')
>> -----
>> getHelpOf: item
>>         ^'help'!
>>
>> ----- Method: ToolBuilderTests>>getIconOf: (in category 'tests-trees')
>> -----
>> getIconOf: item
>>         queries add: #getIconOf.
>>         ^nil!
>>
>> ----- Method: ToolBuilderTests>>getLabel (in category 'tests-button')
>> -----
>> getLabel
>>         queries add: #getLabel.
>>         ^'TestLabel'!
>>
>> ----- Method: ToolBuilderTests>>getLabelOf: (in category 'tests-trees')
>> -----
>> getLabelOf: item
>>         queries add: #getLabelOf.
>>         ^item asString!
>>
>> ----- Method: ToolBuilderTests>>getList (in category 'tests-lists') -----
>> getList
>>         queries add: #getList.
>>         ^(1 to: 100) collect:[:i| i printString].!
>>
>> ----- Method: ToolBuilderTests>>getListIndex (in category 'tests-lists')
>> -----
>> getListIndex
>>         queries add: #getListIndex.
>>         ^13!
>>
>> ----- Method: ToolBuilderTests>>getListSelection (in category
>> 'tests-lists') -----
>> getListSelection
>>         queries add: #getListSelection.
>>         ^'55'!
>>
>> ----- Method: ToolBuilderTests>>getMenu: (in category 'tests-lists') -----
>> getMenu: aMenu
>>         queries add: #getMenu.
>>         ^aMenu!
>>
>> ----- Method: ToolBuilderTests>>getRoots (in category 'tests-trees') -----
>> getRoots
>>         queries add: #getRoots.
>>         ^(1 to: 9) asArray!
>>
>> ----- Method: ToolBuilderTests>>getState (in category 'tests-button')
>> -----
>> getState
>>         queries add: #getState.
>>         ^true!
>>
>> ----- Method: ToolBuilderTests>>getText (in category 'tests-text') -----
>> getText
>>         queries add: #getText.
>>         ^Text new!
>>
>> ----- Method: ToolBuilderTests>>getTextSelection (in category
>> 'tests-text') -----
>> getTextSelection
>>         queries add: #getTextSelection.
>>         ^(1 to: 0)!
>>
>> ----- Method: ToolBuilderTests>>getTreeSelectionPath (in category
>> 'tests-trees') -----
>> getTreeSelectionPath
>>         queries add: #getTreeSelectionPath.
>>         ^{2. 4. 3}!
>>
>> ----- Method: ToolBuilderTests>>hasChildren: (in category 'tests-trees')
>> -----
>> hasChildren: item
>>         queries add: #hasChildren.
>>         ^true!
>>
>> ----- Method: ToolBuilderTests>>keyPress: (in category 'tests-lists')
>> -----
>> keyPress: key
>>         queries add: #keyPress.!
>>
>> ----- Method: ToolBuilderTests>>makeButton (in category 'tests-button')
>> -----
>> makeButton
>>         | spec |
>>         spec := self makeButtonSpec.
>>         widget := builder build: spec.
>>         ^widget!
>>
>> ----- Method: ToolBuilderTests>>makeButtonSpec (in category
>> 'tests-button') -----
>> makeButtonSpec
>>         | spec |
>>         spec := builder pluggableButtonSpec new.
>>         spec name: #button.
>>         spec model: self.
>>         spec label: #getLabel.
>>         spec color: #getColor.
>>         spec state: #getState.
>>         spec enabled: #getEnabled.
>>         ^spec!
>>
>> ----- Method: ToolBuilderTests>>makeInputField (in category 'tests-input')
>> -----
>> makeInputField
>>         | spec |
>>         spec := self makeInputFieldSpec.
>>         widget := builder build: spec.!
>>
>> ----- Method: ToolBuilderTests>>makeInputFieldSpec (in category
>> 'tests-input') -----
>> makeInputFieldSpec
>>         | spec |
>>         spec := builder pluggableInputFieldSpec new.
>>         spec name: #input.
>>         spec model: self.
>>         spec getText: #getText.
>>         spec selection: #getTextSelection.
>>         spec color: #getColor.
>>         "<-- the following cannot be tested very well -->"
>>         spec setText: #setText:.
>>         spec menu: #getMenu:.
>>         ^spec!
>>
>> ----- Method: ToolBuilderTests>>makeItemList (in category 'tests-lists')
>> -----
>> makeItemList
>>         | spec |
>>         spec := self makeItemListSpec.
>>         widget := builder build: spec.!
>>
>> ----- Method: ToolBuilderTests>>makeItemListSpec (in category
>> 'tests-lists') -----
>> makeItemListSpec
>>         | spec |
>>         spec := builder pluggableListSpec new.
>>         spec name: #list.
>>         spec model: self.
>>         spec list: #getList.
>>         spec getSelected: #getListSelection.
>>         "<-- the following cannot be tested very well -->"
>>         spec setSelected: #setListSelection:.
>>         spec menu: #getMenu:.
>>         spec keyPress: #keyPress:.
>>         ^spec!
>>
>> ----- Method: ToolBuilderTests>>makeList (in category 'tests-lists') -----
>> makeList
>>         | spec |
>>         spec := self makeListSpec.
>>         widget := builder build: spec.!
>>
>> ----- Method: ToolBuilderTests>>makeListSpec (in category 'tests-lists')
>> -----
>> makeListSpec
>>         | spec |
>>         spec := builder pluggableListSpec new.
>>         spec name: #list.
>>         spec model: self.
>>         spec list: #getList.
>>         spec getIndex: #getListIndex.
>>         "<-- the following cannot be tested very well -->"
>>         spec setIndex: #setListIndex:.
>>         spec menu: #getMenu:.
>>         spec keyPress: #keyPress:.
>>         ^spec!
>>
>> ----- Method: ToolBuilderTests>>makePanel (in category 'tests-panel')
>> -----
>> makePanel
>>         | spec |
>>         spec := self makePanelSpec.
>>         widget := builder build: spec.!
>>
>> ----- Method: ToolBuilderTests>>makePanelSpec (in category 'tests-panel')
>> -----
>> makePanelSpec
>>         | spec |
>>         spec := builder pluggablePanelSpec new.
>>         spec name: #panel.
>>         spec model: self.
>>         spec children: #getChildren.
>>         ^spec!
>>
>> ----- Method: ToolBuilderTests>>makeText (in category 'tests-text') -----
>> makeText
>>         | spec |
>>         spec := self makeTextSpec.
>>         widget := builder build: spec.!
>>
>> ----- Method: ToolBuilderTests>>makeTextSpec (in category 'tests-text')
>> -----
>> makeTextSpec
>>         | spec |
>>         spec := builder pluggableTextSpec new.
>>         spec name: #text.
>>         spec model: self.
>>         spec getText: #getText.
>>         spec selection: #getTextSelection.
>>         spec color: #getColor.
>>         "<-- the following cannot be tested very well -->"
>>         spec setText: #setText:.
>>         spec menu: #getMenu:.
>>         ^spec!
>>
>> ----- Method: ToolBuilderTests>>makeTree (in category 'tests-trees') -----
>> makeTree
>>         | spec |
>>         spec := self makeTreeSpec.
>>         widget := builder build: spec.!
>>
>> ----- Method: ToolBuilderTests>>makeTreeSpec (in category 'tests-trees')
>> -----
>> makeTreeSpec
>>         | spec |
>>         spec := builder pluggableTreeSpec new.
>>         spec name: #tree.
>>         spec model: self.
>>         spec roots: #getRoots.
>>         "<-- the following cannot be tested very well -->"
>>         spec getSelectedPath: #getTreeSelectionPath.
>>         spec getChildren: #getChildrenOf:.
>>         spec hasChildren: #hasChildren:.
>>         spec label: #getLabelOf:.
>>         spec icon: #getIconOf:.
>>         spec help: #getHelpOf:.
>>         spec setSelected: #setTreeSelection:.
>>         spec menu: #getMenu:.
>>         spec keyPress: #keyPress:.
>>         ^spec!
>>
>> ----- Method: ToolBuilderTests>>makeWindow (in category 'tests-window')
>> -----
>> makeWindow
>>         | spec |
>>         spec := self makeWindowSpec.
>>         widget := builder build: spec.!
>>
>> ----- Method: ToolBuilderTests>>makeWindowSpec (in category
>> 'tests-window') -----
>> makeWindowSpec
>>         | spec |
>>         spec := builder pluggableWindowSpec new.
>>         spec name: #window.
>>         spec model: self.
>>         spec children: #getChildren.
>>         spec label: #getLabel.
>>         spec closeAction: #noteWindowClosed.
>>         ^spec!
>>
>> ----- Method: ToolBuilderTests>>noteWindowClosed (in category
>> 'tests-window') -----
>> noteWindowClosed
>>         queries add: #noteWindowClosed.!
>>
>> ----- Method: ToolBuilderTests>>openWindow (in category 'tests-window')
>> -----
>> openWindow
>>         | spec |
>>         spec := self makeWindowSpec.
>>         widget := builder open: spec.!
>>
>> ----- Method: ToolBuilderTests>>returnFalse (in category 'support') -----
>> returnFalse
>>         ^false!
>>
>> ----- Method: ToolBuilderTests>>returnTrue (in category 'support') -----
>> returnTrue
>>         ^true!
>>
>> ----- Method: ToolBuilderTests>>setListIndex: (in category 'tests-lists')
>> -----
>> setListIndex: index
>>         queries add: #setListIndex.!
>>
>> ----- Method: ToolBuilderTests>>setListSelection: (in category
>> 'tests-lists') -----
>> setListSelection: newIndex
>>         queries add: #setListSelection.!
>>
>> ----- Method: ToolBuilderTests>>setText: (in category 'tests-text') -----
>> setText: newText
>>         queries add: #setText.
>>         ^false!
>>
>> ----- Method: ToolBuilderTests>>setTreeSelection: (in category
>> 'tests-trees') -----
>> setTreeSelection: node
>>         queries add: #setTreeSelection.!
>>
>> ----- Method: ToolBuilderTests>>setUp (in category 'support') -----
>> setUp
>>         queries := IdentitySet new.!
>>
>> ----- Method: ToolBuilderTests>>shutDown (in category 'support') -----
>> shutDown
>>         self myDependents: nil!
>>
>> ----- Method: ToolBuilderTests>>testAddTargetSelectorArgumentList (in
>> category 'tests-menus') -----
>> testAddTargetSelectorArgumentList
>>         self assertItemFiresWith:
>>                 [:spec | spec
>>                                 add: 'Menu Item'
>>                                 target: self
>>                                 selector: #fireMenuAction
>>                                 argumentList: #()]!
>>
>> ----- Method: ToolBuilderTests>>testButtonFiresBlock (in category
>> 'tests-button') -----
>> testButtonFiresBlock
>>         | spec |
>>         spec := builder pluggableButtonSpec new.
>>         spec model: self.
>>         spec action: [self fireButton].
>>         widget := builder build: spec.
>>         queries := IdentitySet new.
>>         self fireButtonWidget.
>>         self assert: (queries includes: #fireButton).!
>>
>> ----- Method: ToolBuilderTests>>testButtonFiresMessage (in category
>> 'tests-button') -----
>> testButtonFiresMessage
>>         | spec |
>>         spec := builder pluggableButtonSpec new.
>>         spec model: self.
>>         spec action: (MessageSend receiver: self selector: #fireButton
>> arguments: #()).
>>         widget := builder build: spec.
>>         queries := IdentitySet new.
>>         self fireButtonWidget.
>>         self assert: (queries includes: #fireButton).!
>>
>> ----- Method: ToolBuilderTests>>testButtonFiresSymbol (in category
>> 'tests-button') -----
>> testButtonFiresSymbol
>>         | spec |
>>         spec := builder pluggableButtonSpec new.
>>         spec model: self.
>>         spec action: #fireButton.
>>         widget := builder build: spec.
>>         queries := IdentitySet new.
>>         self fireButtonWidget.
>>         self assert: (queries includes: #fireButton).!
>>
>> ----- Method: ToolBuilderTests>>testButtonInitiallyDisabled (in category
>> 'tests-button') -----
>> testButtonInitiallyDisabled
>>         | spec |
>>         spec := builder pluggableButtonSpec new.
>>         spec model: self.
>>         spec label: #getLabel.
>>         spec color: #getColor.
>>         spec state: #getState.
>>         spec enabled: #returnFalse.
>>         widget := builder build: spec.
>>         self deny: (self buttonWidgetEnabled)!
>>
>> ----- Method: ToolBuilderTests>>testButtonInitiallyDisabledSelector (in
>> category 'tests-button') -----
>> testButtonInitiallyDisabledSelector
>>         | spec |
>>         spec := builder pluggableButtonSpec new.
>>         spec model: self.
>>         spec label: #getLabel.
>>         spec color: #getColor.
>>         spec state: #getState.
>>         spec enabled: #returnFalse.
>>         widget := builder build: spec.
>>         self deny: (self buttonWidgetEnabled)!
>>
>> ----- Method: ToolBuilderTests>>testButtonInitiallyEnabled (in category
>> 'tests-button') -----
>> testButtonInitiallyEnabled
>>         | spec |
>>         spec := builder pluggableButtonSpec new.
>>         spec model: self.
>>         spec label: #getLabel.
>>         spec color: #getColor.
>>         spec state: #getState.
>>         spec enabled: #returnTrue.
>>         widget := builder build: spec.
>>         self assert: (self buttonWidgetEnabled)!
>>
>> ----- Method: ToolBuilderTests>>testButtonInitiallyEnabledSelector (in
>> category 'tests-button') -----
>> testButtonInitiallyEnabledSelector
>>         | spec |
>>         spec := builder pluggableButtonSpec new.
>>         spec model: self.
>>         spec label: #getLabel.
>>         spec color: #getColor.
>>         spec state: #getState.
>>         spec enabled: #returnTrue.
>>         widget := builder build: spec.
>>         self assert: (self buttonWidgetEnabled)!
>>
>> ----- Method: ToolBuilderTests>>testButtonWidgetID (in category
>> 'tests-button') -----
>> testButtonWidgetID
>>         self makeButton.
>>         self assert: (builder widgetAt: #button) == widget.!
>>
>> ----- Method: ToolBuilderTests>>testGetButtonColor (in category
>> 'tests-button') -----
>> testGetButtonColor
>>         self makeButton.
>>         queries := IdentitySet new.
>>         self changed: #getColor.
>>         self assert: (queries includes: #getColor).
>>         self assert: self widgetColor = self getColor.!
>>
>> ----- Method: ToolBuilderTests>>testGetButtonEnabled (in category
>> 'tests-button') -----
>> testGetButtonEnabled
>>         self makeButton.
>>         queries := IdentitySet new.
>>         self changed: #getEnabled.
>>         self assert: (queries includes: #getEnabled).!
>>
>> ----- Method: ToolBuilderTests>>testGetButtonLabel (in category
>> 'tests-button') -----
>> testGetButtonLabel
>>         self makeButton.
>>         queries := IdentitySet new.
>>         self changed: #getLabel.
>>         self assert: (queries includes: #getLabel).!
>>
>> ----- Method: ToolBuilderTests>>testGetButtonSideEffects (in category
>> 'tests-button') -----
>> testGetButtonSideEffects
>>         self makeButton.
>>         queries := IdentitySet new.
>>         self changed: #testSignalWithNoDiscernableEffect.
>>         self expectedButtonSideEffects do:[:sym|
>>                 self assert: (queries includes: sym).
>>                 queries remove: sym.
>>         ].
>>         self assert: queries isEmpty.!
>>
>> ----- Method: ToolBuilderTests>>testGetButtonState (in category
>> 'tests-button') -----
>> testGetButtonState
>>         self makeButton.
>>         queries := IdentitySet new.
>>         self changed: #getState.
>>         self assert: (queries includes: #getState).!
>>
>> ----- Method: ToolBuilderTests>>testGetInputFieldColor (in category
>> 'tests-input') -----
>> testGetInputFieldColor
>>         self makeInputField.
>>         queries := IdentitySet new.
>>         self changed: #getColor.
>>         self assert: (queries includes: #getColor).
>>         self assert: self widgetColor = self getColor.!
>>
>> ----- Method: ToolBuilderTests>>testGetInputFieldSelection (in category
>> 'tests-input') -----
>> testGetInputFieldSelection
>>         self makeInputField.
>>         queries := IdentitySet new.
>>         self changed: #getTextSelection.
>>         self assert: (queries includes: #getTextSelection).!
>>
>> ----- Method: ToolBuilderTests>>testGetInputFieldSideEffectFree (in
>> category 'tests-input') -----
>> testGetInputFieldSideEffectFree
>>         self makeInputField.
>>         queries := IdentitySet new.
>>         self changed: #testSignalWithNoDiscernableEffect.
>>         self assert: queries isEmpty.!
>>
>> ----- Method: ToolBuilderTests>>testGetInputFieldText (in category
>> 'tests-input') -----
>> testGetInputFieldText
>>         self makeInputField.
>>         queries := IdentitySet new.
>>         self changed: #getText.
>>         self assert: (queries includes: #getText).!
>>
>> ----- Method: ToolBuilderTests>>testGetItemListSideEffectFree (in category
>> 'tests-lists') -----
>> testGetItemListSideEffectFree
>>         self makeItemList.
>>         queries := IdentitySet new.
>>         self changed: #testSignalWithNoDiscernableEffect.
>>         self assert: queries isEmpty.!
>>
>> ----- Method: ToolBuilderTests>>testGetList (in category 'tests-lists')
>> -----
>> testGetList
>>         self makeList.
>>         queries := IdentitySet new.
>>         self changed: #getList.
>>         self assert: (queries includes: #getList).!
>>
>> ----- Method: ToolBuilderTests>>testGetListIndex (in category
>> 'tests-lists') -----
>> testGetListIndex
>>         self makeList.
>>         queries := IdentitySet new.
>>         self changed: #getListIndex.
>>         self assert: (queries includes: #getListIndex).!
>>
>> ----- Method: ToolBuilderTests>>testGetListSelection (in category
>> 'tests-lists') -----
>> testGetListSelection
>>         self makeItemList.
>>         queries := IdentitySet new.
>>         self changed: #getListSelection.
>>         self assert: (queries includes: #getListSelection).!
>>
>> ----- Method: ToolBuilderTests>>testGetListSideEffectFree (in category
>> 'tests-lists') -----
>> testGetListSideEffectFree
>>         self makeList.
>>         queries := IdentitySet new.
>>         self changed: #testSignalWithNoDiscernableEffect.
>>         self assert: queries isEmpty.!
>>
>> ----- Method: ToolBuilderTests>>testGetPanelChildren (in category
>> 'tests-panel') -----
>> testGetPanelChildren
>>         self makePanel.
>>         queries := IdentitySet new.
>>         self changed: #getChildren.
>>         self assert: (queries includes: #getChildren).!
>>
>> ----- Method: ToolBuilderTests>>testGetPanelSideEffectFree (in category
>> 'tests-panel') -----
>> testGetPanelSideEffectFree
>>         self makePanel.
>>         queries := IdentitySet new.
>>         self changed: #testSignalWithNoDiscernableEffect.
>>         self assert: queries isEmpty.!
>>
>> ----- Method: ToolBuilderTests>>testGetText (in category 'tests-text')
>> -----
>> testGetText
>>         self makeText.
>>         queries := IdentitySet new.
>>         self changed: #getText.
>>         self assert: (queries includes: #getText).!
>>
>> ----- Method: ToolBuilderTests>>testGetTextColor (in category
>> 'tests-text') -----
>> testGetTextColor
>>         self makeText.
>>         queries := IdentitySet new.
>>         self changed: #getColor.
>>         self assert: (queries includes: #getColor).
>>         self assert: self widgetColor = self getColor.!
>>
>> ----- Method: ToolBuilderTests>>testGetTextSelection (in category
>> 'tests-text') -----
>> testGetTextSelection
>>         self makeText.
>>         queries := IdentitySet new.
>>         self changed: #getTextSelection.
>>         self assert: (queries includes: #getTextSelection).!
>>
>> ----- Method: ToolBuilderTests>>testGetTextSideEffectFree (in category
>> 'tests-text') -----
>> testGetTextSideEffectFree
>>         self makeText.
>>         queries := IdentitySet new.
>>         self changed: #testSignalWithNoDiscernableEffect.
>>         self assert: queries isEmpty.!
>>
>> ----- Method: ToolBuilderTests>>testGetWindowChildren (in category
>> 'tests-window') -----
>> testGetWindowChildren
>>         self makeWindow.
>>         queries := IdentitySet new.
>>         self changed: #getChildren.
>>         self assert: (queries includes: #getChildren).!
>>
>> ----- Method: ToolBuilderTests>>testGetWindowLabel (in category
>> 'tests-window') -----
>> testGetWindowLabel
>>         self makeWindow.
>>         queries := IdentitySet new.
>>         self changed: #getLabel.
>>         self assert: (queries includes: #getLabel).!
>>
>> ----- Method: ToolBuilderTests>>testGetWindowSideEffectFree (in category
>> 'tests-window') -----
>> testGetWindowSideEffectFree
>>         self makeWindow.
>>         queries := IdentitySet new.
>>         self changed: #testSignalWithNoDiscernableEffect.
>>         self assert: queries isEmpty.!
>>
>> ----- Method: ToolBuilderTests>>testInputWidgetID (in category
>> 'tests-input') -----
>> testInputWidgetID
>>         self makeInputField.
>>         self assert: (builder widgetAt: #input) == widget.!
>>
>> ----- Method: ToolBuilderTests>>testItemListWidgetID (in category
>> 'tests-lists') -----
>> testItemListWidgetID
>>         self makeItemList.
>>         self assert: (builder widgetAt: #list) == widget.!
>>
>> ----- Method: ToolBuilderTests>>testListWidgetID (in category
>> 'tests-lists') -----
>> testListWidgetID
>>         self makeList.
>>         self assert: (builder widgetAt: #list) == widget.!
>>
>> ----- Method: ToolBuilderTests>>testPanelWidgetID (in category
>> 'tests-panel') -----
>> testPanelWidgetID
>>         self makePanel.
>>         self assert: (builder widgetAt: #panel) == widget.!
>>
>> ----- Method: ToolBuilderTests>>testSetInputField (in category
>> 'tests-input') -----
>> testSetInputField
>>         self makeInputField.
>>         queries := IdentitySet new.
>>         self acceptWidgetText.
>>         self assert: (queries includes: #setText).!
>>
>> ----- Method: ToolBuilderTests>>testSetListIndex (in category
>> 'tests-lists') -----
>> testSetListIndex
>>         self makeList.
>>         queries := IdentitySet new.
>>         self changeListWidget.
>>         self assert: (queries includes: #setListIndex).!
>>
>> ----- Method: ToolBuilderTests>>testSetListSelection (in category
>> 'tests-lists') -----
>> testSetListSelection
>>         self makeItemList.
>>         queries := IdentitySet new.
>>         self changeListWidget.
>>         self assert: (queries includes: #setListSelection).!
>>
>> ----- Method: ToolBuilderTests>>testSetText (in category 'tests-text')
>> -----
>> testSetText
>>         self makeText.
>>         queries := IdentitySet new.
>>         self acceptWidgetText.
>>         self assert: (queries includes: #setText).!
>>
>> ----- Method: ToolBuilderTests>>testTextWidgetID (in category
>> 'tests-text') -----
>> testTextWidgetID
>>         self makeText.
>>         self assert: (builder widgetAt: #text) == widget!
>>
>> ----- Method: ToolBuilderTests>>testTreeExpandPath (in category
>> 'tests-trees') -----
>> testTreeExpandPath
>>         "@@@@: REMOVE THIS - it's a hack (changed: #openPath)"
>>         self makeTree.
>>         queries := IdentitySet new.
>>         self changed: {#openPath. '4'. '2'. '3'}.
>>         self waitTick.
>>         self assert: (queries includes: #getChildrenOf).
>>         self assert: (queries includes: #setTreeSelection).
>>         self assert: (queries includes: #getLabelOf).
>> !
>>
>> ----- Method: ToolBuilderTests>>testTreeExpandPathFirst (in category
>> 'tests-trees') -----
>> testTreeExpandPathFirst
>>         "@@@@: REMOVE THIS - it's a hack (changed: #openPath)"
>>         self makeTree.
>>         queries := IdentitySet new.
>>         self changed: {#openPath. '1'. '2'. '2'}.
>>         self waitTick.
>>         self assert: (queries includes: #getChildrenOf).
>>         self assert: (queries includes: #setTreeSelection).
>>         self assert: (queries includes: #getLabelOf).
>> !
>>
>> ----- Method: ToolBuilderTests>>testTreeGetSelectionPath (in category
>> 'tests-trees') -----
>> testTreeGetSelectionPath
>>         self makeTree.
>>         queries := IdentitySet new.
>>         self changed: #getTreeSelectionPath.
>>         self waitTick.
>>         self assert: (queries includes: #getTreeSelectionPath).
>>         self assert: (queries includes: #getChildrenOf).
>>         self assert: (queries includes: #setTreeSelection).
>> !
>>
>> ----- Method: ToolBuilderTests>>testTreeRoots (in category 'tests-trees')
>> -----
>> testTreeRoots
>>         self makeTree.
>>         queries := IdentitySet new.
>>         self changed: #getRoots.
>>         self assert: (queries includes: #getRoots).!
>>
>> ----- Method: ToolBuilderTests>>testTreeWidgetID (in category
>> 'tests-trees') -----
>> testTreeWidgetID
>>         self makeTree.
>>         self assert: (builder widgetAt: #tree) == widget.!
>>
>> ----- Method: ToolBuilderTests>>testWindowCloseAction (in category
>> 'tests-window') -----
>> testWindowCloseAction
>>         self openWindow.
>>         builder close: widget.
>>         self assert: (queries includes: #noteWindowClosed).!
>>
>> ----- Method: ToolBuilderTests>>testWindowID (in category 'tests-window')
>> -----
>> testWindowID
>>         self makeWindow.
>>         self assert: (builder widgetAt: #window) == widget.!
>>
>> ----- Method: ToolBuilderTests>>waitTick (in category 'support') -----
>> waitTick
>>         ^nil!
>>
>> ----- Method: ToolBuilderTests>>widgetColor (in category 'support') -----
>> widgetColor
>>         "Answer color from widget"
>>         self subclassResponsibility
>>
>>         "NOTE: You can bail out if you don't know how to get the color
>> from the widget:
>>                 ^self getColor
>>         will work."!
>>
>>
>
>
>
>




Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: ToolBuilder-Tests-cmm.1.mcz

David T. Lewis
On Sun, Dec 15, 2013 at 05:17:16PM -0600, Chris Muller wrote:
>
> The logic of SqueakSource, which sometimes involves diffing versions _on
> the server_ has not been tested with this situation.  And, we already know
> its delicate because a few weeks ago we found slow SS trying to diff a
> package with no ancestry and caught in an endless loop with growing memory.
>

If you recall the time when the old squeaksource.com was endlessly spamming
us with months-old repeat commit notices - the cause was related to this.
The image had gotten into a state where it could not update its repository
from disk. This was a case where someone had registered their author initials
in plain ascii, saved MCZs in some multicharacter version of the same, and
stored MCZs that had some different multicharacter version stored internally
in the MCZ. SqueakSource was getting confused about the difference between
the author as represented internally in the zip, versus the author as
represented in the MCZ file name, and probably would have been further
confused in trying to related either of these to the author as registered
by author initials. I worked around it manually and have not attempted to fix
the root cause.

If you want to reproduce the problem, the user account that illustrates
the issue is MaSa on squeaksource.com. There are a number of files in
the repository with conflicting file names and internal (within the zip)
identities for this user, and if you load those files from disk into the
in-image repository, SqueakSource gets confused.

Yes I know I should turn this into a unit test.

Dave



Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: ToolBuilder-Tests-cmm.1.mcz

Frank Shearar-3
In reply to this post by Chris Muller-3
On 15 December 2013 23:17, Chris Muller <[hidden email]> wrote:

> MC uses Version UUID's correctly to unambiguously identify its ancestry.
> Alas, the limitation of FileBased repository's cannot possibly support this
> ancestry model:
>
> ================
> Name: ToolBuilder-Tests-fbs.1
> Author: fbs
> Time: 15 December 2013, 9:56:20.616 am
> UUID: 8772d620-cf6d-a540-9cf4-c7925daf8c6a
> Ancestors: ToolBuilder-Tests-fbs.1
> =================

If you actually pointed this out I would have known what the hell you
were talking about.

It's actually not a cyclic ancestry, even though it looks a lot like
one: It points to 'Toolbuilder-Tests-fbs.1' which I removed from
Trunk's repository. I have a possible explanation for how this monster
came to be, below.

> The logic of SqueakSource, which sometimes involves diffing versions _on the
> server_ has not been tested with this situation.  And, we already know its
> delicate because a few weeks ago we found slow SS trying to diff a package
> with no ancestry and caught in an endless loop with growing memory.
>
> This is a new and unique and unnecessary scenario that invites another
> endless loop situation in the server.  That's why I jumped up and down.

Right. I understand now why you jumped up and down. I thought you were
jumping up and down because I made a change that you suggested (and
rightly so), replacing "Toolbuilder-Tests" with "ToolBuilder-Tests".

My memory's rubbish at the best of times, so I'm not sure this is what
actually happened, but here's a possible way I could have constructed
such a monstrosity:

* Not remove Toolbuilder-Tests-fbs.1 from my package-cache (naively
thinking it was unimportant)
* Take a pre-update-fbs-270 image, before the ToolBuilder-Tests split
* Split out the tests
* Save the package as ToolBuilder-Tests
* MC sees Toolbuilder-Tests-fbs.1 in the package-cache, and thinks
it's an ancestor
* I change the suggested package name from "ToolBuilder-Tests-fbs.2"
to "ToolBuilder-Tests-fbs.1"
* I save

If this is a sane possible explanation, why did MC think that
"Toolbuilder-Tests-fbs.1" could be a possible ancestor of a package
named "ToolBuilder-Tests" ?

frank

> On Sun, Dec 15, 2013 at 4:45 PM, Frank Shearar <[hidden email]>
> wrote:
>>
>> What are you talking about? I issued a new package, with a new name.
>> "ToolBuilder-Kernel" is not "Toolbuilder-Kernel". Seriously, I don't
>> appreciate this tone, Chris.
>>
>> Yes, I screwed up. But I don't need you jumping up and down.
>>
>> If you knew that a case sensitive difference in the package name was
>> inadequate, maybe you should have warned me. That would have been
>> useful. MC versions have UUIDs. If they do not use these versions to
>> determine their ancestry, the model is _broken_.
>>
>> frank
>>
>> On 15 December 2013 22:33, Chris Muller <[hidden email]> wrote:
>> > Now I'm starting to cuss!  I don't know why you didn't just start over
>> > again
>> > but I cannot tolerate a corrupt MC model from the get-go for this new
>> > package.
>> >
>> > MC cannot support two versions with the same exact name, _especially_ in
>> > the
>> > same ancestry!
>> >
>> > I didn't want to hassle you yet again so I went ahead and re-did it --
>> > made
>> > ToolBuilder-Tests-cmm.1 and updated update-fbs.272 to point to that one.
>> > Deleted your fbs.1 from the repository.
>> >
>> >  - Chris
>> >
>> >
>> >
>> > On Sun, Dec 15, 2013 at 4:25 PM, <[hidden email]> wrote:
>> >>
>> >> Chris Muller uploaded a new version of ToolBuilder-Tests to project The
>> >> Trunk:
>> >> http://source.squeak.org/trunk/ToolBuilder-Tests-cmm.1.mcz
>> >>
>> >> ==================== Summary ====================
>> >>
>> >> Name: ToolBuilder-Tests-cmm.1
>> >> Author: cmm
>> >> Time: 15 December 2013, 4:25:47.507 pm
>> >> UUID: e77685b9-ca09-40c0-b84e-6caee75f4075
>> >> Ancestors:
>> >>
>> >> ToolBuilder-Tests contains the specification that a compliant
>> >> ToolBuilder
>> >> must fulfill, together with the unit tests for ToolBuilder-Kernel.
>> >>
>> >> ==================== Snapshot ====================
>> >>
>> >> SystemOrganization addCategory: #'ToolBuilder-Tests'!
>> >>
>> >> TestCase subclass: #PluggableMenuItemSpecTests
>> >>         instanceVariableNames: ''
>> >>         classVariableNames: ''
>> >>         poolDictionaries: ''
>> >>         category: 'ToolBuilder-Tests'!
>> >>
>> >> ----- Method:
>> >> PluggableMenuItemSpecTests>>testBeCheckableMakesItemCheckable (in
>> >> category
>> >> 'as yet unclassified') -----
>> >> testBeCheckableMakesItemCheckable
>> >>         | itemSpec |
>> >>         itemSpec := PluggableMenuItemSpec new.
>> >>         itemSpec beCheckable.
>> >>         self assert: itemSpec isCheckable description: 'Item not
>> >> checkable'.!
>> >>
>> >> ----- Method: PluggableMenuItemSpecTests>>testByDefaultNotCheckable (in
>> >> category 'as yet unclassified') -----
>> >> testByDefaultNotCheckable
>> >>         | itemSpec |
>> >>         itemSpec := PluggableMenuItemSpec new.
>> >>         self deny: itemSpec isCheckable.!
>> >>
>> >> ----- Method: PluggableMenuItemSpecTests>>testNoMarkerMakesItemChecked
>> >> (in
>> >> category 'as yet unclassified') -----
>> >> testNoMarkerMakesItemChecked
>> >>         | itemSpec |
>> >>         itemSpec := PluggableMenuItemSpec new.
>> >>         itemSpec label: '<no>no'.
>> >>         itemSpec analyzeLabel.
>> >>         self assert: itemSpec isCheckable description: 'item not
>> >> checkable'.
>> >>         self deny: itemSpec checked description: 'item checked'.!
>> >>
>> >> ----- Method: PluggableMenuItemSpecTests>>testOffMarkerMakesItemChecked
>> >> (in category 'as yet unclassified') -----
>> >> testOffMarkerMakesItemChecked
>> >>         | itemSpec |
>> >>         itemSpec := PluggableMenuItemSpec new.
>> >>         itemSpec label: '<off>off'.
>> >>         itemSpec analyzeLabel.
>> >>         self assert: itemSpec isCheckable description: 'item not
>> >> checkable'.
>> >>         self deny: itemSpec checked description: 'item checked'.!
>> >>
>> >> ----- Method: PluggableMenuItemSpecTests>>testOnMarkerMakesItemChecked
>> >> (in
>> >> category 'as yet unclassified') -----
>> >> testOnMarkerMakesItemChecked
>> >>         | itemSpec |
>> >>         itemSpec := PluggableMenuItemSpec new.
>> >>         itemSpec label: '<on>on'.
>> >>         itemSpec analyzeLabel.
>> >>         self assert: itemSpec isCheckable description: 'item not
>> >> checkable'.
>> >>         self assert: itemSpec isCheckable description: 'item not
>> >> checked'.!
>> >>
>> >> ----- Method: PluggableMenuItemSpecTests>>testYesMarkerMakesItemChecked
>> >> (in category 'as yet unclassified') -----
>> >> testYesMarkerMakesItemChecked
>> >>         | itemSpec |
>> >>         itemSpec := PluggableMenuItemSpec new.
>> >>         itemSpec label: '<yes>on'.
>> >>         itemSpec analyzeLabel.
>> >>         self assert: itemSpec isCheckable description: 'item not
>> >> checkable'.
>> >>         self assert: itemSpec isCheckable description: 'item not
>> >> checked'.!
>> >>
>> >> TestCase subclass: #ToolBuilderTests
>> >>         instanceVariableNames: 'builder widget queries'
>> >>         classVariableNames: ''
>> >>         poolDictionaries: ''
>> >>         category: 'ToolBuilder-Tests'!
>> >>
>> >> !ToolBuilderTests commentStamp: 'ar 2/11/2005 15:01' prior: 0!
>> >> Some tests to make sure ToolBuilder does what it says.!
>> >>
>> >> ----- Method: ToolBuilderTests class>>isAbstract (in category
>> >> 'testing')
>> >> -----
>> >> isAbstract
>> >>         ^self == ToolBuilderTests!
>> >>
>> >> ----- Method: ToolBuilderTests>>acceptWidgetText (in category
>> >> 'support')
>> >> -----
>> >> acceptWidgetText
>> >>         "accept text in widget"
>> >>         ^ self subclassResponsibility!
>> >>
>> >> ----- Method: ToolBuilderTests>>assertItemFiresWith: (in category
>> >> 'tests-menus') -----
>> >> assertItemFiresWith: aBlock
>> >>         | spec |
>> >>         spec := builder pluggableMenuSpec new.
>> >>         spec model: self.
>> >>         aBlock value: spec.
>> >>         widget := builder build: spec.
>> >>         queries := IdentitySet new.
>> >>         self fireMenuItemWidget.
>> >>         self assert: (queries includes: #fireMenuAction)!
>> >>
>> >> ----- Method: ToolBuilderTests>>buttonWidgetEnabled (in category
>> >> 'support') -----
>> >> buttonWidgetEnabled
>> >>         "Answer whether the current widget (a button) is currently
>> >> enabled"
>> >>
>> >>         ^ widget getModelState!
>> >>
>> >> ----- Method: ToolBuilderTests>>changeListWidget (in category
>> >> 'support')
>> >> -----
>> >> changeListWidget
>> >>         "Change the list widget's selection index"
>> >>         self subclassResponsibility!
>> >>
>> >> ----- Method: ToolBuilderTests>>expectedButtonSideEffects (in category
>> >> 'support') -----
>> >> expectedButtonSideEffects
>> >>         "side effect queries we expect to see on buttons"
>> >>         ^#()!
>> >>
>> >> ----- Method: ToolBuilderTests>>fireButton (in category 'tests-button')
>> >> -----
>> >> fireButton
>> >>         queries add: #fireButton.!
>> >>
>> >> ----- Method: ToolBuilderTests>>fireButtonWidget (in category
>> >> 'support')
>> >> -----
>> >> fireButtonWidget
>> >>         "Fire the widget, e.g., perform what is needed for the guy to
>> >> trigger its action"
>> >>         self subclassResponsibility!
>> >>
>> >> ----- Method: ToolBuilderTests>>fireMenuAction (in category
>> >> 'tests-menus')
>> >> -----
>> >> fireMenuAction
>> >>         queries add: #fireMenuAction!
>> >>
>> >> ----- Method: ToolBuilderTests>>fireMenuItemWidget (in category
>> >> 'tests-menus') -----
>> >> fireMenuItemWidget
>> >>         self subclassResponsibility!
>> >>
>> >> ----- Method: ToolBuilderTests>>getChildren (in category 'tests-panel')
>> >> -----
>> >> getChildren
>> >>         queries add: #getChildren.
>> >>         ^#()!
>> >>
>> >> ----- Method: ToolBuilderTests>>getChildrenOf: (in category
>> >> 'tests-trees')
>> >> -----
>> >> getChildrenOf: item
>> >>         queries add: #getChildrenOf.
>> >>         ^(1 to: 9) asArray!
>> >>
>> >> ----- Method: ToolBuilderTests>>getColor (in category 'tests-text')
>> >> -----
>> >> getColor
>> >>         queries add: #getColor.
>> >>         ^Color tan!
>> >>
>> >> ----- Method: ToolBuilderTests>>getEnabled (in category 'tests-button')
>> >> -----
>> >> getEnabled
>> >>         queries add: #getEnabled.
>> >>         ^true!
>> >>
>> >> ----- Method: ToolBuilderTests>>getHelpOf: (in category 'tests-trees')
>> >> -----
>> >> getHelpOf: item
>> >>         ^'help'!
>> >>
>> >> ----- Method: ToolBuilderTests>>getIconOf: (in category 'tests-trees')
>> >> -----
>> >> getIconOf: item
>> >>         queries add: #getIconOf.
>> >>         ^nil!
>> >>
>> >> ----- Method: ToolBuilderTests>>getLabel (in category 'tests-button')
>> >> -----
>> >> getLabel
>> >>         queries add: #getLabel.
>> >>         ^'TestLabel'!
>> >>
>> >> ----- Method: ToolBuilderTests>>getLabelOf: (in category 'tests-trees')
>> >> -----
>> >> getLabelOf: item
>> >>         queries add: #getLabelOf.
>> >>         ^item asString!
>> >>
>> >> ----- Method: ToolBuilderTests>>getList (in category 'tests-lists')
>> >> -----
>> >> getList
>> >>         queries add: #getList.
>> >>         ^(1 to: 100) collect:[:i| i printString].!
>> >>
>> >> ----- Method: ToolBuilderTests>>getListIndex (in category
>> >> 'tests-lists')
>> >> -----
>> >> getListIndex
>> >>         queries add: #getListIndex.
>> >>         ^13!
>> >>
>> >> ----- Method: ToolBuilderTests>>getListSelection (in category
>> >> 'tests-lists') -----
>> >> getListSelection
>> >>         queries add: #getListSelection.
>> >>         ^'55'!
>> >>
>> >> ----- Method: ToolBuilderTests>>getMenu: (in category 'tests-lists')
>> >> -----
>> >> getMenu: aMenu
>> >>         queries add: #getMenu.
>> >>         ^aMenu!
>> >>
>> >> ----- Method: ToolBuilderTests>>getRoots (in category 'tests-trees')
>> >> -----
>> >> getRoots
>> >>         queries add: #getRoots.
>> >>         ^(1 to: 9) asArray!
>> >>
>> >> ----- Method: ToolBuilderTests>>getState (in category 'tests-button')
>> >> -----
>> >> getState
>> >>         queries add: #getState.
>> >>         ^true!
>> >>
>> >> ----- Method: ToolBuilderTests>>getText (in category 'tests-text')
>> >> -----
>> >> getText
>> >>         queries add: #getText.
>> >>         ^Text new!
>> >>
>> >> ----- Method: ToolBuilderTests>>getTextSelection (in category
>> >> 'tests-text') -----
>> >> getTextSelection
>> >>         queries add: #getTextSelection.
>> >>         ^(1 to: 0)!
>> >>
>> >> ----- Method: ToolBuilderTests>>getTreeSelectionPath (in category
>> >> 'tests-trees') -----
>> >> getTreeSelectionPath
>> >>         queries add: #getTreeSelectionPath.
>> >>         ^{2. 4. 3}!
>> >>
>> >> ----- Method: ToolBuilderTests>>hasChildren: (in category
>> >> 'tests-trees')
>> >> -----
>> >> hasChildren: item
>> >>         queries add: #hasChildren.
>> >>         ^true!
>> >>
>> >> ----- Method: ToolBuilderTests>>keyPress: (in category 'tests-lists')
>> >> -----
>> >> keyPress: key
>> >>         queries add: #keyPress.!
>> >>
>> >> ----- Method: ToolBuilderTests>>makeButton (in category 'tests-button')
>> >> -----
>> >> makeButton
>> >>         | spec |
>> >>         spec := self makeButtonSpec.
>> >>         widget := builder build: spec.
>> >>         ^widget!
>> >>
>> >> ----- Method: ToolBuilderTests>>makeButtonSpec (in category
>> >> 'tests-button') -----
>> >> makeButtonSpec
>> >>         | spec |
>> >>         spec := builder pluggableButtonSpec new.
>> >>         spec name: #button.
>> >>         spec model: self.
>> >>         spec label: #getLabel.
>> >>         spec color: #getColor.
>> >>         spec state: #getState.
>> >>         spec enabled: #getEnabled.
>> >>         ^spec!
>> >>
>> >> ----- Method: ToolBuilderTests>>makeInputField (in category
>> >> 'tests-input')
>> >> -----
>> >> makeInputField
>> >>         | spec |
>> >>         spec := self makeInputFieldSpec.
>> >>         widget := builder build: spec.!
>> >>
>> >> ----- Method: ToolBuilderTests>>makeInputFieldSpec (in category
>> >> 'tests-input') -----
>> >> makeInputFieldSpec
>> >>         | spec |
>> >>         spec := builder pluggableInputFieldSpec new.
>> >>         spec name: #input.
>> >>         spec model: self.
>> >>         spec getText: #getText.
>> >>         spec selection: #getTextSelection.
>> >>         spec color: #getColor.
>> >>         "<-- the following cannot be tested very well -->"
>> >>         spec setText: #setText:.
>> >>         spec menu: #getMenu:.
>> >>         ^spec!
>> >>
>> >> ----- Method: ToolBuilderTests>>makeItemList (in category
>> >> 'tests-lists')
>> >> -----
>> >> makeItemList
>> >>         | spec |
>> >>         spec := self makeItemListSpec.
>> >>         widget := builder build: spec.!
>> >>
>> >> ----- Method: ToolBuilderTests>>makeItemListSpec (in category
>> >> 'tests-lists') -----
>> >> makeItemListSpec
>> >>         | spec |
>> >>         spec := builder pluggableListSpec new.
>> >>         spec name: #list.
>> >>         spec model: self.
>> >>         spec list: #getList.
>> >>         spec getSelected: #getListSelection.
>> >>         "<-- the following cannot be tested very well -->"
>> >>         spec setSelected: #setListSelection:.
>> >>         spec menu: #getMenu:.
>> >>         spec keyPress: #keyPress:.
>> >>         ^spec!
>> >>
>> >> ----- Method: ToolBuilderTests>>makeList (in category 'tests-lists')
>> >> -----
>> >> makeList
>> >>         | spec |
>> >>         spec := self makeListSpec.
>> >>         widget := builder build: spec.!
>> >>
>> >> ----- Method: ToolBuilderTests>>makeListSpec (in category
>> >> 'tests-lists')
>> >> -----
>> >> makeListSpec
>> >>         | spec |
>> >>         spec := builder pluggableListSpec new.
>> >>         spec name: #list.
>> >>         spec model: self.
>> >>         spec list: #getList.
>> >>         spec getIndex: #getListIndex.
>> >>         "<-- the following cannot be tested very well -->"
>> >>         spec setIndex: #setListIndex:.
>> >>         spec menu: #getMenu:.
>> >>         spec keyPress: #keyPress:.
>> >>         ^spec!
>> >>
>> >> ----- Method: ToolBuilderTests>>makePanel (in category 'tests-panel')
>> >> -----
>> >> makePanel
>> >>         | spec |
>> >>         spec := self makePanelSpec.
>> >>         widget := builder build: spec.!
>> >>
>> >> ----- Method: ToolBuilderTests>>makePanelSpec (in category
>> >> 'tests-panel')
>> >> -----
>> >> makePanelSpec
>> >>         | spec |
>> >>         spec := builder pluggablePanelSpec new.
>> >>         spec name: #panel.
>> >>         spec model: self.
>> >>         spec children: #getChildren.
>> >>         ^spec!
>> >>
>> >> ----- Method: ToolBuilderTests>>makeText (in category 'tests-text')
>> >> -----
>> >> makeText
>> >>         | spec |
>> >>         spec := self makeTextSpec.
>> >>         widget := builder build: spec.!
>> >>
>> >> ----- Method: ToolBuilderTests>>makeTextSpec (in category 'tests-text')
>> >> -----
>> >> makeTextSpec
>> >>         | spec |
>> >>         spec := builder pluggableTextSpec new.
>> >>         spec name: #text.
>> >>         spec model: self.
>> >>         spec getText: #getText.
>> >>         spec selection: #getTextSelection.
>> >>         spec color: #getColor.
>> >>         "<-- the following cannot be tested very well -->"
>> >>         spec setText: #setText:.
>> >>         spec menu: #getMenu:.
>> >>         ^spec!
>> >>
>> >> ----- Method: ToolBuilderTests>>makeTree (in category 'tests-trees')
>> >> -----
>> >> makeTree
>> >>         | spec |
>> >>         spec := self makeTreeSpec.
>> >>         widget := builder build: spec.!
>> >>
>> >> ----- Method: ToolBuilderTests>>makeTreeSpec (in category
>> >> 'tests-trees')
>> >> -----
>> >> makeTreeSpec
>> >>         | spec |
>> >>         spec := builder pluggableTreeSpec new.
>> >>         spec name: #tree.
>> >>         spec model: self.
>> >>         spec roots: #getRoots.
>> >>         "<-- the following cannot be tested very well -->"
>> >>         spec getSelectedPath: #getTreeSelectionPath.
>> >>         spec getChildren: #getChildrenOf:.
>> >>         spec hasChildren: #hasChildren:.
>> >>         spec label: #getLabelOf:.
>> >>         spec icon: #getIconOf:.
>> >>         spec help: #getHelpOf:.
>> >>         spec setSelected: #setTreeSelection:.
>> >>         spec menu: #getMenu:.
>> >>         spec keyPress: #keyPress:.
>> >>         ^spec!
>> >>
>> >> ----- Method: ToolBuilderTests>>makeWindow (in category 'tests-window')
>> >> -----
>> >> makeWindow
>> >>         | spec |
>> >>         spec := self makeWindowSpec.
>> >>         widget := builder build: spec.!
>> >>
>> >> ----- Method: ToolBuilderTests>>makeWindowSpec (in category
>> >> 'tests-window') -----
>> >> makeWindowSpec
>> >>         | spec |
>> >>         spec := builder pluggableWindowSpec new.
>> >>         spec name: #window.
>> >>         spec model: self.
>> >>         spec children: #getChildren.
>> >>         spec label: #getLabel.
>> >>         spec closeAction: #noteWindowClosed.
>> >>         ^spec!
>> >>
>> >> ----- Method: ToolBuilderTests>>noteWindowClosed (in category
>> >> 'tests-window') -----
>> >> noteWindowClosed
>> >>         queries add: #noteWindowClosed.!
>> >>
>> >> ----- Method: ToolBuilderTests>>openWindow (in category 'tests-window')
>> >> -----
>> >> openWindow
>> >>         | spec |
>> >>         spec := self makeWindowSpec.
>> >>         widget := builder open: spec.!
>> >>
>> >> ----- Method: ToolBuilderTests>>returnFalse (in category 'support')
>> >> -----
>> >> returnFalse
>> >>         ^false!
>> >>
>> >> ----- Method: ToolBuilderTests>>returnTrue (in category 'support')
>> >> -----
>> >> returnTrue
>> >>         ^true!
>> >>
>> >> ----- Method: ToolBuilderTests>>setListIndex: (in category
>> >> 'tests-lists')
>> >> -----
>> >> setListIndex: index
>> >>         queries add: #setListIndex.!
>> >>
>> >> ----- Method: ToolBuilderTests>>setListSelection: (in category
>> >> 'tests-lists') -----
>> >> setListSelection: newIndex
>> >>         queries add: #setListSelection.!
>> >>
>> >> ----- Method: ToolBuilderTests>>setText: (in category 'tests-text')
>> >> -----
>> >> setText: newText
>> >>         queries add: #setText.
>> >>         ^false!
>> >>
>> >> ----- Method: ToolBuilderTests>>setTreeSelection: (in category
>> >> 'tests-trees') -----
>> >> setTreeSelection: node
>> >>         queries add: #setTreeSelection.!
>> >>
>> >> ----- Method: ToolBuilderTests>>setUp (in category 'support') -----
>> >> setUp
>> >>         queries := IdentitySet new.!
>> >>
>> >> ----- Method: ToolBuilderTests>>shutDown (in category 'support') -----
>> >> shutDown
>> >>         self myDependents: nil!
>> >>
>> >> ----- Method: ToolBuilderTests>>testAddTargetSelectorArgumentList (in
>> >> category 'tests-menus') -----
>> >> testAddTargetSelectorArgumentList
>> >>         self assertItemFiresWith:
>> >>                 [:spec | spec
>> >>                                 add: 'Menu Item'
>> >>                                 target: self
>> >>                                 selector: #fireMenuAction
>> >>                                 argumentList: #()]!
>> >>
>> >> ----- Method: ToolBuilderTests>>testButtonFiresBlock (in category
>> >> 'tests-button') -----
>> >> testButtonFiresBlock
>> >>         | spec |
>> >>         spec := builder pluggableButtonSpec new.
>> >>         spec model: self.
>> >>         spec action: [self fireButton].
>> >>         widget := builder build: spec.
>> >>         queries := IdentitySet new.
>> >>         self fireButtonWidget.
>> >>         self assert: (queries includes: #fireButton).!
>> >>
>> >> ----- Method: ToolBuilderTests>>testButtonFiresMessage (in category
>> >> 'tests-button') -----
>> >> testButtonFiresMessage
>> >>         | spec |
>> >>         spec := builder pluggableButtonSpec new.
>> >>         spec model: self.
>> >>         spec action: (MessageSend receiver: self selector: #fireButton
>> >> arguments: #()).
>> >>         widget := builder build: spec.
>> >>         queries := IdentitySet new.
>> >>         self fireButtonWidget.
>> >>         self assert: (queries includes: #fireButton).!
>> >>
>> >> ----- Method: ToolBuilderTests>>testButtonFiresSymbol (in category
>> >> 'tests-button') -----
>> >> testButtonFiresSymbol
>> >>         | spec |
>> >>         spec := builder pluggableButtonSpec new.
>> >>         spec model: self.
>> >>         spec action: #fireButton.
>> >>         widget := builder build: spec.
>> >>         queries := IdentitySet new.
>> >>         self fireButtonWidget.
>> >>         self assert: (queries includes: #fireButton).!
>> >>
>> >> ----- Method: ToolBuilderTests>>testButtonInitiallyDisabled (in
>> >> category
>> >> 'tests-button') -----
>> >> testButtonInitiallyDisabled
>> >>         | spec |
>> >>         spec := builder pluggableButtonSpec new.
>> >>         spec model: self.
>> >>         spec label: #getLabel.
>> >>         spec color: #getColor.
>> >>         spec state: #getState.
>> >>         spec enabled: #returnFalse.
>> >>         widget := builder build: spec.
>> >>         self deny: (self buttonWidgetEnabled)!
>> >>
>> >> ----- Method: ToolBuilderTests>>testButtonInitiallyDisabledSelector (in
>> >> category 'tests-button') -----
>> >> testButtonInitiallyDisabledSelector
>> >>         | spec |
>> >>         spec := builder pluggableButtonSpec new.
>> >>         spec model: self.
>> >>         spec label: #getLabel.
>> >>         spec color: #getColor.
>> >>         spec state: #getState.
>> >>         spec enabled: #returnFalse.
>> >>         widget := builder build: spec.
>> >>         self deny: (self buttonWidgetEnabled)!
>> >>
>> >> ----- Method: ToolBuilderTests>>testButtonInitiallyEnabled (in category
>> >> 'tests-button') -----
>> >> testButtonInitiallyEnabled
>> >>         | spec |
>> >>         spec := builder pluggableButtonSpec new.
>> >>         spec model: self.
>> >>         spec label: #getLabel.
>> >>         spec color: #getColor.
>> >>         spec state: #getState.
>> >>         spec enabled: #returnTrue.
>> >>         widget := builder build: spec.
>> >>         self assert: (self buttonWidgetEnabled)!
>> >>
>> >> ----- Method: ToolBuilderTests>>testButtonInitiallyEnabledSelector (in
>> >> category 'tests-button') -----
>> >> testButtonInitiallyEnabledSelector
>> >>         | spec |
>> >>         spec := builder pluggableButtonSpec new.
>> >>         spec model: self.
>> >>         spec label: #getLabel.
>> >>         spec color: #getColor.
>> >>         spec state: #getState.
>> >>         spec enabled: #returnTrue.
>> >>         widget := builder build: spec.
>> >>         self assert: (self buttonWidgetEnabled)!
>> >>
>> >> ----- Method: ToolBuilderTests>>testButtonWidgetID (in category
>> >> 'tests-button') -----
>> >> testButtonWidgetID
>> >>         self makeButton.
>> >>         self assert: (builder widgetAt: #button) == widget.!
>> >>
>> >> ----- Method: ToolBuilderTests>>testGetButtonColor (in category
>> >> 'tests-button') -----
>> >> testGetButtonColor
>> >>         self makeButton.
>> >>         queries := IdentitySet new.
>> >>         self changed: #getColor.
>> >>         self assert: (queries includes: #getColor).
>> >>         self assert: self widgetColor = self getColor.!
>> >>
>> >> ----- Method: ToolBuilderTests>>testGetButtonEnabled (in category
>> >> 'tests-button') -----
>> >> testGetButtonEnabled
>> >>         self makeButton.
>> >>         queries := IdentitySet new.
>> >>         self changed: #getEnabled.
>> >>         self assert: (queries includes: #getEnabled).!
>> >>
>> >> ----- Method: ToolBuilderTests>>testGetButtonLabel (in category
>> >> 'tests-button') -----
>> >> testGetButtonLabel
>> >>         self makeButton.
>> >>         queries := IdentitySet new.
>> >>         self changed: #getLabel.
>> >>         self assert: (queries includes: #getLabel).!
>> >>
>> >> ----- Method: ToolBuilderTests>>testGetButtonSideEffects (in category
>> >> 'tests-button') -----
>> >> testGetButtonSideEffects
>> >>         self makeButton.
>> >>         queries := IdentitySet new.
>> >>         self changed: #testSignalWithNoDiscernableEffect.
>> >>         self expectedButtonSideEffects do:[:sym|
>> >>                 self assert: (queries includes: sym).
>> >>                 queries remove: sym.
>> >>         ].
>> >>         self assert: queries isEmpty.!
>> >>
>> >> ----- Method: ToolBuilderTests>>testGetButtonState (in category
>> >> 'tests-button') -----
>> >> testGetButtonState
>> >>         self makeButton.
>> >>         queries := IdentitySet new.
>> >>         self changed: #getState.
>> >>         self assert: (queries includes: #getState).!
>> >>
>> >> ----- Method: ToolBuilderTests>>testGetInputFieldColor (in category
>> >> 'tests-input') -----
>> >> testGetInputFieldColor
>> >>         self makeInputField.
>> >>         queries := IdentitySet new.
>> >>         self changed: #getColor.
>> >>         self assert: (queries includes: #getColor).
>> >>         self assert: self widgetColor = self getColor.!
>> >>
>> >> ----- Method: ToolBuilderTests>>testGetInputFieldSelection (in category
>> >> 'tests-input') -----
>> >> testGetInputFieldSelection
>> >>         self makeInputField.
>> >>         queries := IdentitySet new.
>> >>         self changed: #getTextSelection.
>> >>         self assert: (queries includes: #getTextSelection).!
>> >>
>> >> ----- Method: ToolBuilderTests>>testGetInputFieldSideEffectFree (in
>> >> category 'tests-input') -----
>> >> testGetInputFieldSideEffectFree
>> >>         self makeInputField.
>> >>         queries := IdentitySet new.
>> >>         self changed: #testSignalWithNoDiscernableEffect.
>> >>         self assert: queries isEmpty.!
>> >>
>> >> ----- Method: ToolBuilderTests>>testGetInputFieldText (in category
>> >> 'tests-input') -----
>> >> testGetInputFieldText
>> >>         self makeInputField.
>> >>         queries := IdentitySet new.
>> >>         self changed: #getText.
>> >>         self assert: (queries includes: #getText).!
>> >>
>> >> ----- Method: ToolBuilderTests>>testGetItemListSideEffectFree (in
>> >> category
>> >> 'tests-lists') -----
>> >> testGetItemListSideEffectFree
>> >>         self makeItemList.
>> >>         queries := IdentitySet new.
>> >>         self changed: #testSignalWithNoDiscernableEffect.
>> >>         self assert: queries isEmpty.!
>> >>
>> >> ----- Method: ToolBuilderTests>>testGetList (in category 'tests-lists')
>> >> -----
>> >> testGetList
>> >>         self makeList.
>> >>         queries := IdentitySet new.
>> >>         self changed: #getList.
>> >>         self assert: (queries includes: #getList).!
>> >>
>> >> ----- Method: ToolBuilderTests>>testGetListIndex (in category
>> >> 'tests-lists') -----
>> >> testGetListIndex
>> >>         self makeList.
>> >>         queries := IdentitySet new.
>> >>         self changed: #getListIndex.
>> >>         self assert: (queries includes: #getListIndex).!
>> >>
>> >> ----- Method: ToolBuilderTests>>testGetListSelection (in category
>> >> 'tests-lists') -----
>> >> testGetListSelection
>> >>         self makeItemList.
>> >>         queries := IdentitySet new.
>> >>         self changed: #getListSelection.
>> >>         self assert: (queries includes: #getListSelection).!
>> >>
>> >> ----- Method: ToolBuilderTests>>testGetListSideEffectFree (in category
>> >> 'tests-lists') -----
>> >> testGetListSideEffectFree
>> >>         self makeList.
>> >>         queries := IdentitySet new.
>> >>         self changed: #testSignalWithNoDiscernableEffect.
>> >>         self assert: queries isEmpty.!
>> >>
>> >> ----- Method: ToolBuilderTests>>testGetPanelChildren (in category
>> >> 'tests-panel') -----
>> >> testGetPanelChildren
>> >>         self makePanel.
>> >>         queries := IdentitySet new.
>> >>         self changed: #getChildren.
>> >>         self assert: (queries includes: #getChildren).!
>> >>
>> >> ----- Method: ToolBuilderTests>>testGetPanelSideEffectFree (in category
>> >> 'tests-panel') -----
>> >> testGetPanelSideEffectFree
>> >>         self makePanel.
>> >>         queries := IdentitySet new.
>> >>         self changed: #testSignalWithNoDiscernableEffect.
>> >>         self assert: queries isEmpty.!
>> >>
>> >> ----- Method: ToolBuilderTests>>testGetText (in category 'tests-text')
>> >> -----
>> >> testGetText
>> >>         self makeText.
>> >>         queries := IdentitySet new.
>> >>         self changed: #getText.
>> >>         self assert: (queries includes: #getText).!
>> >>
>> >> ----- Method: ToolBuilderTests>>testGetTextColor (in category
>> >> 'tests-text') -----
>> >> testGetTextColor
>> >>         self makeText.
>> >>         queries := IdentitySet new.
>> >>         self changed: #getColor.
>> >>         self assert: (queries includes: #getColor).
>> >>         self assert: self widgetColor = self getColor.!
>> >>
>> >> ----- Method: ToolBuilderTests>>testGetTextSelection (in category
>> >> 'tests-text') -----
>> >> testGetTextSelection
>> >>         self makeText.
>> >>         queries := IdentitySet new.
>> >>         self changed: #getTextSelection.
>> >>         self assert: (queries includes: #getTextSelection).!
>> >>
>> >> ----- Method: ToolBuilderTests>>testGetTextSideEffectFree (in category
>> >> 'tests-text') -----
>> >> testGetTextSideEffectFree
>> >>         self makeText.
>> >>         queries := IdentitySet new.
>> >>         self changed: #testSignalWithNoDiscernableEffect.
>> >>         self assert: queries isEmpty.!
>> >>
>> >> ----- Method: ToolBuilderTests>>testGetWindowChildren (in category
>> >> 'tests-window') -----
>> >> testGetWindowChildren
>> >>         self makeWindow.
>> >>         queries := IdentitySet new.
>> >>         self changed: #getChildren.
>> >>         self assert: (queries includes: #getChildren).!
>> >>
>> >> ----- Method: ToolBuilderTests>>testGetWindowLabel (in category
>> >> 'tests-window') -----
>> >> testGetWindowLabel
>> >>         self makeWindow.
>> >>         queries := IdentitySet new.
>> >>         self changed: #getLabel.
>> >>         self assert: (queries includes: #getLabel).!
>> >>
>> >> ----- Method: ToolBuilderTests>>testGetWindowSideEffectFree (in
>> >> category
>> >> 'tests-window') -----
>> >> testGetWindowSideEffectFree
>> >>         self makeWindow.
>> >>         queries := IdentitySet new.
>> >>         self changed: #testSignalWithNoDiscernableEffect.
>> >>         self assert: queries isEmpty.!
>> >>
>> >> ----- Method: ToolBuilderTests>>testInputWidgetID (in category
>> >> 'tests-input') -----
>> >> testInputWidgetID
>> >>         self makeInputField.
>> >>         self assert: (builder widgetAt: #input) == widget.!
>> >>
>> >> ----- Method: ToolBuilderTests>>testItemListWidgetID (in category
>> >> 'tests-lists') -----
>> >> testItemListWidgetID
>> >>         self makeItemList.
>> >>         self assert: (builder widgetAt: #list) == widget.!
>> >>
>> >> ----- Method: ToolBuilderTests>>testListWidgetID (in category
>> >> 'tests-lists') -----
>> >> testListWidgetID
>> >>         self makeList.
>> >>         self assert: (builder widgetAt: #list) == widget.!
>> >>
>> >> ----- Method: ToolBuilderTests>>testPanelWidgetID (in category
>> >> 'tests-panel') -----
>> >> testPanelWidgetID
>> >>         self makePanel.
>> >>         self assert: (builder widgetAt: #panel) == widget.!
>> >>
>> >> ----- Method: ToolBuilderTests>>testSetInputField (in category
>> >> 'tests-input') -----
>> >> testSetInputField
>> >>         self makeInputField.
>> >>         queries := IdentitySet new.
>> >>         self acceptWidgetText.
>> >>         self assert: (queries includes: #setText).!
>> >>
>> >> ----- Method: ToolBuilderTests>>testSetListIndex (in category
>> >> 'tests-lists') -----
>> >> testSetListIndex
>> >>         self makeList.
>> >>         queries := IdentitySet new.
>> >>         self changeListWidget.
>> >>         self assert: (queries includes: #setListIndex).!
>> >>
>> >> ----- Method: ToolBuilderTests>>testSetListSelection (in category
>> >> 'tests-lists') -----
>> >> testSetListSelection
>> >>         self makeItemList.
>> >>         queries := IdentitySet new.
>> >>         self changeListWidget.
>> >>         self assert: (queries includes: #setListSelection).!
>> >>
>> >> ----- Method: ToolBuilderTests>>testSetText (in category 'tests-text')
>> >> -----
>> >> testSetText
>> >>         self makeText.
>> >>         queries := IdentitySet new.
>> >>         self acceptWidgetText.
>> >>         self assert: (queries includes: #setText).!
>> >>
>> >> ----- Method: ToolBuilderTests>>testTextWidgetID (in category
>> >> 'tests-text') -----
>> >> testTextWidgetID
>> >>         self makeText.
>> >>         self assert: (builder widgetAt: #text) == widget!
>> >>
>> >> ----- Method: ToolBuilderTests>>testTreeExpandPath (in category
>> >> 'tests-trees') -----
>> >> testTreeExpandPath
>> >>         "@@@@: REMOVE THIS - it's a hack (changed: #openPath)"
>> >>         self makeTree.
>> >>         queries := IdentitySet new.
>> >>         self changed: {#openPath. '4'. '2'. '3'}.
>> >>         self waitTick.
>> >>         self assert: (queries includes: #getChildrenOf).
>> >>         self assert: (queries includes: #setTreeSelection).
>> >>         self assert: (queries includes: #getLabelOf).
>> >> !
>> >>
>> >> ----- Method: ToolBuilderTests>>testTreeExpandPathFirst (in category
>> >> 'tests-trees') -----
>> >> testTreeExpandPathFirst
>> >>         "@@@@: REMOVE THIS - it's a hack (changed: #openPath)"
>> >>         self makeTree.
>> >>         queries := IdentitySet new.
>> >>         self changed: {#openPath. '1'. '2'. '2'}.
>> >>         self waitTick.
>> >>         self assert: (queries includes: #getChildrenOf).
>> >>         self assert: (queries includes: #setTreeSelection).
>> >>         self assert: (queries includes: #getLabelOf).
>> >> !
>> >>
>> >> ----- Method: ToolBuilderTests>>testTreeGetSelectionPath (in category
>> >> 'tests-trees') -----
>> >> testTreeGetSelectionPath
>> >>         self makeTree.
>> >>         queries := IdentitySet new.
>> >>         self changed: #getTreeSelectionPath.
>> >>         self waitTick.
>> >>         self assert: (queries includes: #getTreeSelectionPath).
>> >>         self assert: (queries includes: #getChildrenOf).
>> >>         self assert: (queries includes: #setTreeSelection).
>> >> !
>> >>
>> >> ----- Method: ToolBuilderTests>>testTreeRoots (in category
>> >> 'tests-trees')
>> >> -----
>> >> testTreeRoots
>> >>         self makeTree.
>> >>         queries := IdentitySet new.
>> >>         self changed: #getRoots.
>> >>         self assert: (queries includes: #getRoots).!
>> >>
>> >> ----- Method: ToolBuilderTests>>testTreeWidgetID (in category
>> >> 'tests-trees') -----
>> >> testTreeWidgetID
>> >>         self makeTree.
>> >>         self assert: (builder widgetAt: #tree) == widget.!
>> >>
>> >> ----- Method: ToolBuilderTests>>testWindowCloseAction (in category
>> >> 'tests-window') -----
>> >> testWindowCloseAction
>> >>         self openWindow.
>> >>         builder close: widget.
>> >>         self assert: (queries includes: #noteWindowClosed).!
>> >>
>> >> ----- Method: ToolBuilderTests>>testWindowID (in category
>> >> 'tests-window')
>> >> -----
>> >> testWindowID
>> >>         self makeWindow.
>> >>         self assert: (builder widgetAt: #window) == widget.!
>> >>
>> >> ----- Method: ToolBuilderTests>>waitTick (in category 'support') -----
>> >> waitTick
>> >>         ^nil!
>> >>
>> >> ----- Method: ToolBuilderTests>>widgetColor (in category 'support')
>> >> -----
>> >> widgetColor
>> >>         "Answer color from widget"
>> >>         self subclassResponsibility
>> >>
>> >>         "NOTE: You can bail out if you don't know how to get the color
>> >> from the widget:
>> >>                 ^self getColor
>> >>         will work."!