-- TestStyle.mesa -- written by Bill Paxton, August 1981 -- last edit by Bill Paxton, 21-Oct-81 12:36:16 -- This module provides testing for JaM node style interface DIRECTORY NodeStyle, NodeStyleExtra, NodeProps, TextNode, TextEdit, NameSymbolTable, TextLooks; TestStyle: PROGRAM IMPORTS NodeStyle, NameSymbolTable, TextNode, TextEdit, NodeProps = BEGIN OPEN NodeStyle, NodeStyleExtra, looksI:TextLooks, nsI:NameSymbolTable; Failure: SIGNAL = CODE; nullName: nsI.Name = nsI.nullName; Test: PROC = { node: TextNode.Ref ← TextNode.NewTextNode[]; style: Ref ← Create[]; copy: Ref ← Create[]; sty: StyleRef ← LOOPHOLE[style]; cpy: StyleRef ← LOOPHOLE[copy]; looks: looksI.Looks ← looksI.noLooks; type1: nsI.Name ← nsI.MakeName["Type1"]; type2: nsI.Name ← nsI.MakeName["Type2"]; test: nsI.Name ← nsI.MakeName["Test"]; error1: nsI.Name ← nsI.MakeName["TestError1"]; error2: nsI.Name ← nsI.MakeName["TestError2"]; helvetica: nsI.Name ← nsI.MakeName["Helvetica"]; timesroman: nsI.Name ← nsI.MakeName["TimesRoman"]; TextEdit.ChangeStyle[node, "Test"]; IF ~ node.hasprefix THEN { SIGNAL Failure; RETURN }; ApplyObject[style, NodeProps.GetPrefixObject[node]]; IF GetStyleName[style] # test THEN { SIGNAL Failure; RETURN }; ApplyType[style,type1,nullName]; -- loads the style and applies type1 IF GetFontFamily[style] # helvetica THEN { SIGNAL Failure; RETURN }; IF GetFontFace[style] # Regular THEN { SIGNAL Failure; RETURN }; IF GetFontSize[style] # 10.0 THEN { SIGNAL Failure; RETURN }; IF GetFontAlphabets[style] # CapsAndLower THEN { SIGNAL Failure; RETURN }; IF GetLineFormatting[style] # FlushLeft THEN { SIGNAL Failure; RETURN }; IF GetUnderlining[style] # None THEN { SIGNAL Failure; RETURN }; IF GetLeftIndent[style] # 20.0 THEN { SIGNAL Failure; RETURN }; IF GetRightIndent[style] # 21.0 THEN { SIGNAL Failure; RETURN }; IF GetFirstIndent[style] # 12.0 THEN { SIGNAL Failure; RETURN }; IF GetBodyIndent[style] # 0.0 THEN { SIGNAL Failure; RETURN }; IF GetTopIndent[style] # 2.0 THEN { SIGNAL Failure; RETURN }; IF GetBottomIndent[style] # 3.0 THEN { SIGNAL Failure; RETURN }; IF GetLeading[style] # 12.0 THEN { SIGNAL Failure; RETURN }; IF GetTopLeading[style] # 22.0 THEN { SIGNAL Failure; RETURN }; IF GetBottomLeading[style] # 25.0 THEN { SIGNAL Failure; RETURN }; IF GetVShift[style] # 0.0 THEN { SIGNAL Failure; RETURN }; IF GetMinGaps[style] # 1.0 THEN { SIGNAL Failure; RETURN }; sty.name[style] ← test; ApplyType[style,type2,nullName]; IF GetStyleName[style] # test THEN { SIGNAL Failure; RETURN }; IF GetFontFamily[style] # timesroman THEN { SIGNAL Failure; RETURN }; IF GetFontFace[style] # Bold THEN { SIGNAL Failure; RETURN }; IF GetFontSize[style] # 36.0 THEN { SIGNAL Failure; RETURN }; IF GetFontAlphabets[style] # CapsAndSmallCaps THEN { SIGNAL Failure; RETURN }; IF GetLineFormatting[style] # Centered THEN { SIGNAL Failure; RETURN }; IF GetUnderlining[style] # LettersAndDigits THEN { SIGNAL Failure; RETURN }; IF GetLeftIndent[style] # 50.0 THEN { SIGNAL Failure; RETURN }; IF GetRightIndent[style] # 55.0 THEN { SIGNAL Failure; RETURN }; IF GetFirstIndent[style] # 0.0 THEN { SIGNAL Failure; RETURN }; IF GetBodyIndent[style] # 0.0 THEN { SIGNAL Failure; RETURN }; IF GetTopIndent[style] # 40.0 THEN { SIGNAL Failure; RETURN }; IF GetBottomIndent[style] # 42.0 THEN { SIGNAL Failure; RETURN }; IF GetLeading[style] # 42.0 THEN { SIGNAL Failure; RETURN }; IF GetTopLeading[style] # 45.0 THEN { SIGNAL Failure; RETURN }; IF GetBottomLeading[style] # 48.0 THEN { SIGNAL Failure; RETURN }; IF GetVShift[style] # 0.0 THEN { SIGNAL Failure; RETURN }; IF GetMinGaps[style] # 5.0 THEN { SIGNAL Failure; RETURN }; cpy↑ ← sty↑; looks['b] ← TRUE; ApplyLooks[style, looks]; IF GetFontFace[style] # Bold THEN { SIGNAL Failure; RETURN }; sty.fontFace ← cpy.fontFace; IF sty↑ # cpy↑ THEN { SIGNAL Failure; RETURN }; -- look.b changed something else cpy↑ ← sty↑; looks['i] ← TRUE; ApplyLooks[style, looks]; IF GetFontFace[style] # BoldItalic THEN { SIGNAL Failure; RETURN }; sty.fontFace ← cpy.fontFace; IF sty↑ # cpy↑ THEN { SIGNAL Failure; RETURN }; -- looks changed something else -- Apply[style, error1]; -- Apply[style, error2]; }; Test; END.