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