[squeak-dev] The Trunk: MorphicTests-pre.53.mcz

H. Hirzel hannes.hirzel at gmail.com
Fri Oct 4 13:10:23 UTC 2019


The example given in the class comment of TextAnchor does not work.

Workspace new
		contents: (Text withAll: 'foo') , (Text string: '*' attribute:
(TextAnchor new anchoredMorph: EllipseMorph new)) , (Text withAll:
'bar');
		openLabel: 'Text with Morph'.

(Squeak 5.3-19046)

Does it need to be updated?

--Hannes

On Fri, 4 Oct 2019 09:22:22 0000, commits at source.squeak.org
<commits at source.squeak.org> wrote:
> Patrick Rein uploaded a new version of MorphicTests to project The Trunk:
> http://source.squeak.org/trunk/MorphicTests-pre.53.mcz
>
> ==================== Summary ====================
>
> Name: MorphicTests-pre.53
> Author: pre
> Time: 4 October 2019, 11:22:21.819303 am
> UUID: d1d84e3f-afe5-624c-a1be-287b3465240e
> Ancestors: MorphicTests-mt.52
>
> Adds Test for the placement of text anchors
>
> =============== Diff against MorphicTests-mt.52 ===============
>
> Item was changed:
>   SystemOrganization addCategory: #'MorphicTests-Basic'!
> + SystemOrganization addCategory: #'MorphicTests-Events'!
>   SystemOrganization addCategory: #'MorphicTests-Kernel'!
>   SystemOrganization addCategory: #'MorphicTests-Layouts'!
>   SystemOrganization addCategory: #'MorphicTests-Support'!
>   SystemOrganization addCategory: #'MorphicTests-Text Support'!
>   SystemOrganization addCategory: #'MorphicTests-ToolBuilder'!
>   SystemOrganization addCategory: #'MorphicTests-Widgets'!
>   SystemOrganization addCategory: #'MorphicTests-Worlds'!
> - SystemOrganization addCategory: #'MorphicTests-Events'!
>
> Item was changed:
> + TestCase subclass: #TextAnchorTest
> + 	instanceVariableNames: 'anchoredMorph anchorAttribute text textMorph'
> - HashAndEqualsTestCase subclass: #TextAnchorTest
> - 	instanceVariableNames: ''
>   	classVariableNames: ''
>   	poolDictionaries: ''
>   	category: 'MorphicTests-Text Support'!
>
> Item was added:
> + ----- Method: TextAnchorTest>>after:paddingChangesTo: (in category
> 'utility') -----
> + after: aBlock paddingChangesTo: assertBlock
> +
> + 	anchoredMorph := TextAnchorTestMorph new.
> + 	anchorAttribute anchoredMorph: anchoredMorph.
> + 	aBlock value.
> + 	self prepareTextMorph.
> + 	assertBlock value: (textMorph paragraph lines first).	!
>
> Item was added:
> + ----- Method: TextAnchorTest>>prepareTextMorph (in category 'utility')
> -----
> + prepareTextMorph
> +
> + 	textMorph := text asMorph.
> + 	self refreshTextMorph.!
>
> Item was added:
> + ----- Method: TextAnchorTest>>refreshTextMorph (in category 'utility')
> -----
> + refreshTextMorph
> +
> + 	textMorph changed; imageForm. "This triggers a redraw and thereby
> positions the embedded morphs."!
>
> Item was changed:
> + ----- Method: TextAnchorTest>>setUp (in category 'running') -----
> - ----- Method: TextAnchorTest>>setUp (in category 'initialize-release')
> -----
>   setUp
> +
>   	super setUp.
> + 	anchoredMorph := TextAnchorTestMorph new.
> + 	anchorAttribute := TextAnchor new anchoredMorph: anchoredMorph.
> + 	text := Text streamContents: [:stream |
> + 		stream
> + 			nextPutAll: 'Here is a contrived example ';
> + 			nextPutAll: (Text
> + 				string: Character startOfHeader asString
> + 				attributes: {
> + 					anchorAttribute.
> + 					TextColor color: Color transparent});
> + 			nextPutAll: ' whose morph is in the center.' ].
> + 	self prepareTextMorph.!
> - 	prototypes
> - 		add: (TextAnchor new anchoredMorph: RectangleMorph new initialize);
> - 		
> - 		add: (TextAnchor new anchoredMorph: EllipseMorph new initialize) !
>
> Item was changed:
> + ----- Method: TextAnchorTest>>testBeginWithAnAnchor (in category 'tests')
> -----
> - ----- Method: TextAnchorTest>>testBeginWithAnAnchor (in category
> 'initialize-release') -----
>   testBeginWithAnAnchor
> + 	
> + 	text := Text streamContents: [:stream |
> + 		stream
> + 			nextPutAll: (Text
> + 				string: Character startOfHeader asString
> + 				attributes: {
> + 					anchorAttribute.
> - 	| text morph model |
> - 	text := Text streamContents:
> - 		[ : stream | stream
> - 			 nextPutAll:
> - 			(Text
> - 				string: (String value: 1)
> - 				attributes: {TextAnchor new anchoredMorph: Morph new.
>   					TextColor color: Color transparent}) ;
> + 			nextPutAll: ' should be able to begin with an embedded object. '].
> + 	self prepareTextMorph.
> + 	self
> + 		assert: (anchoredMorph ownerChain includes: textMorph);
> + 		assert: anchoredMorph topLeft >= textMorph topLeft.!
> - 			 nextPutAll: ' should be able to begin with an embedded object. ' ].
> - 	model := text -> nil.
> - 	morph := PluggableTextMorph
> - 		on: model
> - 		text: #key
> - 		accept: nil.
> - 	[ morph openInWorld ] ensure: [ morph delete ]!
>
> Item was added:
> + ----- Method:
> TextAnchorTest>>testHavingADocumentAnchorAndRelativeTextAnchorPosition (in
> category 'tests') -----
> + testHavingADocumentAnchorAndRelativeTextAnchorPosition
> + 	
> + 	anchoredMorph := Morph new.
> + 	anchoredMorph textAnchorProperties
> + 		positionInDocument: 20 @ 10;
> + 		anchorLayout: #document.
> + 	anchorAttribute anchoredMorph: anchoredMorph.
> + 	self prepareTextMorph.
> + 	
> + 	self
> + 		assert: (anchoredMorph ownerChain includes: textMorph);
> + 		 assert: anchoredMorph topLeft >= textMorph topLeft;
> + 		 assert: anchoredMorph top > textMorph top!
>
> Item was added:
> + ----- Method:
> TextAnchorTest>>testHavingADocumentAnchorShouldNotAffectTheLineHeight (in
> category 'tests') -----
> + testHavingADocumentAnchorShouldNotAffectTheLineHeight
> + 	
> + 	| firstLine |
> + 	anchoredMorph := Morph new.
> + 	anchoredMorph height: 50.
> + 	anchoredMorph textAnchorProperties
> + 		positionInDocument: 20 @ 10;
> + 		anchorLayout: #document.
> + 	anchorAttribute anchoredMorph: anchoredMorph.
> + 	self prepareTextMorph.
> + 	
> + 	firstLine := textMorph paragraph lines first.
> + 	self	
> + 		assert: (firstLine bottom - firstLine top) < 25
> + 		description: '#document layouted anchor should not affect line height'.
> + 	!
>
> Item was added:
> + ----- Method:
> TextAnchorTest>>testHavingAMultilineDocumentAnchorAndRelativeTextAnchorPosition
> (in category 'tests') -----
> + testHavingAMultilineDocumentAnchorAndRelativeTextAnchorPosition
> + 	
> + 	| secondLine |
> + 	text := Text streamContents: [ :stream |
> + 		stream
> + 			nextPutAll: 'Example with more than one line.
> + Here is an example ';
> + 			nextPutAll: (Text
> + 				string: Character startOfHeader asString
> + 				attributes: {anchorAttribute});
> + 			nextPutAll: ' without a morph in the center.' ].
> + 	anchoredMorph := Morph new
> + 		height: 50;
> + 		yourself.
> + 	anchoredMorph textAnchorProperties
> + 		positionInDocument: 20 @ 10;
> + 		anchorLayout: #document.
> + 	anchorAttribute anchoredMorph: anchoredMorph.
> + 	self prepareTextMorph.
> +
> + 	secondLine := textMorph paragraph lines second.
> + 	self
> + 		assert: (anchoredMorph ownerChain includes: textMorph);
> + 		assert: anchoredMorph topLeft >= textMorph topLeft;
> + 		assert: anchoredMorph top > textMorph top;
> + 		assert: anchoredMorph top > secondLine top.!
>
> Item was added:
> + ----- Method: TextAnchorTest>>testHavingAnAnchorCanBeAlignedDifferently
> (in category 'tests') -----
> + testHavingAnAnchorCanBeAlignedDifferently
> +
> + 	| line |
> + 	anchoredMorph textAnchorProperties verticalAlignment: #(top baseline).
> + 	anchoredMorph textAnchorProperties padding. 1.
> + 	self prepareTextMorph.
> + 	line := textMorph paragraph lines first.
> + 	self assert: anchoredMorph top = (line top + line baseline).!
>
> Item was added:
> + ----- Method: TextAnchorTest>>testHavingAnAnchorInTheCenter (in category
> 'tests') -----
> + testHavingAnAnchorInTheCenter
> + 	
> + 	self
> + 		assert: (anchoredMorph ownerChain includes: textMorph);
> + 		assert: anchoredMorph topLeft > textMorph topLeft!
>
> Item was added:
> + ----- Method:
> TextAnchorTest>>testHavingAnAnchorInTheCenterWithHorizontalPadding (in
> category 'tests') -----
> + testHavingAnAnchorInTheCenterWithHorizontalPadding
> +
> + 	anchoredMorph textAnchorProperties padding. 30 at 0.
> + 	
> + 	self
> + 		assert: (anchoredMorph ownerChain includes: textMorph);
> + 		assert: (anchoredMorph topLeft > textMorph topLeft)!
>
> Item was added:
> + ----- Method:
> TextAnchorTest>>testHavingAnInlineAnchorAndRelativeTextAnchorPosition (in
> category 'tests') -----
> + testHavingAnInlineAnchorAndRelativeTextAnchorPosition
> + 	
> + 	| positionWithRelativePosition positionWithoutRelativePosition |
> + 	anchoredMorph textAnchorProperties
> + 		positionInDocument: 20 at 10;
> + 		anchorLayout: #inline.
> + 	self refreshTextMorph.
> + 	positionWithRelativePosition := anchoredMorph topLeft.
> + 	
> + 	anchoredMorph textAnchorProperties positionInDocument: nil.
> + 	self refreshTextMorph.
> + 	positionWithoutRelativePosition := anchoredMorph topLeft.
> + 	
> + 	self	assert: positionWithRelativePosition =
> positionWithoutRelativePosition!
>
> Item was added:
> + ----- Method: TextAnchorTest>>testLayoutingSetsTheMorphPosition (in
> category 'tests') -----
> + testLayoutingSetsTheMorphPosition
> + 	
> + 	anchoredMorph := Morph new.
> + 	anchoredMorph textAnchorProperties
> + 		anchorLayout: #inline.
> + 	anchorAttribute anchoredMorph: anchoredMorph.
> + 	self prepareTextMorph.
> + 	
> + 	textMorph position: 100 at 100.
> + 	
> + 	self assert: anchoredMorph position > (100 at 100).!
>
> Item was added:
> + ----- Method: TextAnchorTest>>testPaddingBottom (in category
> 'tests-padding') -----
> + testPaddingBottom
> +
> + 	self
> + 		after: [
> + 			anchoredMorph height: 20.
> + 			anchoredMorph textAnchorProperties verticalAlignment: #(bottom
> baseline).
> + 			anchoredMorph textAnchorProperties padding: (anchoredMorph
> textAnchorProperties padding bottom: 10)]
> + 		paddingChangesTo: [:line |
> + 			self assert: anchoredMorph bottom + 10 = line baseline ]!
>
> Item was added:
> + ----- Method: TextAnchorTest>>testPaddingBottomAndBottom (in category
> 'tests-padding') -----
> + testPaddingBottomAndBottom
> +
> + 	self
> + 		after: [
> + 			anchoredMorph height: 20.
> + 			anchoredMorph textAnchorProperties verticalAlignment: #(bottom bottom).
> + 			anchoredMorph textAnchorProperties padding: (anchoredMorph
> textAnchorProperties padding bottom: 10)]
> + 		paddingChangesTo: [:line |
> + 			self assert: anchoredMorph bottom + 10 = line bottom ]!
>
> Item was added:
> + ----- Method:
> TextAnchorTest>>testPaddingBottomAndBottomWithConvenienceAlignment (in
> category 'tests-padding') -----
> + testPaddingBottomAndBottomWithConvenienceAlignment
> +
> + 	self
> + 		after: [
> + 			anchoredMorph height: 20.
> + 			anchoredMorph textAnchorProperties verticalAlignment: #bottom.
> + 			anchoredMorph textAnchorProperties padding: (anchoredMorph
> textAnchorProperties padding bottom: 10)]
> + 		paddingChangesTo: [:line |
> + 			self assert: anchoredMorph bottom + 10 = line bottom ]!
>
> Item was added:
> + ----- Method: TextAnchorTest>>testPaddingTop (in category 'tests-padding')
> -----
> + testPaddingTop
> +
> + 	self
> + 		after: [
> + 			anchoredMorph height: 20.
> + 			anchoredMorph textAnchorProperties verticalAlignment: #(top baseline).
> + 			anchoredMorph textAnchorProperties padding: (anchoredMorph
> textAnchorProperties padding top: 10)]
> + 		paddingChangesTo: [:line | | anchoredMorphTop |
> +  			anchoredMorphTop := anchoredMorph top - textMorph top.
> +  			self assert: anchoredMorphTop - 10 = line baseline ]!
>
> Item was added:
> + ----- Method: TextAnchorTest>>testPaddingTopAndBottom (in category
> 'tests-padding') -----
> + testPaddingTopAndBottom
> + 	
> + 	self
> + 		after: [
> + 			anchoredMorph height: 30.
> + 			anchoredMorph textAnchorProperties verticalAlignment: #(#bottom
> #bottom).
> + 			anchoredMorph textAnchorProperties padding: (anchoredMorph
> textAnchorProperties padding bottom: 10).
> + 			anchoredMorph textAnchorProperties padding: (anchoredMorph
> textAnchorProperties padding top: 10).]
> + 		paddingChangesTo: [:line |
> + 			self assert: anchoredMorph bottom + 10 = line bottom.
> + 			self deny: anchoredMorph top - 10= line top description: 'We only apply
> padding to the morph position'.]!
>
> Item was added:
> + ----- Method: TextAnchorTest>>testPaddingTopAndTop (in category
> 'tests-padding') -----
> + testPaddingTopAndTop
> +
> + 	self
> + 		after: [
> + 			anchoredMorph height: 20.
> + 			anchoredMorph textAnchorProperties verticalAlignment: #(top baseline).
> + 			anchoredMorph textAnchorProperties padding: (anchoredMorph
> textAnchorProperties padding top: 10)]
> + 		paddingChangesTo: [:line | | anchoredMorphTop |
> +  			anchoredMorphTop := anchoredMorph top - textMorph top.
> +  			self assert: anchoredMorphTop - 10 = line baseline ]!
>
> Item was added:
> + ----- Method: TextAnchorTest>>testTextAnchorWithAForm (in category
> 'tests') -----
> + testTextAnchorWithAForm
> +
> + 	anchorAttribute anchoredMorph: (Form dotOfSize: 60).
> + 	self prepareTextMorph.
> + 	
> + 	self
> + 		assert: textMorph paragraph lines first baseline > 20;
> + 		assert: textMorph submorphs isEmpty!
>
> Item was added:
> + ----- Method:
> TextAnchorTest>>testTextAnchorWithMorphDefiningItsOwnBaseline (in category
> 'tests') -----
> + testTextAnchorWithMorphDefiningItsOwnBaseline
> +
> + 	self
> + 		after: [
> + 			anchoredMorph textAnchorProperties
> + 				morphBaselineGetter: #myBaseline;
> + 				verticalAlignment: #(baseline baseline).
> + 			anchoredMorph height: 20]
> + 		paddingChangesTo: [:line |
> +  			self assert: anchoredMorph top + 5 = line baseline ]!
>
> Item was added:
> + ----- Method: TextAnchorTest>>testTextAnchorsDoNotBreakNormalRendering (in
> category 'tests') -----
> + testTextAnchorsDoNotBreakNormalRendering
> + 	
> + 	text := Text streamContents: [ :stream |
> + 		stream
> + 			nextPutAll: 'Here is an example ';
> + 			nextPutAll: (Text
> + 				string: Character startOfHeader asString
> + 				attributes: {});
> + 			nextPutAll: ' without a morph in the center. ' ].
> + 	
> + 	[self
> + 		shouldnt: [
> + 			self prepareTextMorph.
> + 			textMorph openInWorld]
> + 		raise: Error] ensure: [ textMorph delete ]!
>
> Item was added:
> + Morph subclass: #TextAnchorTestMorph
> + 	instanceVariableNames: ''
> + 	classVariableNames: ''
> + 	poolDictionaries: ''
> + 	category: 'MorphicTests-Text Support'!
>
> Item was added:
> + ----- Method: TextAnchorTestMorph>>initialize (in category
> 'initialization') -----
> + initialize
> +
> + 	super initialize.
> + 	self height: 20.!
>
> Item was added:
> + ----- Method: TextAnchorTestMorph>>myBaseline (in category 'text-anchor')
> -----
> + myBaseline
> +
> + 	^ 5!
>
>
>


More information about the Squeak-dev mailing list