Add test modules
This commit is contained in:
parent
ebcb67a0cc
commit
5a0d215789
5 changed files with 163 additions and 0 deletions
|
@ -11,6 +11,7 @@ Import('charles_lib')
|
|||
files = Split("""
|
||||
test_basics.c
|
||||
test_charles.c
|
||||
test_object.c
|
||||
""")
|
||||
|
||||
test_env = env.Clone()
|
||||
|
|
76
test/test_basics.c
Normal file
76
test/test_basics.c
Normal file
|
@ -0,0 +1,76 @@
|
|||
/* test_basics.c
|
||||
*
|
||||
* Unit tests for the basics module.
|
||||
*
|
||||
* Eryn Wells <eryn@erynwells.me>
|
||||
*/
|
||||
|
||||
#include "basics.h"
|
||||
#include "test_suites.h"
|
||||
|
||||
|
||||
START_TEST(test_vector_init)
|
||||
{
|
||||
Vector3 v = vector_init(1, 2, 3);
|
||||
ck_assert(v.x == 1.0);
|
||||
ck_assert(v.y == 2.0);
|
||||
ck_assert(v.z == 3.0);
|
||||
}
|
||||
END_TEST
|
||||
|
||||
|
||||
START_TEST(test_vector_length2)
|
||||
{
|
||||
Vector3 v = vector_init(2, 2, 1);
|
||||
ck_assert(vector_length2(v) == 9.0);
|
||||
}
|
||||
END_TEST
|
||||
|
||||
|
||||
START_TEST(test_vector_length)
|
||||
{
|
||||
Vector3 v = vector_init(2, 2, 1);
|
||||
ck_assert(vector_length(v) == 3.0);
|
||||
}
|
||||
END_TEST
|
||||
|
||||
|
||||
START_TEST(test_vector_dot)
|
||||
{
|
||||
Vector3 a = vector_init(1, 1, 1);
|
||||
Vector3 b = vector_init(1, 1, 1);
|
||||
ck_assert(vector_dot(a, b) == 3.0);
|
||||
|
||||
a = vector_init(2, 3, 4);
|
||||
b = vector_init(4, 4, 4);
|
||||
ck_assert(vector_dot(a, b) == (2 * 4) + (3 * 4) + (4 * 4));
|
||||
}
|
||||
END_TEST
|
||||
|
||||
|
||||
START_TEST(test_vector_normalize)
|
||||
{
|
||||
Vector3 v = vector_init(1, 0, 0);
|
||||
Vector3 norm_v = vector_normalize(v);
|
||||
ck_assert(v.x == norm_v.x);
|
||||
ck_assert(v.y == norm_v.y);
|
||||
ck_assert(v.z == norm_v.z);
|
||||
}
|
||||
END_TEST
|
||||
|
||||
|
||||
Suite *
|
||||
test_basics_create_suite()
|
||||
{
|
||||
Suite *s = suite_create("basics");
|
||||
|
||||
TCase *tc_vector = tcase_create("vector");
|
||||
tcase_add_test(tc_vector, test_vector_init);
|
||||
tcase_add_test(tc_vector, test_vector_length2);
|
||||
tcase_add_test(tc_vector, test_vector_length);
|
||||
tcase_add_test(tc_vector, test_vector_dot);
|
||||
tcase_add_test(tc_vector, test_vector_normalize);
|
||||
suite_add_tcase(s, tc_vector);
|
||||
|
||||
return s;
|
||||
}
|
38
test/test_charles.c
Normal file
38
test/test_charles.c
Normal file
|
@ -0,0 +1,38 @@
|
|||
/* test_charles.c
|
||||
*
|
||||
* Entry point for charles unit tests.
|
||||
*
|
||||
* Eryn Wells <eryn@erynwells.me>
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <check.h>
|
||||
#include "test_suites.h"
|
||||
|
||||
typedef Suite *(*SuiteCreator)();
|
||||
|
||||
SuiteCreator suite_creators[] = {
|
||||
test_basics_create_suite,
|
||||
test_object_create_suite,
|
||||
};
|
||||
|
||||
|
||||
int
|
||||
main(int argc, const char *argv[])
|
||||
{
|
||||
SRunner *runner = srunner_create(NULL);
|
||||
|
||||
// Creat the suites and add them to the runner.
|
||||
int ncreators = sizeof(suite_creators) / sizeof(SuiteCreator);
|
||||
for (int i = 0; i < ncreators; i++) {
|
||||
srunner_add_suite(runner, suite_creators[i]());
|
||||
}
|
||||
|
||||
// Run ALL the tests!
|
||||
srunner_run_all(runner, CK_VERBOSE);
|
||||
int nfailed = srunner_ntests_failed(runner);
|
||||
|
||||
srunner_free(runner);
|
||||
return (nfailed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
|
||||
}
|
30
test/test_object.c
Normal file
30
test/test_object.c
Normal file
|
@ -0,0 +1,30 @@
|
|||
/* test_object.c
|
||||
*
|
||||
* Unit tests for the object module.
|
||||
*
|
||||
* Eryn Wells <eryn@erynwells.me>
|
||||
*/
|
||||
|
||||
#include <check.h>
|
||||
#include "object.h"
|
||||
#include "test_suites.h"
|
||||
|
||||
|
||||
START_TEST(test_sphere_does_intersect)
|
||||
{
|
||||
|
||||
}
|
||||
END_TEST
|
||||
|
||||
|
||||
Suite *
|
||||
test_object_create_suite()
|
||||
{
|
||||
Suite *s = suite_create("object");
|
||||
|
||||
TCase *tc_sphere = tcase_create("sphere");
|
||||
tcase_add_test(tc_sphere, test_sphere_does_intersect);
|
||||
suite_add_tcase(s, tc_sphere);
|
||||
|
||||
return s;
|
||||
}
|
18
test/test_suites.h
Normal file
18
test/test_suites.h
Normal file
|
@ -0,0 +1,18 @@
|
|||
/* test_suites.h
|
||||
*
|
||||
* Declarations of test suite creator functions.
|
||||
*
|
||||
* Eryn Wells <eryn@erynwells.me>
|
||||
*/
|
||||
|
||||
#ifndef __TEST_SUITES_H__
|
||||
#define __TEST_SUITES_H__
|
||||
|
||||
#include <check.h>
|
||||
|
||||
|
||||
Suite *test_basics_create_suite();
|
||||
Suite *test_object_create_suite();
|
||||
|
||||
|
||||
#endif
|
Loading…
Add table
Add a link
Reference in a new issue