Design: 02.01.03.01/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: Effects of <change structure identifier> on the
           element pointer

CHARACTERISTICS: nnnn

OPERATOR SCRIPT: passive test.

DESIGN:

The following is the "standard" CSS network for module 02.01.03.  This
CSS network will be used throughout to test the resulting state of the
CSS after execution of the <change structure identifier> function.
Before each test case the CSS state is completely reset.

                  100
                  /  \
                 /    \
               1/      \2
               /        \
              /          \
          101              102     120   130      140
           |              / | \     |    /|        |
           |2            /  |  \    |   / |       1|
           |           1/  2|  5\  2|  /3 |5       |
           |           /    |    \  | /   |        |
          103         /     |     \ |/    |       142
                   104     105     106   107
                   | |       |     |    / /\
                  2| |5     /|\    |   / /  \
                   | |    1/ | \2 1| 1/ /4   \5
                   109    /  |  \  | / /      \
                         /   |   \ |/ /       113
                       110   |    108
                             |     |
                             |     |2
                             |3    |
                             |     |
                             |    111
                             |   / |
                             | 1/  |
                             | /  3|
                             |/    |
                            114   115

Structure 111 in the CSS is set up as follows:

                                111
                                 |
       -----------------------------------------------------------
      |         | |         |      |      |     \  |  /         | |
      |1       2| |10       |3     |4     |5    6\ |8/11       7| |9
      |         | |         |      |      |       \|/           | |
     114        940        115    942    916      947           955

The nodes on the graph numbered 114 and 115 represent the
structure elements associated with <execute structure>.  The nodes
between (900 and 999) represent the structure elements associated
with <label> .  The arcs (1-11) represent the position of the
<execute structure> or <label> element within the structure.

TEST: #SR 4
      "If the original and resulting identifier are the same and the
       common structure is open and empty after execution of <change
       structure identifier> then the element pointer should be at zero."

comstr = 142
<open structure> comstr
<change structure identifier> comstr, comstr
pass/fail depending on (element pointer = 0)
<close structure>

TEST: #SR 4
      "If the original and resulting identifier are the same and the
       common structure is open and not empty after execution of
       <change structure identifier> then the element pointer should
       remain at its current position."

set edit mode to REPLACE
comstr = 111
<open structure> comstr
set element pointer to 4
<change structure identifier> comstr, comstr
pass/fail depending on (element pointer = 4)
<close structure>

TEST: #SR 5
      "If the original and resulting identifiers differ and the original
       structure is open after execution of <change structure identifier>
       then the open structure should be empty and the element pointer set
       to zero."

orgid = 111
resid = 130
set edit mode to INSERT
<open structure> orgid
set element pointer to 3
<change structure identifier> orgid, resid
pass/fail depending on (element pointer = 0)
<close structure>

TEST: #SR 6
      "If the original and resulting identifiers differ, the original
       structure does not exist and the resulting structure is open after
       execution of <change structure identifier> then the element pointer
       of the open structure should be set to zero."

orgid = 300
resid = 111
<open structure> resid
<change structure identifier> orgid, resid
pass/fail depending on (element pointer = 0)
<close structure>

TEST: #SR 6
      "If the original and resulting identifiers differ, the original
       structure does exist and is empty, and the resulting structure
       is open after execution of <change structure identifier> then
       the element pointer of the open structure should be set to zero."

orgid = 142
resid = 111
<open structure> resid
set element pointer to 2
<change structure identifier> orgid, resid
pass/fail depending on (element pointer = 0)
<close structure>

TEST: #SR 6
      "If the original and resulting identifiers differ, the original
       structure does exist and is not empty, and the resulting structure
       is open after execution of <change structure identifier> then the
       element pointer of the open structure should be set to the last
       element."

orgid = 111
resid = 104
<open structure> resid
set element pointer to 3
<change structure identifier> orgid, resid
pass/fail depending on (element pointer = 11)
<close structure>

END PROGRAM 3