# Validation Plan

the validation plan for CityDoctor is specified in [YAML](https://de.wikipedia.org/wiki/YAML).

For version 3.12.x and later, an example looks like this:
``` {.yaml .annotate}
globalParameters:
   numberOfRoundingPlaces: 8
   # in m
   minVertexDistance: 0.0001
   schematronPath: 'checkForSolid.xml'
useStreaming: true # (1)!
requirements:
   R_GE_R_TOO_FEW_POINTS:
      enabled: true
   R_GE_R_NOT_CLOSED:
      enabled: true
   R_GE_R_CONSECUTIVE_POINTS_SAME:
      enabled: true
   R_GE_R_SELF_INTERSECTION:
      enabled: true
   R_GE_S_MULTIPLE_CONNECTED_COMPONENTS:
      enabled: true
   R_GE_P_INTERIOR_DISCONNECTED:
      enabled: true
   R_GE_P_INTERSECTING_RINGS:
      enabled: true
   R_GE_P_NON_PLANAR:
      enabled: true
      parameters:
         # one of ("distance", "angle", "both")
         type: distance
         # in m
         distanceTolerance: 0.01
         # in degree
         angleTolerance: 1
   R_GE_P_HOLE_OUTSIDE:
      enabled: true
   R_GE_P_ORIENTATION_RINGS_SAME:
      enabled: true
   R_GE_P_INNER_RINGS_NESTED:
      enabled: true
   R_GE_S_TOO_FEW_POLYGONS:
      enabled: true
   R_GE_S_NOT_CLOSED:
      enabled: true
   R_GE_S_NON_MANIFOLD_EDGE:
      enabled: true
   R_GE_S_POLYGON_WRONG_ORIENTATION:
      enabled: true
   R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION:
      enabled: true
   R_GE_S_NON_MANIFOLD_VERTEX:
      enabled: true
   R_GE_S_SELF_INTERSECTION:
      enabled: true
   R_SE_BS_IS_WALL:
      enabled: false
      parameters:
            lowerAngle: '45'
            upperAngle: '135'
   R_SE_BS_IS_FLOOR:
      enabled: false
   R_SE_BS_GROUND_UNFRAGMENTED:
      enabled: false
   R_SE_BS_IS_GROUND:
      enabled: false
   R_SE_BS_IS_CEILING:
      enabled: false
```

1.  The parameter `useStreaming` is a switch to read a file piece by piece instead of reading the complete file before the check takes place. With this setting also files > 2GB can be checked without large RAM requirements.

In the validation plan you will find the same settings that are listed in the graphical user interface.

All requirements that are to be checked are listed under requirements. The semantic checks are deactivated by default. 