int main(int argc, char **argv) { int powerCbCallbackId = TEST_NOTZERO(sceKernelCreateCallback, "powerHandler", powerHandler, (void *)0x1234); int powerCbCallbackId2 = TEST_NOTZERO(sceKernelCreateCallback, "powerHandler2", powerHandler2, (void *)0x4567); int powerCbSlot1 = TEST_RES(scePowerRegisterCallback, -1, powerCbCallbackId); int powerCbSlot2 = TEST_RES(scePowerRegisterCallback, -1, powerCbCallbackId2); // Register the same callback in two slots, make sure it's only called once. int powerCbSlot3 = TEST_RES(scePowerRegisterCallback, -1, powerCbCallbackId2); TEST_RES(sceKernelCheckCallback); TEST_RES(scePowerUnregisterCallback, powerCbSlot1); TEST_NAMED_RES("scePowerUnregisterCallback twice", scePowerUnregisterCallback, powerCbSlot1); TEST_NAMED_RES("scePowerUnregisterCallback never registered", scePowerUnregisterCallback, 8); TEST_NAMED_RES("scePowerUnregisterCallback too low", scePowerUnregisterCallback, -4); TEST_NAMED_RES("scePowerUnregisterCallback too high (31)", scePowerUnregisterCallback, 31); TEST_NAMED_RES("scePowerUnregisterCallback too high (32)", scePowerUnregisterCallback, 32); TEST_RES(scePowerUnregisterCallback, powerCbSlot2); TEST_RES(scePowerUnregisterCallback, powerCbSlot3); checkpointNext("---"); powerCbSlot1 = TEST_RES(scePowerRegisterCallback, -1, powerCbCallbackId); TEST_RES(sceKernelPowerTick, -1); TEST_RES(sceKernelCheckCallback); // Just testing scheduling. scePowerIsBatteryCharging(); schedf("scePowerIsBatteryCharging\n"); TEST_RES(sceKernelCheckCallback); TEST_RES(scePowerIsBatteryExist); TEST_RES(sceKernelCheckCallback); TEST_RES(scePowerIsPowerOnline); TEST_RES(sceKernelCheckCallback); TEST_NOTZERO(scePowerGetBatteryLifePercent); TEST_RES(sceKernelCheckCallback); // Just testing scheduling. scePowerGetBatteryChargingStatus(); schedf("scePowerGetBatteryChargingStatus\n"); TEST_RES(sceKernelCheckCallback); TEST_RES(scePowerIsLowBattery); TEST_RES(sceKernelCheckCallback); TEST_RES(sceKernelPowerLock, 0); TEST_RES(sceKernelCheckCallback); TEST_RES(sceKernelPowerUnlock, 0); TEST_RES(sceKernelCheckCallback); TEST_RES(sceKernelPowerUnlock, 0); TEST_RES(sceKernelCheckCallback); TEST_RES(sceKernelPowerLock, 1); TEST_RES(sceKernelCheckCallback); TEST_RES(sceKernelPowerTick, -1); TEST_RES(sceKernelCheckCallback); TEST_NAMED_RES("scePowerSetBusClockFrequency to 66", scePowerSetBusClockFrequency, 66); TEST_RES(sceKernelCheckCallback); TEST_NAMED_RES("scePowerSetBusClockFrequency to 111", scePowerSetBusClockFrequency, 111); TEST_RES(sceKernelCheckCallback); TEST_NAMED_RES("scePowerSetCpuClockFrequency to 111", scePowerSetCpuClockFrequency, 111); TEST_RES(sceKernelCheckCallback); TEST_NAMED_RES("scePowerSetCpuClockFrequency to 222", scePowerSetCpuClockFrequency, 222); TEST_RES(sceKernelCheckCallback); TEST_RES(scePowerUnregisterCallback, powerCbSlot1); checkpointNext("---"); powerCbSlot1 = TEST_NAMED_RES("scePowerRegisterCallback: Normal", scePowerRegisterCallback, 0, powerCbCallbackId); TEST_NAMED_RES("scePowerRegisterCallback: Invalid CB", scePowerRegisterCallback, 0, 0); TEST_NAMED_RES("scePowerRegisterCallback: Too low slot", scePowerRegisterCallback, -4, powerCbCallbackId); TEST_NAMED_RES("scePowerRegisterCallback: Too high (31)", scePowerRegisterCallback, 31, powerCbCallbackId); TEST_NAMED_RES("scePowerRegisterCallback: Too high (32)", scePowerRegisterCallback, 32, powerCbCallbackId); TEST_NAMED_RES("scePowerRegisterCallback: Twice (same)", scePowerRegisterCallback, 0, powerCbCallbackId); TEST_NAMED_RES("scePowerRegisterCallback: Twice (different)", scePowerRegisterCallback, 0, powerCbCallbackId2); TEST_RES(scePowerUnregisterCallback, powerCbSlot1); TEST_RES(sceKernelCheckCallback); powerCbSlot1 = TEST_RES(scePowerRegisterCallback, 0, powerCbCallbackId); TEST_RES(scePowerUnregisterCallback, powerCbSlot1); TEST_RES(sceKernelDeleteCallback, powerCbCallbackId); TEST_RES(sceKernelCheckCallback); checkpointNext("---"); int i; for (i = 0; i < 17; i++) { TEST_RES(scePowerRegisterCallback, -1, powerCbCallbackId2); } checkpointNext("---"); return 0; }
Suite *local_suite(void) { Suite *s = suite_create(__FILE__); TCase *tc = tcase_create(__FILE__); /* put responses */ TEST_RES1(bsp_get_put_res, "INSERTED 4\r\n", BSC_PUT_RES_INSERTED, uint64_t, 4, intcmp, 1); TEST_RES1(bsp_get_put_res, "BURIED 4\r\n", BSC_RES_BURIED, uint64_t, 4, intcmp, 1); TEST_RES1(bsp_get_put_res, "EXPECTED_CRLF\r\n", BSC_PUT_RES_EXPECTED_CRLF, uint64_t, 0, intcmp, 0); TEST_RES1(bsp_get_put_res, "JOB_TOO_BIG\r\n", BSC_PUT_RES_JOB_TOO_BIG, uint64_t, 0, intcmp, 0); TEST_RES1(bsp_get_put_res, "OUT_OF_MEMORY\r\n", BSC_RES_OUT_OF_MEMORY, uint64_t, 0, intcmp, 0); TEST_RES1(bsp_get_put_res, "INTERNAL_ERROR\r\n", BSC_RES_INTERNAL_ERROR, uint64_t, 0, intcmp, 0); TEST_RES1(bsp_get_put_res, "UNKNOWN_COMMAND\r\n", BSC_RES_UNKNOWN_COMMAND, uint64_t, 0, intcmp, 0); /* use responses */ TEST_RES1(bsp_get_use_res, "USING bar\r\n", BSC_USE_RES_USING, char *, "bar", strcmp, 1); TEST_RES1(bsp_get_use_res, "OUT_OF_MEMORY\r\n", BSC_RES_OUT_OF_MEMORY, char *, "bar", strcmp, 0); /* reserve responses */ TEST_RES3( bsp_get_reserve_res, "RESERVED 3456543 3\r\n", BSC_RESERVE_RES_RESERVED, 3456543, 1); TEST_RES3( bsp_get_reserve_res, "DEADLINE_SOON\r\n", BSC_RESERVE_RES_DEADLINE_SOON, 3456543, 0); TEST_RES3( bsp_get_reserve_res, "TIMED_OUT\r\n", BSC_RESERVE_RES_TIMED_OUT, 3456543, 0); TEST_RES3( bsp_get_reserve_res, "INTERNAL_ERROR\r\n", BSC_RES_INTERNAL_ERROR, 3456543, 0); TEST_RES3( bsp_get_reserve_res, "UNKNOWN_COMMAND\r\n", BSC_RES_UNKNOWN_COMMAND, 3456543, 0); /* delete responses */ TEST_RES( bsp_get_delete_res, "DELETED\r\n", BSC_DELETE_RES_DELETED ); TEST_RES( bsp_get_delete_res, "NOT_FOUND\r\n", BSC_RES_NOT_FOUND ); TEST_RES( bsp_get_delete_res, "OUT_OF_MEMORY\r\n", BSC_RES_OUT_OF_MEMORY ); /* release responses */ TEST_RES( bsp_get_release_res, "RELEASED\r\n", BSC_RELEASE_RES_RELEASED ); TEST_RES( bsp_get_release_res, "BURIED\r\n", BSC_RES_BURIED ); TEST_RES( bsp_get_release_res, "NOT_FOUND\r\n", BSC_RES_NOT_FOUND ); TEST_RES( bsp_get_release_res, "INTERNAL_ERROR\r\n", BSC_RES_INTERNAL_ERROR ); /* bury responses */ TEST_RES( bsp_get_bury_res, "BURIED\r\n", BSC_RES_BURIED ); TEST_RES( bsp_get_bury_res, "NOT_FOUND\r\n", BSC_RES_NOT_FOUND ); TEST_RES( bsp_get_bury_res, "INTERNAL_ERROR\r\n", BSC_RES_INTERNAL_ERROR ); /* touch responses */ TEST_RES( bsp_get_touch_res, "TOUCHED\r\n", BSC_TOUCH_RES_TOUCHED ); TEST_RES( bsp_get_touch_res, "NOT_FOUND\r\n", BSC_RES_NOT_FOUND ); TEST_RES( bsp_get_touch_res, "UNKNOWN_COMMAND\r\n", BSC_RES_UNKNOWN_COMMAND ); /* watch responses */ TEST_RES1(bsp_get_watch_res, "WATCHING 4\r\n", BSC_RES_WATCHING, uint32_t, 4, intcmp, 1); TEST_RES1(bsp_get_watch_res, "OUT_OF_MEMORY\r\n", BSC_RES_OUT_OF_MEMORY, uint32_t, 0, intcmp, 0); /* ignore responses */ TEST_RES1(bsp_get_ignore_res, "WATCHING 4\r\n", BSC_RES_WATCHING, uint32_t, 4, intcmp, 1); TEST_RES1(bsp_get_ignore_res, "NOT_IGNORED\r\n", BSC_IGNORE_RES_NOT_IGNORED, uint32_t, 0, intcmp, 0); TEST_RES1(bsp_get_ignore_res, "OUT_OF_MEMORY\r\n", BSC_RES_OUT_OF_MEMORY, uint32_t, 0, intcmp, 0); /* peek responses */ TEST_RES3( bsp_get_peek_res, "FOUND 3456543 3\r\n", BSC_PEEK_RES_FOUND, 3456543, 1); TEST_RES3( bsp_get_peek_res, "NOT_FOUND\r\n", BSC_RES_NOT_FOUND, 3456543, 0); TEST_RES3( bsp_get_peek_res, "INTERNAL_ERROR\r\n", BSC_RES_INTERNAL_ERROR, 3456543, 0); TEST_RES3( bsp_get_peek_res, "GIBRISH\r\n", BSC_RES_UNRECOGNIZED, 3456543, 0); /* kick responses */ TEST_RES1(bsp_get_kick_res, "KICKED 4\r\n", BSC_KICK_RES_KICKED, uint32_t, 4, intcmp, 1); TEST_RES1(bsp_get_kick_res, "OUT_OF_MEMORY\r\n", BSC_RES_OUT_OF_MEMORY, uint32_t, 0, intcmp, 0); /* pause-tube responses */ TEST_RES( bsp_get_pause_tube_res, "PAUSED\r\n", BSC_PAUSE_TUBE_RES_PAUSED ); TEST_RES( bsp_get_pause_tube_res, "NOT_FOUND\r\n", BSC_RES_NOT_FOUND ); TEST_RES( bsp_get_pause_tube_res, "GIBRISH\r\n", BSC_RES_UNRECOGNIZED ); suite_add_tcase(s, tc); return s; }