**************** QA/QC Components **************** .. note:: In object-oriented programming, the open–closed principle states software entities *(classes, modules, functions, etc.)* should be open for extension, but closed for modification. Such an entity can allow its behaviour to be extended without modifying its source code. See also: https://en.wikipedia.org/wiki/Open%E2%80%93closed_principle The QA/QC components combine base components to complex components. They cache the results and have a specific behavior. To ensure that new QA/QC components can be added, they all inherit from the abstract base class **autom8qc.qaqc.base.QAQCComponent**. The abstract class has the abstract method *perform* and the property *results*. TestManager =========== .. figure:: ../figures/design/manager_design.svg :width: 100% .. autoclass:: autom8qc.qaqc.base.TestManager :show-inheritance: :noindex: .. autofunction:: autom8qc.qaqc.base.TestManager.perform :noindex: TestSequence ============ .. figure:: ../figures/design/sequence_design.svg :width: 100% .. autoclass:: autom8qc.qaqc.base.TestSequence :show-inheritance: :noindex: .. autofunction:: autom8qc.qaqc.base.TestSequence.perform :noindex: .. autofunction:: autom8qc.qaqc.base.TestSequence.add_test :noindex: TestGroup ========= .. figure:: ../figures/design/group_design.svg :width: 100% .. autoclass:: autom8qc.qaqc.base.TestGroup :show-inheritance: :noindex: .. autofunction:: autom8qc.qaqc.base.TestGroup.perform :noindex: .. autofunction:: autom8qc.qaqc.base.TestGroup.add :noindex: