示例#1
0
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;
}