Design: 02.03.03/P07

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 7: ISS and filters

CHARACTERISTICS: nnnn

OPERATOR SCRIPT: passive test.

DESIGN:

Structure #101:
1. add names to set: 3,4,5
2. execute structure 102

Structure #102:
1. polymarker at 1,2,3

Throughout, keep fixed for ISS:
SRP = 1,2,3
search distance = 0.1
search ceiling = 1
clipping flag = OFF

*** *** *** ***   One normal and inverted filter   *** *** *** ***

TEST: #SR 3 4 5 6 10 18 19 20
      "An eligible primitive should be found if its non-null
       nameset is accepted by a single non-null normal filter and
       rejected by a single non-null inverted filter."

ISS with
  starting path =   101,1
  normal filter =   incl: 5,6,7; excl: 8,9
  inverted filter = incl: 1,2;   excl: 8,9

pass/fail depending on (found path = 101,2, 102,1)

TEST: #SR 3 4 5 6 10 18 19 20
      "An eligible primitive should not be found if its non-null
       nameset is rejected by a single non-null normal filter and
       also by a single non-null inverted filter."

ISS with
  starting path =   101,1
  normal filter =   incl: 5,6,7; excl: 3,8,9
  inverted filter = incl: 1,2;   excl: 8,9

pass/fail depending on (found path = empty)

TEST: #SR 3 4 5 6 10 18 19 20
      "An eligible primitive should not be found if its non-null
       nameset is accepted by a single non-null normal filter but
       also by a single non-null inverted filter."

ISS with
  starting path =   101,1
  normal filter =   incl: 4,6,7; excl: 9,1
  inverted filter = incl: 3;     excl: 8,9

pass/fail depending on (found path = empty)

TEST: #SR 3 4 5 6 10 18 19 20
      "An eligible primitive should not be found if its non-null
       nameset is rejected by a single non-null normal filter and
       accepted by a single non-null inverted filter."

ISS with
  starting path =   101,1
  normal filter =   incl: 6,7;  excl: 9,1,3
  inverted filter = incl: 11,3; excl: 8,9

pass/fail depending on (found path = empty)

*** *** ***   One normal or inverted filter, but not both   *** *** ***

TEST: #SR 3 4 5 6 10 18 19 20
      "An eligible primitive should be found if its non-null
       nameset is accepted by a single non-null normal filter and
       there are no inverted filters."

ISS with
  starting path =   101,1
  normal filter =   incl: 5,6,7; excl: 8,9
  inverted filter = none

pass/fail depending on (found path = 101,2, 102,1)

TEST: #SR 3 4 5 6 10 18 19 20
      "An eligible primitive should not be found if its non-null
       nameset is rejected by a single non-null normal filter and
       there are no inverted filters."

ISS with
  starting path =   101,1
  normal filter =   incl: 2,6,7; excl: 8,9
  inverted filter = none

pass/fail depending on (found path = empty)

TEST: #SR 3 4 5 6 10 18 19 20
      "An eligible primitive should not be found if its non-null
       nameset is accepted by a single non-null inverted filter and
       there are no normal filters."

ISS with
  starting path =   101,1
  normal filter =   none
  inverted filter = incl: 2,6,4,7; excl: 8,9

pass/fail depending on (found path = empty)

TEST: #SR 3 4 5 6 10 18 19 20
      "An eligible primitive should be found if its non-null
       nameset is rejected by a single non-null inverted filter and
       there are no normal filters."

ISS with
  starting path =   101,1
  normal filter =   none
  inverted filter = incl: empty; excl: 8,9

pass/fail depending on (found path = 101,2, 102,1)

*** *** ***   No filters   *** *** ***

TEST: #SR 3 4 5 6 10 18 19 20
      "An eligible primitive should be found if its nameset is
       non-null and there is no normal or inverted filter."

ISS with
  starting path =   101,1
  normal filter =   none
  inverted filter = none

pass/fail depending on (found path = 101,2, 102,1)

TEST: #SR 3 4 5 6 10 18 19 20
      "An eligible primitive should be found if its nameset is
       null and there is no normal or inverted filter."

ISS with
  starting path =   102,0
  normal filter =   none
  inverted filter = none

pass/fail depending on (found path = 102,1)

*** *** *** ***   Null nameset   *** *** *** ***

TEST: #SR 3 4 5 6 10 18 19 20
      "An eligible primitive should not be found if its nameset
       is null and there is at least one normal filter."

ISS with
  starting path =   102,0
  normal filter =   incl: empty; excl: 1,2
  inverted filter = incl: 11,3;  excl: 8,9,4

pass/fail depending on (found path = empty)

TEST: #SR 3 4 5 6 10 18 19 20
      "An eligible primitive should be found if its nameset
       is null and there is no normal filter."

ISS with
  starting path =   102,0
  normal filter =   none
  inverted filter = incl: empty; excl: 8,9

pass/fail depending on (found path = 102,1)

*** *** *** ***   Maximum number of filters   *** *** *** ***

<inquire phigs facilities> to determine:
  mxnfl = maximum length of normal filter list
  mxifl = maximum length of inverted filter list

TEST: #SR 21
      "<Inquire phigs facilities> should report the maximum
       lengths of both the normal and inverted filter lists to be
       at least 1."

pass/fail depending on (mxnfl > 0 and mxifl > 0)

if (mxnfl < 2 or mxifl < 2) then
   message: skipping multiple filter tests
   goto end_mult_filter
endif

mxntst = min (mxnfl, 50)
mxitst = min (mxifl, 50)

TEST: #SR 21 22
      "ISS should be able to specify as many filters in a list as
       the maximum reported by <inquire phigs facilities>."

inval = 3
for n from 1 to mxntst
   if (inval > 4) then
      inval = 3
   else
      inval = inval+1
   endif
   set up nth normal filter inclusion set as 1,inval
   set up nth normal filter exclusion set as 8,9
next n

inval = 5
for n from 1 to mxitst
   if (inval > 4) then
      inval = 2
   else
      inval = inval+1
   endif
   set up nth inverted filter inclusion set as 1,inval
   set up nth inverted filter exclusion set as inval,8
next n

ISS with
  starting path =   101,1
  normal filter =   as set up
  inverted filter = as set up

pass/fail depending on
   (no error from ISS and found path = 101,2, 102,1)

*** *** *** ***   Multiple filters   *** *** *** ***

TEST: #SR 3 4 5 6 10 18 19 20
      "An eligible primitive should be found if its nameset is
       accepted all the normal filters and rejected by all the
       inverted filters."

ISS with
  starting path =    101,1
  normal filters =   incl: 5,3,6,7; excl: 8,9
                     incl: 3;       excl: empty
  inverted filters = incl: 1,2;     excl: 8,9
                     incl: 3,1,2;   excl: 4,8,9

pass/fail depending on (found path = 101,2, 102,1)

TEST: #SR 3 4 5 6 10 18 19 20
      "An eligible primitive should not be found if its
       nameset is rejected by at least one normal filter."

ISS with
  starting path =    101,1
  normal filters =   incl: 5,3,6,7; excl: 8,9
                     incl: 3;       excl: 3
  inverted filters = incl: 1,2;     excl: 8,9
                     incl: 3,1,2;   excl: 4,8,9

pass/fail depending on (found path = empty)

TEST: #SR 3 4 5 6 10 18 19 20
      "An eligible primitive should not be found if its
       nameset is accepted by at least one inverted filter."

ISS with
  starting path =    101,1
  normal filters =   incl: 5,3,6,7; excl: 8,9
                     incl: 3;       excl: 2,1
  inverted filters = incl: 4,1,2;   excl: 8,9
                     incl: 3,1,2;   excl: 4,8,9

pass/fail depending on (found path = empty)

end_mult_filter:

END PROGRAM 7