48e27400d23e2586530cf943524e50c74d79a915Tony Bamford# The contents of this file are subject to the terms of the Common Development and
48e27400d23e2586530cf943524e50c74d79a915Tony Bamford# Distribution License (the License). You may not use this file except in compliance with the
48e27400d23e2586530cf943524e50c74d79a915Tony Bamford# License.
48e27400d23e2586530cf943524e50c74d79a915Tony Bamford#
48e27400d23e2586530cf943524e50c74d79a915Tony Bamford# You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the
48e27400d23e2586530cf943524e50c74d79a915Tony Bamford# specific language governing permission and limitations under the License.
48e27400d23e2586530cf943524e50c74d79a915Tony Bamford#
48e27400d23e2586530cf943524e50c74d79a915Tony Bamford# When distributing Covered Software, include this CDDL Header Notice in each file and include
48e27400d23e2586530cf943524e50c74d79a915Tony Bamford# the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL
48e27400d23e2586530cf943524e50c74d79a915Tony Bamford# Header, with the fields enclosed by brackets [] replaced by your own identifying
48e27400d23e2586530cf943524e50c74d79a915Tony Bamford# information: "Portions copyright [year] [name of copyright owner]".
48e27400d23e2586530cf943524e50c74d79a915Tony Bamford#
48e27400d23e2586530cf943524e50c74d79a915Tony Bamford# Copyright 2015 ForgeRock AS.
48e27400d23e2586530cf943524e50c74d79a915Tony Bamford
48e27400d23e2586530cf943524e50c74d79a915Tony Bamford
b2fed4601a417f26ae930973f98084b83ab8447aTony BamfordThis directory contains the unit tests for the C OpenAM Web Policy Agent.
48e27400d23e2586530cf943524e50c74d79a915Tony Bamford
4c6011bfcf29cd75d6af86f192d709221f4d5d3aMareks MalnacsTests are placed in C source files and will look something like the following.
b2fed4601a417f26ae930973f98084b83ab8447aTony BamfordLet us assume this is the file test_blah.c. You will definitely need cmocka.h and
b2fed4601a417f26ae930973f98084b83ab8447aTony Bamfordfor that you will need setjmp.h.
b2fed4601a417f26ae930973f98084b83ab8447aTony Bamford-------------------------------------------------------------------------------------
48e27400d23e2586530cf943524e50c74d79a915Tony Bamford
48e27400d23e2586530cf943524e50c74d79a915Tony Bamford
b2fed4601a417f26ae930973f98084b83ab8447aTony Bamford#include <stdio.h>
b2fed4601a417f26ae930973f98084b83ab8447aTony Bamford#include <string.h>
b2fed4601a417f26ae930973f98084b83ab8447aTony Bamford#include <stdlib.h>
b2fed4601a417f26ae930973f98084b83ab8447aTony Bamford#include <stdint.h>
b2fed4601a417f26ae930973f98084b83ab8447aTony Bamford#include <setjmp.h>
48e27400d23e2586530cf943524e50c74d79a915Tony Bamford
b2fed4601a417f26ae930973f98084b83ab8447aTony Bamford#include "cmocka.h"
48e27400d23e2586530cf943524e50c74d79a915Tony Bamford
48e27400d23e2586530cf943524e50c74d79a915Tony Bamford/**
48e27400d23e2586530cf943524e50c74d79a915Tony Bamford * Test the blah functionality.
48e27400d23e2586530cf943524e50c74d79a915Tony Bamford */
48e27400d23e2586530cf943524e50c74d79a915Tony Bamfordvoid test_blah1(void** state) {
48e27400d23e2586530cf943524e50c74d79a915Tony Bamford
48e27400d23e2586530cf943524e50c74d79a915Tony Bamford // avoids "state not used" messages
48e27400d23e2586530cf943524e50c74d79a915Tony Bamford (void)state;
48e27400d23e2586530cf943524e50c74d79a915Tony Bamford
48e27400d23e2586530cf943524e50c74d79a915Tony Bamford assert_int_equal(AM_OK, AM_OK);
48e27400d23e2586530cf943524e50c74d79a915Tony Bamford
48e27400d23e2586530cf943524e50c74d79a915Tony Bamford // etc.
48e27400d23e2586530cf943524e50c74d79a915Tony Bamford}
48e27400d23e2586530cf943524e50c74d79a915Tony Bamford
48e27400d23e2586530cf943524e50c74d79a915Tony Bamfordvoid test_blah2(void** state) {
48e27400d23e2586530cf943524e50c74d79a915Tony Bamford
48e27400d23e2586530cf943524e50c74d79a915Tony Bamford // etc. etc.
48e27400d23e2586530cf943524e50c74d79a915Tony Bamford}
48e27400d23e2586530cf943524e50c74d79a915Tony Bamford
48e27400d23e2586530cf943524e50c74d79a915Tony Bamford
b2fed4601a417f26ae930973f98084b83ab8447aTony Bamford-------------------------------------------------------------------------------------
b2fed4601a417f26ae930973f98084b83ab8447aTony BamfordYou can build all the tests with:
b2fed4601a417f26ae930973f98084b83ab8447aTony Bamford
b2fed4601a417f26ae930973f98084b83ab8447aTony Bamford make tests
b2fed4601a417f26ae930973f98084b83ab8447aTony Bamford
b2fed4601a417f26ae930973f98084b83ab8447aTony Bamfordor alternatively if you only want to run the tests in the file, say, test_blah.c then use
b2fed4601a417f26ae930973f98084b83ab8447aTony Bamfordthis (note you must drop the ".c" suffix from the filename):
b2fed4601a417f26ae930973f98084b83ab8447aTony Bamford
b2fed4601a417f26ae930973f98084b83ab8447aTony Bamford make "TESTS=test_blah" tests
b2fed4601a417f26ae930973f98084b83ab8447aTony Bamford
b2fed4601a417f26ae930973f98084b83ab8447aTony BamfordMake invokes sed to produce a number of files, all of which can be ignored except for
b2fed4601a417f26ae930973f98084b83ab8447aTony Bamford
b2fed4601a417f26ae930973f98084b83ab8447aTony Bamford build/tests/tests.h
b2fed4601a417f26ae930973f98084b83ab8447aTony Bamford
b2fed4601a417f26ae930973f98084b83ab8447aTony Bamfordwhich will look something like this:
b2fed4601a417f26ae930973f98084b83ab8447aTony Bamford
b2fed4601a417f26ae930973f98084b83ab8447aTony Bamford-------------------------------------------------------------------------------------
b2fed4601a417f26ae930973f98084b83ab8447aTony Bamfordvoid test_blah1(void** state) ;
b2fed4601a417f26ae930973f98084b83ab8447aTony Bamfordvoid test_blah2(void** state) ;
b2fed4601a417f26ae930973f98084b83ab8447aTony Bamfordconst struct CMUnitTest tests[] = {
b2fed4601a417f26ae930973f98084b83ab8447aTony Bamfordcmocka_unit_test(test_blah1),
b2fed4601a417f26ae930973f98084b83ab8447aTony Bamfordcmocka_unit_test(test_blah2),
b2fed4601a417f26ae930973f98084b83ab8447aTony Bamford};
b2fed4601a417f26ae930973f98084b83ab8447aTony Bamford-------------------------------------------------------------------------------------
48e27400d23e2586530cf943524e50c74d79a915Tony Bamford
b2fed4601a417f26ae930973f98084b83ab8447aTony BamfordNote that tests are only included in the array if:
b2fed4601a417f26ae930973f98084b83ab8447aTony Bamford- the return value is void
b2fed4601a417f26ae930973f98084b83ab8447aTony Bamford- function has single void** parameter called "state"
b2fed4601a417f26ae930973f98084b83ab8447aTony Bamford- the function is "public", as opposed to static
b2fed4601a417f26ae930973f98084b83ab8447aTony Bamford- the function name starts with "test_"