Move main() and test code for basics to C++

This commit is contained in:
Eryn Wells 2013-09-12 16:16:29 -07:00
parent 6be100e28a
commit e8a6099158
4 changed files with 36 additions and 197 deletions

View file

@ -1,159 +0,0 @@
/* 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_add_vector)
{
Vector3 v, a, sum;
v = vector_init(1, 2, 3);
a = vector_init(4, 5, 6);
sum = vector_add_vector(v, a);
ck_assert(sum.x == 5);
ck_assert(sum.y == 7);
ck_assert(sum.z == 9);
a = vector_init(0, 0, 0);
sum = vector_add_vector(v, a);
ck_assert(sum.x == v.x);
ck_assert(sum.y == v.y);
ck_assert(sum.z == v.z);
a = vector_init(-3, -7, -13);
sum = vector_add_vector(v, a);
ck_assert(sum.x == -2);
ck_assert(sum.y == -5);
ck_assert(sum.z == -10);
}
END_TEST
START_TEST(test_vector_mul_scalar)
{
Vector3 v, p;
v = vector_init(1, 2, 3);
p = vector_mul_scalar(v, 7);
ck_assert(p.x == 7);
ck_assert(p.y == 14);
ck_assert(p.z == 21);
p = vector_mul_scalar(v, 0);
ck_assert(p.x == 0);
ck_assert(p.y == 0);
ck_assert(p.z == 0);
p = vector_mul_scalar(v, -13);
ck_assert(p.x == -13);
ck_assert(p.y == -26);
ck_assert(p.z == -39);
}
END_TEST
START_TEST(test_vector_sub_vector)
{
Vector3 v, s, diff;
v = vector_init(1, 2, 3);
s = vector_init(4, 5, 6);
diff = vector_sub_vector(v, s);
ck_assert(diff.x == -3);
ck_assert(diff.y == -3);
ck_assert(diff.z == -3);
}
END_TEST
START_TEST(test_vector_negate)
{
Vector3 v, neg;
v = vector_init(1, 2, 3);
neg = vector_negate(v);
ck_assert(neg.x == -1);
ck_assert(neg.y == -2);
ck_assert(neg.z == -3);
}
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(3, 5, 7);
b = vector_init(7, 3, 5);
ck_assert(vector_dot(a, b) == 71.0);
}
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_add_vector);
tcase_add_test(tc_vector, test_vector_mul_scalar);
tcase_add_test(tc_vector, test_vector_sub_vector);
tcase_add_test(tc_vector, test_vector_negate);
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;
}

20
test/test_basics.cc Normal file
View file

@ -0,0 +1,20 @@
/* test_basics.c
*
* Unit tests for the basics module.
*
* Eryn Wells <eryn@erynwells.me>
*/
#include "gtest/gtest.h"
#include "basics.h"
TEST(Vector3Test, OperatorAdd)
{
Vector3 v1(3, 2, 1), v2(4, 5, 6);
Vector3 sum = v1 + v2;
EXPECT_EQ(7, sum.x);
EXPECT_EQ(7, sum.y);
EXPECT_EQ(7, sum.z);
}

View file

@ -1,38 +0,0 @@
/* 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;
}

16
test/test_charles.cc Normal file
View file

@ -0,0 +1,16 @@
/* test_charles.cc
*
* Entry point for Charles unit tests.
*
* Eryn Wells <eryn@erynwells.me>
*/
#include "gtest/gtest.h"
int
main(int argc, char *argv[])
{
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}