## OilTest OilTest — Test and profile function implementations. |

## Synopsis

                        OilTest;
    void                (*OilTestFunction)                  (OilTest *test);
    #define             OIL_TEST_HEADER
    #define             OIL_TEST_FOOTER
    OilTest*            oil_test_new                        (OilFunctionClass *klass);
    void                oil_test_init                       (OilTest *test);
    void                oil_test_free                       (OilTest *test);
    void                oil_test_set_iterations             (OilTest *test,
                                                             int iterations);
    void                oil_test_check_ref                  (OilTest *test);
    int                 oil_test_check_impl                 (OilTest *test,
                                                             OilFunctionImpl *impl);
    void                oil_test_cleanup                    (OilTest *test);
    void*               oil_test_get_source_data            (OilTest *test,
                                                             OilArgType arg_type);
    int                 oil_test_get_value                  (OilTest *test,
                                                             OilArgType arg_type);
    void                oil_test_set_test_footer            (OilTest *test,
                                                             OilParameter *p,
                                                             int test_footer);
    void                oil_test_set_test_header            (OilTest *test,
                                                             OilParameter *p,
                                                             int test_header);

## Description

## Details

### OilTest

    typedef struct {
    } OilTest;

An opaque structure describing how to test an OilFunctionImpl for an OilFunctionClass.

### OilTestFunction ()

    void                (*OilTestFunction)                  (OilTest *test);

Typedef for functions that initialize special values in source arrays for a particular function class.

`test` : | the `OilTest` structure

### OIL_TEST_HEADER

    #define OIL_TEST_HEADER 256

Default number of bytes that are prepended to the array test area.

### OIL_TEST_FOOTER

    #define OIL_TEST_FOOTER 256

Default number of bytes that are appended to the array test area.

### oil_test_new ()

    OilTest*            oil_test_new                        (OilFunctionClass *klass);

Creates a new OilTest for the OilFunctionClass represented by `klass`.

`klass` : | an OilFunctionClass
Returns : | the new OilTest

### oil_test_init ()

    void                oil_test_init                       (OilTest *test);

Intializes `test`.

FIXME: needs work

`test` : | the OilTest

### oil_test_free ()

    void                oil_test_free                       (OilTest *test);

Frees memory associated with `test`.

`test` : | the OilTest

### oil_test_set_iterations ()

    void                oil_test_set_iterations             (OilTest *test,
                                                             int iterations);

Sets the number of iterations of `test` to `iterations`.

`test` : | the OilTest
`iterations` : | the number of iterations

### oil_test_check_ref ()

    void                oil_test_check_ref                  (OilTest *test);

Runs the test specified by `test` on the reference function of the class being tested.

`test` : | the OilTest

### oil_test_check_impl ()

    int                 oil_test_check_impl                 (OilTest *test,
                                                             OilFunctionImpl *impl);

Runs the testing procedure described by `test` on the implementation `impl`.

`test` : | the OilTest
`impl` : | an OilFunctionImpl
Returns : | 1 if `impl` passes the test, 0 if it fails

### oil_test_cleanup ()

    void                oil_test_cleanup                    (OilTest *test);

Cleans up `test`.

FIXME: needs work

`test` : | the OilTest

### oil_test_get_source_data ()

    void*               oil_test_get_source_data            (OilTest *test,
                                                             OilArgType arg_type);

`test` : |
`arg_type` : |
Returns : |

### oil_test_get_value ()

    int                 oil_test_get_value                  (OilTest *test,
                                                             OilArgType arg_type);

`test` : |
`arg_type` : |
Returns : |

### oil_test_set_test_footer ()

    void                oil_test_set_test_footer            (OilTest *test,
                                                             OilParameter *p,
                                                             int test_footer);

Sets the number of bytes of guard footer for `p` to `test_footer`.

`test` : | the OilTest
`p` : | the OilParameter to change the footer for
`test_footer` : | the number of bytes of guard footer

### oil_test_set_test_header ()

    void                oil_test_set_test_header            (OilTest *test,
                                                             OilParameter *p,
                                                             int test_header);

Sets the number of bytes of guard header for `p` to `test_header`.

`test` : | the OilTest
`p` : | the OilParameter to change the header for
`test_header` : | the number of bytes of guard header