## Directory structure

Directory structure — How the package is organized.

This chapter describes how the files in the GtkImageView source package are organized. The information is mostly useful to those that want to hack on the code.

Directory and listing

`docs` | Directory that contains all reference documentation.

`tests`

This directory contains a test suite for GtkImageView along with some example programs.

The `ex-*.c` programs are simple example programs that demonstrate how the widget is supposed to be used.

`interactive.c` is small complete image viewer program that demonstrate most of the features GtkImageView has.

The file `repo-buildability.py` is a Python script that also must be run from the package root directory. It verifies that it is possible to checkout and build GtkImageView.

`src` | Source code for the widget.

### Test suite

GtkImageView has a test suite which is located in the `tests` directory. Each C program file named `test-*.c` in that directory is considered part of the test suite. The test suite must first be built before it can be run:

`$ make check`

Or when using waf:

`$ ./waf build tests`

From the project root directory, run the test suite by invoking the `alltests.py` Python script. You should see output like this:

`$ python ./tests/alltests.py`
`== test-viewport ==`
`test_viewport_when_image_is_completely_visible`
`...`
`3 tests passed.`

If waf is used, then the directory where the test binaries are located must be specified.

`$ python ./tests/alltests.py build/default/tests/`
`== test-viewport ==`
`test_viewport_when_image_is_completely_visible`
`...`
`3 tests passed.`

All tests should always pass. If some test does not, then there is a bug. GTK-warnings similar to this:

`(lt-test-scrollwin:27870): Gdk-CRITICAL **: gdk_gc_new: assertion `drawable != NULL' failed`

should also be treated as test failures unless they are explicitly expected. Due to limitations in GTK, there is no way to make them behave like real test failures.