int main (int argc, char *argv[]) { test_uint64 ("0", "", 10, 0, 0); test_uint64 ("+0", "", 10, 0, 0); test_uint64 ("-0", "", 10, 0, 0); test_uint64 ("18446744073709551615", "", 10, G_MAXUINT64, 0); test_uint64 ("18446744073709551616", "", 10, G_MAXUINT64, ERANGE); test_uint64 ("20xyz", "xyz", 10, 20, 0); test_uint64 ("-1", "", 10, G_MAXUINT64, 0); test_int64 ("0", "", 10, 0, 0); test_int64 ("9223372036854775807", "", 10, G_MAXINT64, 0); test_int64 ("9223372036854775808", "", 10, G_MAXINT64, ERANGE); test_int64 ("-9223372036854775808", "", 10, G_MININT64, 0); test_int64 ("-9223372036854775809", "", 10, G_MININT64, ERANGE); test_int64 ("32768", "", 10, 32768, 0); test_int64 ("-32768", "", 10, -32768, 0); test_int64 ("001", "", 10, 1, 0); test_int64 ("-001", "", 10, -1, 0); return 0; }
int main() { luacpp::luaWrapper lw; lw.dofile("start.lua"); test_call_c_function(lw); test_class1(lw); test_pass_luatable(lw); test_c_return_luatable(lw); test_lua_return_luatable(lw); test_op_lua_obj(lw); test_call_virtual_function(lw); test_int64(lw); test_pass_c_object(lw); test_create_c_obj(lw); test_getglobal(lw); test_setglobal(lw); test_call_c_pass_obj(lw); test_call_c_pass_obj_ref(lw); getchar(); return 0; }
static ERL_NIF_TERM type_test(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) { int i; int sint; unsigned uint; long slong; unsigned long ulong; ErlNifSInt64 sint64; ErlNifUInt64 uint64; double d; ERL_NIF_TERM atom, ref1, ref2; sint = INT_MIN; do { if (!test_int(env,sint)) { goto error; } sint += ~sint / 3 + 1; } while (sint < 0); sint = INT_MAX; do { if (!test_int(env,sint)) { goto error; } sint -= sint / 3 + 1; } while (sint >= 0); slong = LONG_MIN; do { if (!test_long(env,slong)) { goto error; } slong += ~slong / 3 + 1; } while (slong < 0); slong = LONG_MAX; do { if (!test_long(env,slong)) { goto error; } slong -= slong / 3 + 1; } while (slong >= 0); sint64 = ((ErlNifSInt64)1 << 63); /* INT64_MIN */ do { if (!test_int64(env,sint64)) { goto error; } sint64 += ~sint64 / 3 + 1; } while (sint64 < 0); sint64 = ((ErlNifUInt64)1 << 63) - 1; /* INT64_MAX */ do { if (!test_int64(env,sint64)) { goto error; } sint64 -= sint64 / 3 + 1; } while (sint64 >= 0); uint = UINT_MAX; for (;;) { if (!test_uint(env,uint)) { goto error; } if (uint == 0) break; uint -= uint / 3 + 1; } ulong = ULONG_MAX; for (;;) { if (!test_ulong(env,ulong)) { goto error; } if (ulong == 0) break; ulong -= ulong / 3 + 1; } uint64 = (ErlNifUInt64)-1; /* UINT64_MAX */ for (;;) { if (!test_uint64(env,uint64)) { goto error; } if (uint64 == 0) break; uint64 -= uint64 / 3 + 1; } if (MAX_SMALL < INT_MAX) { /* 32-bit */ for (i=-10 ; i <= 10; i++) { if (!test_int(env,MAX_SMALL+i)) { goto error; } } for (i=-10 ; i <= 10; i++) { if (!test_int(env,MIN_SMALL+i)) { goto error; } } for (i=-10 ; i <= 10; i++) { if (!test_uint(env,MAX_SMALL+i)) { goto error; } } } assert((MAX_SMALL < INT_MAX) == (MIN_SMALL > INT_MIN)); for (i=-10 ; i < 10; i++) { if (!test_long(env,MAX_SMALL+i) || !test_ulong(env,MAX_SMALL+i) || !test_long(env,MIN_SMALL+i) || !test_int64(env,MAX_SMALL+i) || !test_uint64(env,MAX_SMALL+i) || !test_int64(env,MIN_SMALL+i)) { goto error; } if (MAX_SMALL < INT_MAX) { if (!test_int(env,MAX_SMALL+i) || !test_uint(env,MAX_SMALL+i) || !test_int(env,MIN_SMALL+i)) { goto error; } } } for (d=3.141592e-100 ; d < 1e100 ; d *= 9.97) { if (!test_double(env,d) || !test_double(env,-d)) { goto error; } } if (!enif_make_existing_atom(env,"nif_SUITE", &atom, ERL_NIF_LATIN1) || !enif_is_identical(atom,enif_make_atom(env,"nif_SUITE"))) { fprintf(stderr, "nif_SUITE not an atom?\r\n"); goto error; } for (i=2; i; i--) { if (enif_make_existing_atom(env,"nif_SUITE_pink_unicorn", &atom, ERL_NIF_LATIN1)) { fprintf(stderr, "pink unicorn exist?\r\n"); goto error; } } ref1 = enif_make_ref(env); ref2 = enif_make_ref(env); if (!enif_is_ref(env,ref1) || !enif_is_ref(env,ref2) || enif_is_identical(ref1,ref2) || enif_compare(ref1,ref2)==0) { fprintf(stderr, "strange refs?\r\n"); goto error; } return enif_make_atom(env,"ok"); error: return enif_make_atom(env,"error"); }
int main() { #if 1 const char* sss = "[{\"DataKey1\": \"BindRule\", \"DataValue\": {\"waittime\": \"7\"}, \"null_key\": \"null\"},\r\n" "{\"DataKey2\": \"BindRule\", \"DataValue\": {\"waittime\": \"7\"}, \"null_key\": \"null\"},\r\n" "{\"member\": [25, 26, 27, 28, 29, true, false]},\r\n" "{\"max_uint64\": 18446744073709551615},\r\n" "[\"string\", true, false, 100, 200, 300, null, null],\r\n" "{\"hello world\": true, \"name\": null, \"age\": 25}]\r\n" "{\"hello\" : \"world\"} \r\n"; #else const char* sss = "{\"name\": \"100\"}"; #endif acl::json json; const char* ptr = json.update(sss); printf("-------------------------------------------------------\r\n"); printf("%s\r\n", sss); printf("-------------------------------------------------------\r\n"); printf("json finish: %s, left char: %s\r\n", json.finish() ? "yes" : "no", ptr); printf(">>>to string: %s\r\n", json.to_string().c_str()); const char* ss = "[{\"DataKey1\": \"BindRule\", \"DataValue\": {\"waittime\": \"7\"}, \"null_key\": \"null\"}, " "{\"DataKey2\": \"BindRule\", \"DataValue\": {\"waittime\": \"7\"}, \"null_key\": \"null\"}, " "{\"member\": [25, 26, 27, 28, 29, true, false]}, " "{\"max_uint64\": 18446744073709551615 }, " "[\"string\", true, false, 100, 200, 300, null, null], " "{\"hello world\": true, \"name\": null, \"age\": 25}]"; printf("-------------------------------------------------------\r\n"); acl::string buf1(json.to_string()), buf2(ss); buf1.trim_space().trim_line(); buf2.trim_space().trim_line(); if (buf1 == buf2) printf("All OK\r\n\r\n"); else { printf("Error\r\n"); printf("-------------------------------------------------------\r\n"); printf("%s\r\n", ss); printf("-------------------------------------------------------\r\n"); printf("%s\r\n", json.to_string().c_str()); printf("\r\n"); exit (1); } test_type(json, "hello world"); test_type(json, "name"); test_type(json, "age"); test_type(json, "member"); test_type(json, "DataKey1"); test_type(json, "DataValue"); test_type(json, "null_key"); test_type(json, "string"); test_type(json, "waittime"); test_type(json, "max_uint64"); test_int64(json, "age"); test_int64(json, "max_uint64"); #if defined(_WIN32) || defined(_WIN64) printf("Enter any key to exit ..."); fflush(stdout); getchar(); #endif return 0; }