| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292 |
- #include "test_common.h"
- TEST_START
- #if PIKA_SYNTAX_LEVEL == PIKA_SYNTAX_LEVEL_MAXIMAL
- TEST(PikaMath, test1) {
- /* init */
- g_PikaMemInfo.heapUsedMax = 0;
- PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
- /* run */
- __platform_printf("BEGIN\r\n");
- pikaVM_runSingleFile(pikaMain, "test/python/PikaMath/Quaternion_test.py");
- /* collect */
- /* assert */
- /* deinit */
- obj_deinit(pikaMain);
- EXPECT_EQ(pikaMemNow(), 0);
- }
- TEST(PikaMath, quat_add) {
- /* init */
- g_PikaMemInfo.heapUsedMax = 0;
- PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
- /* run */
- obj_run(pikaMain,
- "import PikaMath\n"
- "a = PikaMath.Quaternion()\n"
- "b = PikaMath.Quaternion()\n"
- "a.add(b)\n"
- "res1=a.get(0)\n"
- "res2=a.get(1)\n"
- "res3=a.get(2)\n"
- "res4=a.get(3)\n");
- /* collect */
- float res1 = obj_getFloat(pikaMain, "res1");
- float res2 = obj_getFloat(pikaMain, "res2");
- float res3 = obj_getFloat(pikaMain, "res3");
- float res4 = obj_getFloat(pikaMain, "res4");
- /* assert */
- EXPECT_FLOAT_EQ(res1, 0.0);
- EXPECT_FLOAT_EQ(res2, 0.0);
- EXPECT_FLOAT_EQ(res3, 0.0);
- EXPECT_FLOAT_EQ(res4, 2.0);
- /* deinit */
- obj_deinit(pikaMain);
- EXPECT_EQ(pikaMemNow(), 0);
- }
- TEST(PikaMath, quat_sub) {
- /* init */
- g_PikaMemInfo.heapUsedMax = 0;
- PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
- /* run */
- obj_run(pikaMain,
- "import PikaMath\n"
- "a = PikaMath.Quaternion()\n"
- "b = PikaMath.Quaternion()\n"
- "a.sub(b)\n"
- "res1=a.get(0)\n"
- "res2=a.get(1)\n"
- "res3=a.get(2)\n"
- "res4=a.get(3)\n");
- /* collect */
- float res1 = obj_getFloat(pikaMain, "res1");
- float res2 = obj_getFloat(pikaMain, "res2");
- float res3 = obj_getFloat(pikaMain, "res3");
- float res4 = obj_getFloat(pikaMain, "res4");
- /* assert */
- EXPECT_FLOAT_EQ(res1, 0.0);
- EXPECT_FLOAT_EQ(res2, 0.0);
- EXPECT_FLOAT_EQ(res3, 0.0);
- EXPECT_FLOAT_EQ(res4, 0.0);
- /* deinit */
- obj_deinit(pikaMain);
- EXPECT_EQ(pikaMemNow(), 0);
- }
- TEST(PikaMath, quat_mul) {
- /* init */
- g_PikaMemInfo.heapUsedMax = 0;
- PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
- /* run */
- obj_run(pikaMain,
- "import PikaMath\n"
- "a = PikaMath.Quaternion()\n"
- "b = PikaMath.Quaternion()\n"
- "a.mul(b)\n"
- "res1=a.get(0)\n"
- "res2=a.get(1)\n"
- "res3=a.get(2)\n"
- "res4=a.get(3)\n");
- /* collect */
- float res1 = obj_getFloat(pikaMain, "res1");
- float res2 = obj_getFloat(pikaMain, "res2");
- float res3 = obj_getFloat(pikaMain, "res3");
- float res4 = obj_getFloat(pikaMain, "res4");
- /* assert */
- EXPECT_FLOAT_EQ(res1, 0.0);
- EXPECT_FLOAT_EQ(res2, 0.0);
- EXPECT_FLOAT_EQ(res3, 0.0);
- EXPECT_FLOAT_EQ(res4, 1.0);
- /* deinit */
- obj_deinit(pikaMain);
- EXPECT_EQ(pikaMemNow(), 0);
- }
- TEST(PikaMath, quat_set) {
- /* init */
- g_PikaMemInfo.heapUsedMax = 0;
- PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
- /* run */
- obj_run(pikaMain,
- "import PikaMath\n"
- "a = PikaMath.Quaternion()\n"
- "a.set(1,1,1,1)\n"
- "res1=a.get(0)\n"
- "res2=a.get(1)\n"
- "res3=a.get(2)\n"
- "res4=a.get(3)\n");
- /* collect */
- float res1 = obj_getFloat(pikaMain, "res1");
- float res2 = obj_getFloat(pikaMain, "res2");
- float res3 = obj_getFloat(pikaMain, "res3");
- float res4 = obj_getFloat(pikaMain, "res4");
- /* assert */
- EXPECT_FLOAT_EQ(res1, 1);
- EXPECT_FLOAT_EQ(res2, 1);
- EXPECT_FLOAT_EQ(res3, 1);
- EXPECT_FLOAT_EQ(res4, 1);
- /* deinit */
- obj_deinit(pikaMain);
- EXPECT_EQ(pikaMemNow(), 0);
- }
- TEST(PikaMath, quat_dot) {
- /* init */
- g_PikaMemInfo.heapUsedMax = 0;
- PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
- /* run */
- obj_run(pikaMain,
- "import PikaMath\n"
- "a = PikaMath.Quaternion()\n"
- "b = PikaMath.Quaternion()\n"
- "a.set(1,2,3,4)\n"
- "b.set(5,6,7,8)\n"
- "res1=a.dot(b)\n");
- /* collect */
- float res1 = obj_getFloat(pikaMain, "res1");
- /* assert */
- EXPECT_FLOAT_EQ(res1, 70.0);
- /* deinit */
- obj_deinit(pikaMain);
- EXPECT_EQ(pikaMemNow(), 0);
- }
- TEST(PikaMath, quat_inv) {
- /* init */
- g_PikaMemInfo.heapUsedMax = 0;
- PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
- /* run */
- obj_run(pikaMain,
- "import PikaMath\n"
- "a = PikaMath.Quaternion()\n"
- "a.inverse()\n"
- "res1=a.get(0)\n"
- "res2=a.get(1)\n"
- "res3=a.get(2)\n"
- "res4=a.get(3)\n");
- /* collect */
- float res1 = obj_getFloat(pikaMain, "res1");
- float res2 = obj_getFloat(pikaMain, "res2");
- float res3 = obj_getFloat(pikaMain, "res3");
- float res4 = obj_getFloat(pikaMain, "res4");
- /* assert */
- EXPECT_FLOAT_EQ(res1, 0.0);
- EXPECT_FLOAT_EQ(res2, 0.0);
- EXPECT_FLOAT_EQ(res3, 0.0);
- EXPECT_FLOAT_EQ(res4, 1.0);
- /* deinit */
- obj_deinit(pikaMain);
- EXPECT_EQ(pikaMemNow(), 0);
- }
- TEST(PikaMath, quat_cross) {
- /* init */
- g_PikaMemInfo.heapUsedMax = 0;
- PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
- /* run */
- obj_run(pikaMain,
- "import PikaMath\n"
- "a = PikaMath.Quaternion()\n"
- "b = PikaMath.Quaternion()\n"
- "a.set(2,3,4,1)\n"
- "b.set(6,7,8,5)\n"
- "a.crossproduct(b)\n"
- "res1=a.get(0)\n"
- "res2=a.get(1)\n"
- "res3=a.get(2)\n"
- "res4=a.get(3)\n");
- /* collect */
- float res1 = obj_getFloat(pikaMain, "res1");
- float res2 = obj_getFloat(pikaMain, "res2");
- float res3 = obj_getFloat(pikaMain, "res3");
- float res4 = obj_getFloat(pikaMain, "res4");
- /* assert */
- EXPECT_FLOAT_EQ(res1, -4.0);
- EXPECT_FLOAT_EQ(res2, 8.0);
- EXPECT_FLOAT_EQ(res3, -4.0);
- EXPECT_FLOAT_EQ(res4, 0.0);
- /* deinit */
- obj_deinit(pikaMain);
- EXPECT_EQ(pikaMemNow(), 0);
- }
- TEST(PikaMath, quat_toEuler) {
- /* init */
- g_PikaMemInfo.heapUsedMax = 0;
- PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
- /* run */
- obj_run(pikaMain,
- "import PikaMath\n"
- "a = PikaMath.Quaternion()\n"
- "a.set(0,0,1,0)\n"
- "res=a.toEuler()\n"
- "res1=res[0]\n"
- "res2=res[1]\n"
- "res3=res[2]\n");
- /* collect */
- float res1 = obj_getFloat(pikaMain, "res1");
- float res2 = obj_getFloat(pikaMain, "res2");
- float res3 = obj_getFloat(pikaMain, "res3");
- /* assert */
- EXPECT_FLOAT_EQ(res1, 0.0);
- EXPECT_FLOAT_EQ(res2, 0.0);
- EXPECT_FLOAT_EQ(res3, 3.1415927);
- /* deinit */
- obj_deinit(pikaMain);
- EXPECT_EQ(pikaMemNow(), 0);
- }
- TEST(PikaMath, quat_fromEuler) {
- /* init */
- g_PikaMemInfo.heapUsedMax = 0;
- PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
- /* run */
- obj_run(pikaMain,
- "import PikaMath\n"
- "a = PikaMath.Quaternion()\n"
- "a.fromEuler(0,0.0,0.0,3.1415927)\n"
- "res1=a.get(0)\n"
- "res2=a.get(1)\n"
- "res3=a.get(2)\n"
- "res4=a.get(3)\n");
- /* collect */
- float res1 = obj_getFloat(pikaMain, "res1");
- float res2 = obj_getFloat(pikaMain, "res2");
- float res3 = obj_getFloat(pikaMain, "res3");
- float res4 = obj_getFloat(pikaMain, "res4");
- /* assert */
- EXPECT_FLOAT_EQ(res1, 0.0);
- EXPECT_FLOAT_EQ(res2, 0.0);
- EXPECT_FLOAT_EQ(res3, 0.0);
- EXPECT_FLOAT_EQ(res4, 1.0);
- /* deinit */
- obj_deinit(pikaMain);
- EXPECT_EQ(pikaMemNow(), 0);
- }
- TEST_RUN_SINGLE_FILE_PASS(PikaMath,
- modbus,
- "test/python/PikaMath/modbus_convert.py")
- #endif
- TEST_END
|