mirror of https://github.com/nirenjan/libx52.git
				
				
				
			
		
			
				
	
	
		
			1261 lines
		
	
	
		
			25 KiB
		
	
	
	
		
			C
		
	
	
			
		
		
	
	
			1261 lines
		
	
	
		
			25 KiB
		
	
	
	
		
			C
		
	
	
| /*
 | |
|  * Saitek X52 IO driver - Parser test suite - individual parser tests
 | |
|  *
 | |
|  * This file is included in test_parser.c to both define the test cases,
 | |
|  * and to list the tests themselves.
 | |
|  */
 | |
| 
 | |
| #ifndef TEST_LIST
 | |
| # define TEST_CASE(tc, prodid) static void tc (void **state)
 | |
| # define TEST_DEF(x) x
 | |
| 
 | |
| /* Setup the test case with default values in the report data */
 | |
| # define TEST_INIT(size) \
 | |
|     libx52io_context *ctx = *state; \
 | |
|     libx52io_report report; \
 | |
|     int rc; \
 | |
|     unsigned char data[size] = { 0 }; \
 | |
|     memset(&report, 0, sizeof(report));
 | |
| 
 | |
| # define TEST_INIT_X52 TEST_INIT(14)
 | |
| # define TEST_INIT_PRO TEST_INIT(15)
 | |
| 
 | |
| /* Set the axis bits. The axis values are reported starting from offset 0 */
 | |
| # define TEST_AXIS(axis) do { \
 | |
|     data[0] = (axis ## L >>  0) & 0xff; \
 | |
|     data[1] = (axis ## L >>  8) & 0xff; \
 | |
|     data[2] = (axis ## L >> 16) & 0xff; \
 | |
|     data[3] = (axis ## L >> 24) & 0xff; \
 | |
|     data[4] = (axis ## L >> 32) & 0xff; \
 | |
|     data[5] = (axis ## L >> 40) & 0xff; \
 | |
|     data[6] = (axis ## L >> 48) & 0xff; \
 | |
|     data[7] = (axis ## L >> 56) & 0xff; \
 | |
| } while(0)
 | |
| 
 | |
| /* Set the button bit. The buttons are the report data starting from offset 8 */
 | |
| # define TEST_BUTTON(btn) data[8 + (btn >> 3)] |= (1 << (btn & 7))
 | |
| 
 | |
| /*
 | |
|  * Set the hat value. The hat is in the upper 4 bits of the penultimate byte
 | |
|  * of the report.
 | |
|  */
 | |
| # define TEST_HAT(hat) data[sizeof(data) - 2] |= (hat << 4)
 | |
| 
 | |
| /* Set the thumbstick X and Y values. This is in the last byte of the report. */
 | |
| # define TEST_THUMB(x, y) data[sizeof(data) - 1] = (y << 4 | x)
 | |
| 
 | |
| /* Parse the report */
 | |
| # define TEST_PARSE() do { \
 | |
|     rc = _x52io_parse_report(ctx, &report, data, sizeof(data)); \
 | |
|     assert_int_equal(rc, LIBX52IO_SUCCESS); \
 | |
| } while(0)
 | |
| 
 | |
| # define TEST_PARSE_REPORT(...) \
 | |
|     libx52io_context *ctx = *state; \
 | |
|     libx52io_report report; \
 | |
|     int rc; \
 | |
|     unsigned char data[] = { __VA_ARGS__ }; \
 | |
|     memset(&report, 0, sizeof(report)); \
 | |
|     rc = _x52io_parse_report(ctx, &report, data, sizeof(data)); \
 | |
|     assert_int_equal(rc, LIBX52IO_SUCCESS);
 | |
| 
 | |
| #else
 | |
| # define TEST_CASE(tc, prodid) cmocka_unit_test_setup_teardown(tc, TEST_SETUP(prodid), test_teardown),
 | |
| # define TEST_DEF(x)
 | |
| #endif
 | |
| 
 | |
| /* X52 axis test cases {{{ */
 | |
| TEST_CASE(x52_x_axis_512, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_AXIS(0x0000000000000200);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_X], 512);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_x_axis_1024, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_AXIS(0x0000000000000400);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_X], 1024);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_x_axis_2047, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_AXIS(0x00000000000007ff);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_X], 2047);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_y_axis_512, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_AXIS(0x0000000000100000);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_Y], 512);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_y_axis_1024, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_AXIS(0x0000000000200000);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_Y], 1024);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_y_axis_2047, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_AXIS(0x00000000003ff800);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_Y], 2047);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_rz_axis_256, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_AXIS(0x0000000040000000);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_RZ], 256);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_rz_axis_512, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_AXIS(0x0000000080000000);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_RZ], 512);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_rz_axis_1023, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_AXIS(0x00000000ffc00000);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_RZ], 1023);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_z_axis_128, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_AXIS(0x0000008000000000);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_Z], 128);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_z_axis_255, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_AXIS(0x000000ff00000000);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_Z], 255);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_rx_axis_255, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_AXIS(0x0000ff0000000000);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_RX], 255);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_ry_axis_255, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_AXIS(0x00ff000000000000);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_RY], 255);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_slider_axis_255, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_AXIS(0xff00000000000000);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_SLIDER], 255);
 | |
| })
 | |
| /* }}} */
 | |
| 
 | |
| /* X52Pro axis test cases {{{ */
 | |
| TEST_CASE(pro_x_axis_512, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_AXIS(0x000000000000200);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_X], 512);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_x_axis_1023, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_AXIS(0x0000000000003ff);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_X], 1023);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_y_axis_512, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_AXIS(0x000000000080000);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_Y], 512);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_y_axis_1023, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_AXIS(0x0000000000ffc00);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_Y], 1023);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_rz_axis_256, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_AXIS(0x0000000040000000);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_RZ], 256);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_rz_axis_512, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_AXIS(0x0000000080000000);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_RZ], 512);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_rz_axis_1023, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_AXIS(0x00000000ffc00000);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_RZ], 1023);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_z_axis_128, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_AXIS(0x0000008000000000);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_Z], 128);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_z_axis_255, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_AXIS(0x000000ff00000000);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_Z], 255);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_rx_axis_255, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_AXIS(0x0000ff0000000000);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_RX], 255);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_ry_axis_255, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_AXIS(0x00ff000000000000);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_RY], 255);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_slider_axis_255, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_AXIS(0xff00000000000000);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_SLIDER], 255);
 | |
| })
 | |
| /* }}} */
 | |
| 
 | |
| /* X52 button test cases {{{ */
 | |
| TEST_CASE(x52_button_trigger, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_BUTTON(0);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_TRIGGER]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_button_fire, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_BUTTON(1);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_FIRE]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_button_a, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_BUTTON(2);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_A]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_button_b, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_BUTTON(3);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_B]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_button_c, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_BUTTON(4);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_C]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_button_pinky, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_BUTTON(5);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_PINKY]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_button_d, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_BUTTON(6);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_D]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_button_e, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_BUTTON(7);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_E]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_button_t1_up, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_BUTTON(8);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_T1_UP]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_button_t1_dn, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_BUTTON(9);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_T1_DN]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_button_t2_up, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_BUTTON(10);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_T2_UP]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_button_t2_dn, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_BUTTON(11);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_T2_DN]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_button_t3_up, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_BUTTON(12);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_T3_UP]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_button_t3_dn, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_BUTTON(13);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_T3_DN]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_button_trigger_2, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_BUTTON(14);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_TRIGGER_2]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_button_pov_1_n, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_BUTTON(15);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_POV_1_N]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_button_pov_1_e, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_BUTTON(16);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_POV_1_E]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_button_pov_1_s, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_BUTTON(17);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_POV_1_S]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_button_pov_1_w, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_BUTTON(18);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_POV_1_W]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_button_pov_2_n, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_BUTTON(19);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_POV_2_N]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_button_pov_2_e, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_BUTTON(20);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_POV_2_E]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_button_pov_2_s, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_BUTTON(21);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_POV_2_S]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_button_pov_2_w, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_BUTTON(22);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_POV_2_W]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_button_mode_1, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_BUTTON(23);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_MODE_1]);
 | |
|     assert_int_equal(report.mode, 1);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_button_mode_2, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_BUTTON(24);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_MODE_2]);
 | |
|     assert_int_equal(report.mode, 2);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_button_mode_3, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_BUTTON(25);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_MODE_3]);
 | |
|     assert_int_equal(report.mode, 3);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_button_function, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_BUTTON(26);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_FUNCTION]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_button_start_stop, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_BUTTON(27);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_START_STOP]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_button_reset, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_BUTTON(28);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_RESET]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_button_clutch, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_BUTTON(29);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_CLUTCH]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_button_mouse_primary, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_BUTTON(30);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_MOUSE_PRIMARY]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_button_mouse_secondary, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_BUTTON(31);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_MOUSE_SECONDARY]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_button_mouse_scroll_dn, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_BUTTON(32);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_MOUSE_SCROLL_DN]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_button_mouse_scroll_up, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_BUTTON(33);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_MOUSE_SCROLL_UP]);
 | |
| })
 | |
| /* }}} */
 | |
| 
 | |
| /* X52Pro button test cases {{{ */
 | |
| TEST_CASE(pro_button_trigger, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_BUTTON(0);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_TRIGGER]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_button_fire, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_BUTTON(1);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_FIRE]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_button_a, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_BUTTON(2);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_A]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_button_b, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_BUTTON(3);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_B]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_button_c, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_BUTTON(4);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_C]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_button_pinky, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_BUTTON(5);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_PINKY]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_button_d, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_BUTTON(6);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_D]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_button_e, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_BUTTON(7);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_E]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_button_t1_up, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_BUTTON(8);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_T1_UP]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_button_t1_dn, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_BUTTON(9);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_T1_DN]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_button_t2_up, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_BUTTON(10);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_T2_UP]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_button_t2_dn, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_BUTTON(11);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_T2_DN]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_button_t3_up, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_BUTTON(12);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_T3_UP]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_button_t3_dn, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_BUTTON(13);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_T3_DN]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_button_trigger_2, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_BUTTON(14);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_TRIGGER_2]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_button_mouse_primary, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_BUTTON(15);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_MOUSE_PRIMARY]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_button_mouse_scroll_dn, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_BUTTON(16);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_MOUSE_SCROLL_DN]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_button_mouse_scroll_up, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_BUTTON(17);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_MOUSE_SCROLL_UP]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_button_mouse_secondary, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_BUTTON(18);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_MOUSE_SECONDARY]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_button_pov_1_n, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_BUTTON(19);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_POV_1_N]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_button_pov_1_e, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_BUTTON(20);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_POV_1_E]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_button_pov_1_s, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_BUTTON(21);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_POV_1_S]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_button_pov_1_w, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_BUTTON(22);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_POV_1_W]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_button_pov_2_n, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_BUTTON(23);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_POV_2_N]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_button_pov_2_e, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_BUTTON(24);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_POV_2_E]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_button_pov_2_s, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_BUTTON(25);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_POV_2_S]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_button_pov_2_w, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_BUTTON(26);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_POV_2_W]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_button_mode_1, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_BUTTON(27);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_MODE_1]);
 | |
|     assert_int_equal(report.mode, 1);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_button_mode_2, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_BUTTON(28);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_MODE_2]);
 | |
|     assert_int_equal(report.mode, 2);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_button_mode_3, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_BUTTON(29);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_MODE_3]);
 | |
|     assert_int_equal(report.mode, 3);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_button_clutch, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_BUTTON(30);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_CLUTCH]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_button_function, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_BUTTON(31);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_FUNCTION]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_button_start_stop, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_BUTTON(32);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_START_STOP]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_button_reset, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_BUTTON(33);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_RESET]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_button_pg_up, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_BUTTON(34);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_PG_UP]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_button_pg_dn, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_BUTTON(35);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_PG_DN]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_button_up, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_BUTTON(36);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_UP]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_button_dn, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_BUTTON(37);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_DN]);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_button_select, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_BUTTON(38);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_true(report.button[LIBX52IO_BTN_SELECT]);
 | |
| })
 | |
| /* }}} */
 | |
| 
 | |
| /* X52 hat test cases {{{ */
 | |
| TEST_CASE(x52_hat_0, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_HAT(0);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.hat, 0);
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_HATX], 0);
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_HATY], 0);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_hat_1, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_HAT(1);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.hat, 1);
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_HATX], 0);
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_HATY], -1);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_hat_2, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_HAT(2);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.hat, 2);
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_HATX], 1);
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_HATY], -1);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_hat_3, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_HAT(3);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.hat, 3);
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_HATX], 1);
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_HATY], 0);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_hat_4, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_HAT(4);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.hat, 4);
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_HATX], 1);
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_HATY], 1);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_hat_5, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_HAT(5);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.hat, 5);
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_HATX], 0);
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_HATY], 1);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_hat_6, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_HAT(6);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.hat, 6);
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_HATX], -1);
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_HATY], 1);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_hat_7, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_HAT(7);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.hat, 7);
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_HATX], -1);
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_HATY], 0);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_hat_8, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_HAT(8);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.hat, 8);
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_HATX], -1);
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_HATY], -1);
 | |
| })
 | |
| /* }}}*/
 | |
| 
 | |
| /* X52Pro hat test cases {{{ */
 | |
| TEST_CASE(pro_hat_0, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_HAT(0);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.hat, 0);
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_HATX], 0);
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_HATY], 0);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_hat_1, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_HAT(1);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.hat, 1);
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_HATX], 0);
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_HATY], -1);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_hat_2, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_HAT(2);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.hat, 2);
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_HATX], 1);
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_HATY], -1);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_hat_3, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_HAT(3);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.hat, 3);
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_HATX], 1);
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_HATY], 0);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_hat_4, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_HAT(4);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.hat, 4);
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_HATX], 1);
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_HATY], 1);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_hat_5, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_HAT(5);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.hat, 5);
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_HATX], 0);
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_HATY], 1);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_hat_6, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_HAT(6);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.hat, 6);
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_HATX], -1);
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_HATY], 1);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_hat_7, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_HAT(7);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.hat, 7);
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_HATX], -1);
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_HATY], 0);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_hat_8, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_HAT(8);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.hat, 8);
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_HATX], -1);
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_HATY], -1);
 | |
| })
 | |
| /* }}}*/
 | |
| 
 | |
| /* X52 thumbstick test cases {{{ */
 | |
| TEST_CASE(x52_thumb_0_0, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_THUMB(0, 0);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_THUMBX], 0);
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_THUMBY], 0);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_thumb_0_f, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_THUMB(0, 0xf);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_THUMBX], 0);
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_THUMBY], 0xf);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_thumb_f_0, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_THUMB(0xf, 0);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_THUMBX], 0xf);
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_THUMBY], 0);
 | |
| })
 | |
| 
 | |
| TEST_CASE(x52_thumb_f_f, _1)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_X52;
 | |
|     TEST_THUMB(0xf, 0xf);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_THUMBX], 0xf);
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_THUMBY], 0xf);
 | |
| })
 | |
| /* }}} */
 | |
| 
 | |
| /* X52Pro thumbstick test cases {{{ */
 | |
| TEST_CASE(pro_thumb_0_0, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_THUMB(0, 0);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_THUMBX], 0);
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_THUMBY], 0);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_thumb_0_f, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_THUMB(0, 0xf);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_THUMBX], 0);
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_THUMBY], 0xf);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_thumb_f_0, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_THUMB(0xf, 0);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_THUMBX], 0xf);
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_THUMBY], 0);
 | |
| })
 | |
| 
 | |
| TEST_CASE(pro_thumb_f_f, PRO)
 | |
| TEST_DEF({
 | |
|     TEST_INIT_PRO;
 | |
|     TEST_THUMB(0xf, 0xf);
 | |
|     TEST_PARSE();
 | |
| 
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_THUMBX], 0xf);
 | |
|     assert_int_equal(report.axis[LIBX52IO_AXIS_THUMBY], 0xf);
 | |
| })
 | |
| /* }}} */
 | |
| 
 | |
| #undef TEST_CASE
 | |
| #undef TEST_DEF
 | |
| #undef TEST_PARSE
 |