Praktikum Bildbearbeitung

Testen mit Unix Werkzeugen

Negativtest

auf einer shell (bash):


$ ./bba --input⏎
terminate called after throwing an instance of 'std::runtime_error'
  what():  Nicht genügend Argumente.
Abgebrochen (Speicherabzug geschrieben)
      

$ ./bba --input || echo OK⏎
terminate called after throwing an instance of 'std::runtime_error'
  what():  Nicht genügend Argumente.
Abgebrochen (Speicherabzug geschrieben)
OK
      

$ { ./bba --input ; } 2>/dev/null || echo OK⏎
OK
      

Erzeugen von Bilddaten

test.pgm:

P2
# mein erstes Testbild
4 2
255
0 1 2 3
16 32 128 255
Dokumentation Portable Anymap. Zeilenumbruch am Ende nicht vergessen.

Binärdaten anstelle von ASCII


$ ./bba --input test.pgm --output ausgabe.pgm⏎
$ diff --brief test.pgm ausgabe.pgm && echo OK⏎
Dateien test.pgm und ausgabe.pgm sind verschieden.
      

$ cat ausgabe.pgm⏎
P6
# Generated by OpenCV 4.2.0
4 2
255
…
      

Farbe anstelle von Graustufen

nach dem Ändern des Programms:


$ ./bba --input test.pgm --output ausgabe.pgm⏎
$ diff --brief test.pgm ausgabe.pgm && echo OK⏎
Dateien test.pgm und ausgabe.pgm sind verschieden.
      

$ cat ausgabe.pgm⏎
P3
# Generated by OpenCV 4.2.0
4 2
255
   0   0   0     1   1   1     2   2   2     3   3   3
  16  16  16    32  32  32   128 128 128   255 255 255
      

Unterschiede in der Formatierung

nach dem Ändern des Programms:


$ ./bba --input test.pgm --output ausgabe.pgm⏎
$ diff --brief test.pgm ausgabe.pgm && echo OK⏎
Dateien test.pgm und ausgabe.pgm sind verschieden.
      

$ diff test.pgm ausgabe.pgm⏎
< # mein erstes Testbild
< 0 1 2 3
< 16 32 128 255
---
> # Generated by OpenCV 4.2.0
>    0   1   2   3
>   16  32 128 255
      

Testen mit bbacheck


$ ./bbacheck.py --help
      

$ ./bbacheck.py --dut aufg0/build/bba aufg0/test.json
      

Ein Testfall

[
    {
        "title": "Bild laden und unverändert speichern",
        "command": "{DUT} --input {IMGDIR}test.pgm --printpnm",
        "expect": {
            "pixels": [0, 1, 2, 3, 16, 32, 128, 255],
            "image": "{IMGDIR}test.pgm"
        }
    }
]

Datei muss als Unicode gespeichert sein oder Umlaute müssen maskiert werden.

Einfachen Test ausführen


$ ./bbacheck.py --dut aufg0/build/bba aufg0/test.json⏎
Teste nun "Bild laden und unverändert speichern"…
Befehl ist "aufg0/build/bba --input images/test.pgm --printpnm"
OK
Alles klar gut und so und von dem Test IHM sein Ende.