eina_quaternion: add test cases for interpolation functions.
authorVivek Ellur <vivek.ellur@samsung.com>
Thu, 22 Oct 2015 19:23:00 +0000 (12:23 -0700)
committerCedric BAIL <cedric@osg.samsung.com>
Thu, 22 Oct 2015 19:24:08 +0000 (12:24 -0700)
Summary:
Added test cases for quaternion_lerp, quaternion_slerp and quaternion_nlerp
functions

Signed-off-by: Vivek Ellur <vivek.ellur@samsung.com>
Reviewers: cedric

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D3209

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
src/tests/eina/eina_test_quaternion.c

index 5177678..058ca3c 100644 (file)
@@ -259,7 +259,6 @@ START_TEST(eina_test_quaternion_mul)
    eina_init();
 
    eina_quaternion_mul(&r, &p, &q);
-   fprintf(stderr, "%f %f %f %f\n", res.w, res.x, res.y, res.z);
    fail_if(!eina_quaternion_cmp(&r, &res));
 
    eina_shutdown();
@@ -379,6 +378,42 @@ START_TEST(eina_test_quaternion_f16p16_lerp)
 }
 END_TEST
 
+START_TEST(eina_test_quaternion_lerp)
+{
+   Eina_Quaternion rp = {0, 0, 1, 0};
+   Eina_Quaternion rq = {1, 0, 0, 0};
+   Eina_Quaternion rr, res = {0.5, 0.0, 0.5, 0.0};
+
+   eina_init();
+
+   eina_quaternion_lerp(&rr, &rp, &rq, 0.5);
+   fail_if(!eina_quaternion_cmp(&rr, &res));
+
+   eina_quaternion_set(&rp, 1, 1, 1, 0);
+   eina_quaternion_set(&rq, 0, 1, 1, 0);
+   eina_quaternion_set(&res, 0.5, 1.0, 1.0, 0.0);
+
+   eina_quaternion_lerp(&rr, &rp, &rq, 0.5);
+   fail_if(!eina_quaternion_cmp(&rr, &res));
+
+   eina_quaternion_set(&rp, 0, 0, 1, 0);
+   eina_quaternion_set(&rq, 1, 1, 1, 0);
+   eina_quaternion_set(&res, 0.5, 0.5, 1.0, 0.0);
+
+   eina_quaternion_slerp(&rr, &rp, &rq, 0.5);
+   fail_if(!eina_quaternion_cmp(&rr, &res));
+
+   eina_quaternion_set(&rp, 0, 0, 0, 0);
+   eina_quaternion_set(&rq, 1, 1, 1, 0);
+   eina_quaternion_set(&res, 1.0, 1.0, 1.0, 0.0);
+
+   eina_quaternion_nlerp(&rr, &rp, &rq, 1.0);
+   fail_if(!eina_quaternion_cmp(&rr, &res));
+
+   eina_shutdown();
+}
+END_TEST
+
 void
 eina_test_quaternion(TCase *tc)
 {
@@ -395,4 +430,5 @@ eina_test_quaternion(TCase *tc)
    //tcase_add_test(tc, eina_test_matrix_quaternion);
    tcase_add_test(tc, eina_test_matrix_recompose);
    tcase_add_test(tc, eina_test_quaternion_f16p16_lerp);
+   tcase_add_test(tc, eina_test_quaternion_lerp);
 }