Design: 04.02.03.03/P03

This is an abstract, language-independent design. Grim details may be found in the corresponding source code. You may return to the documentation for the module containing this program design, or to the entire hierarchical table of topics covered by the PVT.


PROGRAM 3: Text rectangle size and concatenation point
           for vertical text orientation

CHARACTERISTICS: ynnn

OPERATOR SCRIPT: passive test.

DESIGN:

Open primary workstation
Establish specwt = specific primary workstation type

Throughout, use variable names:
wktype: workstation type
font:   text font
chxp:   character expansion factor
chsp:   character spacing
chh:    character height
txp:    text path
txal:   text alignment
str:    character string

<inquire text facilities> to determine:
   mnchxp = minimum character expansion factor
   mxchxp = maximum character expansion factor
   mnchh  = minimum character height
   mxchh  = maximum character height

<Inquire text extent> with:
   wktype = specwt
   font   = a randomly selected font; non-monospaced if possible
   chxp   = 1.0
   chsp   = 0.0
   chh    = 1.0
   txp    = DOWN
   txal   = LEFT, BOTTOM
   str    = "Inquire text extent"
to determine:
   nomw   = nominal width  = abs (txexrx(2) - txexrx(1))
   nomh   = nominal height = abs (txexry(2) - txexry(1))

*** *** ***   character expansion factor   *** *** ***

call CHTXRC with: nomw, nomh, specwt, font, str unchanged
   txor = vertical
   chxp = 1.7
   chsp = 0
   chh  = 1.0
   to determine: rectok, ccpok

TEST: #SR 6 13 16
      "The width of a text rectangle with zero character spacing
       and a vertical text path should expand in proportion to
       the character expansion factor."
pass/fail depending on (rectok)

TEST: #SR 6 10 13 17
      "With zero character spacing and a vertical text path, the
       concatenation point of a text rectangle should be
       unaffected by its expansion in proportion to the character
       expansion factor."
pass/fail depending on (ccpok)

call CHTXRC with: nomw, nomh, specwt, font, str unchanged
   txor = vertical
   chxp = 1.7 * mxchxp
   chsp = 0
   chh  = 1.0
   to determine: rectok, ccpok

TEST: #SR 6 13 14 16
      "The width of a text rectangle with zero character spacing
       and a vertical text path should expand in proportion to
       the character expansion factor, even when it exceeds the
       maximum for the workstation type."
pass/fail depending on (rectok)

TEST: #SR 6 10 13 14 17
      "With zero character spacing and a vertical text path, the
       concatenation point of a text rectangle should be
       unaffected by its expansion in proportion to the character
       expansion factor, even when it exceeds the maximum for the
       workstation type."
pass/fail depending on (ccpok)

call CHTXRC with: nomw, nomh, specwt, font, str unchanged
   txor = vertical
   chxp = 0.6 * mnchxp
   chsp = 0
   chh  = 1.0
   to determine: rectok, ccpok

TEST: #SR 6 13 14 16
      "The width of a text rectangle with zero character spacing
       and a vertical text path should expand in proportion to
       the character expansion factor, even when it is less than
       the minimum for the workstation type."
pass/fail depending on (rectok)

TEST: #SR 6 10 13 14 17
      "With zero character spacing and a vertical text path, the
       concatenation point of a text rectangle should be
       unaffected by its expansion in proportion to the character
       expansion factor, even when it is less than the minimum
       for the workstation type."
pass/fail depending on (ccpok)


*** *** ***   character height   *** *** ***

call CHTXRC with: nomw, nomh, specwt, font, str unchanged
   txor = vertical
   chxp = 1.0
   chsp = 0
   chh  = 1.9
   to determine: rectok, ccpok

TEST: #SR 8 9 13 16
      "The size of a text rectangle with character spacing = 0,
       character expansion factor = 1, and a vertical text path
       should expand in proportion to the character height."
pass/fail depending on (rectok)

TEST: #SR 8 9 10 13 17
      "With character spacing = 0, character expansion factor =
       1, and a vertical text path, the concatenation point of a
       text rectangle should reflect its expansion in proportion
       to the character height."
pass/fail depending on (ccpok)

call CHTXRC with: nomw, nomh, specwt, font, str unchanged
   txor = vertical
   chxp = 1.0
   chsp = 0
   chh  = 1.9 * mxchh
   to determine: rectok, ccpok

TEST: #SR 8 9 13 14 16
      "The size of a text rectangle with character spacing = 0,
       character expansion factor = 1, and a vertical text path
       should expand in proportion to the character height,
       even when it exceeds the maximum for the workstation
       type."
pass/fail depending on (rectok)

TEST: #SR 8 9 10 13 14 17
      "With character spacing = 0, character expansion factor =
       1, and a vertical text path, the concatenation point of a
       text rectangle should reflect its expansion in proportion
       to the character height, even when it exceeds the maximum
       for the workstation type."
pass/fail depending on (ccpok)

call CHTXRC with: nomw, nomh, specwt, font, str unchanged
   txor = vertical
   chxp = 1.0
   chsp = 0
   chh  = 0.6 * mnchh
   to determine: rectok, ccpok

TEST: #SR 8 9 13 14 16
      "The size of a text rectangle with character spacing = 0,
       character expansion factor = 1, and a vertical text path
       should expand in proportion to the character height,
       even when it is less than the minimum for the workstation
       type."
pass/fail depending on (rectok)

TEST: #SR 8 9 10 13 14 17
      "With character spacing = 0, character expansion factor =
       1, and a vertical text path, the concatenation point of a
       text rectangle should reflect its expansion in proportion
       to the character height, even when it is less than the
       minimum for the workstation type."
pass/fail depending on (ccpok)


*** *** ***   character spacing   *** *** ***

call CHTXRC with: nomw, nomh, specwt, font, str unchanged
   txor = vertical
   chxp = 1.0
   chsp = 0.3
   chh  = 1.0
   to determine: rectok, ccpok

TEST: #SR 7 13 16
      "The height of a text rectangle with character expansion
       factor = 1, character height = 1, and a vertical text
       path should increase by the character spacing times one
       less than the number of characters."
pass/fail depending on (rectok)

TEST: #SR 7 10 13 17 18
      "With character expansion factor = 1, character height = 1,
       and a vertical text path, the concatenation point of a
       text rectangle should reflect its increased size due to
       character spacing."
pass/fail depending on (ccpok)

*** *** ***   combined attributes   *** *** ***

call CHTXRC with: nomw, nomh, specwt, font, str unchanged
   txor = vertical
   chxp = 35.3
   chsp = 6.2
   chh  = 21.1
   to determine: rectok, ccpok

TEST: #SR 6 7 8 9 13 16
      "The size of a text rectangle with a vertical text path
       should reflect the combined effects of large values for
       character expansion factor, character spacing, and
       character height."
pass/fail depending on (rectok)

TEST: #SR 6 7 8 9 10 13 17 18
      "With large values for character expansion factor,
       character spacing, and character height, and a vertical
       text path, the concatenation point of a text rectangle
       should reflect its increased size."
pass/fail depending on (ccpok)

call CHTXRC with: nomw, nomh, specwt, font, str unchanged
   txor = vertical
   chxp = .035
   chsp = .0062
   chh  = .021
   to determine: rectok, ccpok

TEST: #SR 6 7 8 9 13 16
      "The size of a text rectangle with a vertical text path
       should reflect the combined effects of small values for
       character expansion factor, character spacing, and
       character height."
pass/fail depending on (rectok)

TEST: #SR 6 7 8 9 10 13 17 18
      "With small values for character expansion factor,
       character spacing, and character height, and a vertical
       text path, the concatenation point of a text rectangle
       should reflect its decreased size."
pass/fail depending on (ccpok)


call CHTXRC with: nomw, nomh, specwt, font, str unchanged
   txor = vertical
   chxp = -8.035
   chsp =  -.09
   chh  =   .021
   to determine: rectok, ccpok

TEST: #SR 6 7 8 9 13 16
      "The size of a text rectangle with a vertical text path
       should reflect the combined effects of negative values for
       character expansion factor and character spacing."
pass/fail depending on (rectok)

TEST: #SR 6 7 8 9 10 13 17 18
      "With negative values for character expansion factor and
       character spacing, and a vertical text path, the concatenation
       point of a text rectangle should reflect its altered size."
pass/fail depending on (ccpok)

call CHTXRC with: nomw, nomh, specwt, font, str unchanged
   txor = vertical
   chxp =   .035
   chsp =  -.03
   chh  = -9.02
   to determine: rectok, ccpok

TEST: #SR 6 7 8 9 13 16
      "The size of a text rectangle with a vertical text path
       should reflect the combined effects of negative values for
       character spacing and character height."
pass/fail depending on (rectok)

TEST: #SR 6 7 8 9 10 13 17 18
      "With negative values for character spacing and character
       height, and a vertical text path, the concatenation point of
       a text rectangle should reflect its altered size."
pass/fail depending on (ccpok)

*** *** ***   Excessive character spacing   *** *** ***

<Inquire text extent> with:
   wktype = specwt
   font   = 2
   chxp   = 1.0
   chsp   = 0.0
   chh    = 1.0
   txp    = DOWN
   txal   = LEFT, BOTTOM
   str    = "qqqq"
to determine:
   nomchh  = nominal character height = abs (txexry(2) - txexry(1)) / 4
   nomw    = nominal string width     = abs (txexrx(2) - txexrx(1))

call CHMONO with: nomchh, nomw, specwt, font, str unchanged
   txor = vertical
   chxp =  6.35
   chsp = -8.51 * nomchh
   chh  =  -.021
   to determine: rok1, ccpok1

call CHMONO with: nomchh, nomw, specwt, font, str unchanged
   txor = vertical
   chxp =  -.065
   chsp = -1.01 * nomchh
   chh  = -7.21
   to determine: rok2, ccpok2

TEST: #SR 6 7 8 9 13 16
      "The size of a text rectangle with a vertical text path
       should reflect the effect of negative character spacing
       of greater magnitude than the height of a single
       character."
pass/fail depending on (rok1 and rok2)

END PROGRAM 3