| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- #include "test_common.h"
- TEST_START
- #if !PIKA_NANO_ENABLE
- TEST(class, class_par) {
- /* init */
- g_PikaMemInfo.heapUsedMax = 0;
- /* run */
- PikaObj* self = newRootObj("pikaMain", New_PikaMain);
- __platform_printf("BEGIN\r\n");
- obj_run(self, "pi = PikaMath.Math.pi\n");
- /* assert */
- pika_float pi = obj_getFloat(self, "pi");
- #if PIKA_FLOAT_TYPE_DOUBLE
- EXPECT_DOUBLE_EQ(pi, 3.141592653589793115997963468544185161590576171875l);
- #else
- EXPECT_FLOAT_EQ(pi, 3.141592653589793115997963468544185161590576171875l);
- #endif
- /* deinit */
- obj_deinit(self);
- EXPECT_EQ(pikaMemNow(), 0);
- }
- TEST(class, classpar1) {
- /* init */
- g_PikaMemInfo.heapUsedMax = 0;
- /* run */
- PikaObj* self = newRootObj("pikaMain", New_PikaMain);
- __platform_printf("BEGIN\r\n");
- pikaVM_runSingleFile(self, "../../examples/Class/classpar1.py");
- /* assert */
- EXPECT_STREQ(log_buff[4], "BEGIN\r\n");
- EXPECT_STREQ(log_buff[3], "1\r\n");
- EXPECT_STREQ(log_buff[2], "test\r\n");
- EXPECT_STREQ(log_buff[1], "2\r\n");
- EXPECT_STREQ(log_buff[0], "pewq\r\n");
- /* deinit */
- obj_deinit(self);
- EXPECT_EQ(pikaMemNow(), 0);
- }
- TEST(class, static_method) {
- /* init */
- g_PikaMemInfo.heapUsedMax = 0;
- /* run */
- PikaObj* self = newRootObj("pikaMain", New_PikaMain);
- __platform_printf("BEGIN\r\n");
- obj_run(self,
- "import PikaMath\n"
- "a = PikaMath.Operator.plusInt(10, 20)\n");
- /* collect */
- int a = obj_getInt(self, "a");
- /* assert */
- EXPECT_EQ(a, 30);
- /* deinit */
- obj_deinit(self);
- EXPECT_EQ(pikaMemNow(), 0);
- }
- #endif
- TEST(class, dir_) {
- /* init */
- g_PikaMemInfo.heapUsedMax = 0;
- /* run */
- PikaObj* self = newRootObj("pikaMain", New_PikaMain);
- __platform_printf("BEGIN\r\n");
- obj_run(self,
- "class T:\n"
- " def a(self):\n"
- " return 1\n"
- "t = T()\n"
- "l = dir(t)\n"
- "print(l)\n");
- /* collect */
- /* assert */
- /* deinit */
- obj_deinit(self);
- EXPECT_EQ(pikaMemNow(), 0);
- }
- extern "C" {
- void PikaStdLib_SysObj_intMethod(PikaObj* self, Args* args);
- method_typedef(PikaStdLib_SysObj_int, "int", "arg");
- void PikaStdLib_SysObj_floatMethod(PikaObj* self, Args* args);
- method_typedef(PikaStdLib_SysObj_float, "float", "arg");
- void PikaStdLib_SysObj_printMethod(PikaObj* self, Args* args);
- method_typedef(PikaStdLib_SysObj_print, "print", "*val,**ops");
- class_def(PikaStdLib_SysObj){
- method_def(PikaStdLib_SysObj_int, hash_time33("int")),
- method_def(PikaStdLib_SysObj_float, hash_time33("float")),
- method_def(PikaStdLib_SysObj_print, hash_time33("print")),
- };
- class_inhert(PikaStdLib_SysObj, TinyObj);
- PikaObj* New_NativeMethodBase(Args* args) {
- PikaObj* self = New_TinyObj(NULL);
- obj_setClass(self, PikaStdLib_SysObj);
- return self;
- }
- }
- TEST(class, native_class1) {
- PikaObj* native_obj = newRootObj("root", New_NativeMethodBase);
- obj_run(native_obj,
- "print('hello', 123)\n"
- "int(123.0000)\n"
- "float(123)\n");
- obj_deinit(native_obj);
- EXPECT_STREQ(log_buff[1], "123\r\n");
- EXPECT_STREQ(log_buff[0], "123.000000\r\n");
- EXPECT_EQ(pikaMemNow(), 0);
- }
- TEST_END
|