Skip to content

PluginRequirements

Eduard Scherf edited this page Feb 15, 2022 · 1 revision

Each plugin which is intended to be included in the CrypTool2 release setup, MUST fulfill the following requirements:

  • The plugin is running stable (no uncaught exceptions, no known defects, no ongoing development which changes the publicly visible behaviour)
  • A project template (.cwm) is delivered and runs without errors
  • An XML documentation is provided
  • All text strings shown to the user are internationalized, a German and an English localization is provided
  • The plugin has been tested succesfully

Template

The template must be playable without entering any information. This means, the settings and input fields are predefined with some reasonable example values. A description must be either provided as embedded text or as XML help and must contain the following information:

  • Short Introduction
    • In this part you should describe in general what can be seen in the sample, i.e. what it does.
  • Inputs
    • What are the inputs to this sample (e.g. plaintext, key etc.), which part should the user change to see a difference
    • Are there some restrictions on the input, e.g. only letters allowed or exactly 16 characters/bytes needed.
  • Execution
    • Explain in a step-by-step manner what actions are being executed in the sample
    • Which plugins are being used and if not intutively clear, why
    • Later when it will be possible to mark different areas with colors, also describe what in those areas is happening
  • Output/Result
    • What is the result of this sample
    • What should be noted/learned by this sample?

Testing

Each plugin should provide one unit test. The minimum requirement for this test case is the following: for a given input/output pair the plugin algorithm shall be fed with the input values and the output values shall be checked whether they have been calculated correctly. The source of the input/output values shall be provided as text comment.

More sophisticated tests (multiple test cases, exhaustive data input, high coverage tests, gui tests) are nice-to-have, but not mandatory.

The test case shall use the same mechanism as the other existing test cases (see project DevTestMethods).