void test_bulk_xfer_double(void) { //------------- Code Under Test -------------// TEST_ASSERT_STATUS( hcd_pipe_xfer(pipe_hdl_bulk, xfer_data, sizeof(xfer_data), false) ); TEST_ASSERT_STATUS( hcd_pipe_xfer(pipe_hdl_bulk, data2, sizeof(data2), true) ); ehci_qtd_t* p_head = p_qhd_bulk->p_qtd_list_head; ehci_qtd_t* p_tail = p_qhd_bulk->p_qtd_list_tail; //------------- list head -------------// TEST_ASSERT_NOT_NULL(p_head); verify_qtd(p_head, xfer_data, sizeof(xfer_data)); TEST_ASSERT_EQUAL_HEX(p_qhd_bulk->qtd_overlay.next.address, p_head); TEST_ASSERT_EQUAL(EHCI_PID_IN, p_head->pid); TEST_ASSERT_FALSE(p_head->next.terminate); TEST_ASSERT_FALSE(p_head->int_on_complete); //------------- list tail -------------// TEST_ASSERT_NOT_NULL(p_tail); verify_qtd(p_tail, data2, sizeof(data2)); TEST_ASSERT_EQUAL_HEX( align32(p_head->next.address), p_tail); TEST_ASSERT_EQUAL(EHCI_PID_IN, p_tail->pid); TEST_ASSERT_TRUE(p_tail->next.terminate); TEST_ASSERT_TRUE(p_tail->int_on_complete); }
void setUp(void) { ehci_controller_init(); TEST_ASSERT_STATUS( hcd_init()); hostid = RANDOM(CONTROLLER_HOST_NUMBER) + TEST_CONTROLLER_HOST_START_INDEX; regs = get_operational_register(hostid); }
void test_usbd_init(void) { dcd_init_ExpectAndReturn(TUSB_ERROR_NONE); class_init_epxect(); dcd_controller_connect_Expect(0); //------------- Code Under Test -------------// TEST_ASSERT_STATUS( usbd_init() ); }
void test_bulk_xfer_complete_isr(void) { TEST_ASSERT_STATUS( hcd_pipe_xfer(pipe_hdl_bulk, xfer_data, sizeof(xfer_data), false) ); TEST_ASSERT_STATUS( hcd_pipe_xfer(pipe_hdl_bulk, data2, sizeof(data2), true) ); ehci_qtd_t* p_head = p_qhd_bulk->p_qtd_list_head; ehci_qtd_t* p_tail = p_qhd_bulk->p_qtd_list_tail; usbh_xfer_isr_Expect(pipe_hdl_bulk, TUSB_CLASS_MSC, TUSB_EVENT_XFER_COMPLETE, sizeof(data2)+sizeof(xfer_data)); //------------- Code Under Test -------------// ehci_controller_run(hostid); TEST_ASSERT_EQUAL(0, p_qhd_bulk->total_xferred_bytes); TEST_ASSERT_TRUE(p_qhd_bulk->qtd_overlay.next.terminate); TEST_ASSERT_FALSE(p_head->used); TEST_ASSERT_FALSE(p_tail->used); TEST_ASSERT_NULL(p_qhd_bulk->p_qtd_list_head); TEST_ASSERT_NULL(p_qhd_bulk->p_qtd_list_tail); }
void test_bulk_xfer_hs_ping_out(void) { usbh_devices[dev_addr].speed = TUSB_SPEED_HIGH; pipe_handle_t pipe_hdl = hcd_pipe_open(dev_addr, &desc_ept_bulk_out, TUSB_CLASS_MSC); ehci_qhd_t *p_qhd = qhd_get_from_pipe_handle(pipe_hdl); //------------- Code Under Test -------------// TEST_ASSERT_STATUS( hcd_pipe_xfer(pipe_hdl, xfer_data, sizeof(xfer_data), true) ); ehci_qtd_t* p_qtd = p_qhd->p_qtd_list_head; TEST_ASSERT(p_qtd->pingstate_err); }
void test_bulk_xfer(void) { //------------- Code Under Test -------------// TEST_ASSERT_STATUS( hcd_pipe_xfer(pipe_hdl_bulk, xfer_data, sizeof(xfer_data), true) ); ehci_qtd_t* p_qtd = p_qhd_bulk->p_qtd_list_head; TEST_ASSERT_NOT_NULL(p_qtd); verify_qtd( p_qtd, xfer_data, sizeof(xfer_data)); TEST_ASSERT_EQUAL_HEX(p_qhd_bulk->qtd_overlay.next.address, p_qtd); TEST_ASSERT_TRUE(p_qtd->next.terminate); TEST_ASSERT_EQUAL(EHCI_PID_IN, p_qtd->pid); TEST_ASSERT_TRUE(p_qtd->int_on_complete); }
void test_rndis_initialization_notification_timeout(void) { usbh_control_xfer_subtask_ExpectWithArrayAndReturn( dev_addr, 0x21, SEND_ENCAPSULATED_COMMAND, 0, p_comm_interface->bInterfaceNumber, sizeof(rndis_msg_initialize_t), (uint8_t*)&msg_init, sizeof(rndis_msg_initialize_t), TUSB_ERROR_NONE); hcd_pipe_xfer_IgnoreAndReturn(TUSB_ERROR_NONE); osal_semaphore_wait_StubWithCallback(stub_sem_wait_timeout); tusbh_cdc_mounted_cb_Expect(dev_addr); //------------- Code Under Test -------------// TEST_ASSERT_STATUS( cdch_open_subtask(dev_addr, p_comm_interface, &length) ); TEST_ASSERT_FALSE(p_cdc->is_rndis); }
void test_rndis_initialization_sequence_ok(void) { // send initialize msg usbh_control_xfer_subtask_StubWithCallback(stub_control_xfer); // notification waiting hcd_pipe_xfer_StubWithCallback(stub_pipe_notification_xfer); osal_semaphore_wait_StubWithCallback(stub_sem_wait_success); osal_semaphore_post_ExpectAndReturn(p_rndis->sem_notification_hdl, TUSB_ERROR_NONE); tusbh_cdc_rndis_mounted_cb_Expect(dev_addr); //------------- Code Under Test -------------// TEST_ASSERT_STATUS( cdch_open_subtask(dev_addr, p_comm_interface, &length) ); TEST_ASSERT(p_cdc->is_rndis); TEST_ASSERT_EQUAL(msg_init_cmplt.max_xfer_size, p_rndis->max_xfer_size); }
//--------------------------------------------------------------------+ // Setup/Teardown + helper declare //--------------------------------------------------------------------+ void setUp(void) { ehci_controller_init(); memclr_(xfer_data, sizeof(xfer_data)); memclr_(usbh_devices, sizeof(usbh_device_info_t)*(TUSB_CFG_HOST_DEVICE_MAX+1)); TEST_ASSERT_STATUS( hcd_init() ); dev_addr = 1; hostid = RANDOM(CONTROLLER_HOST_NUMBER) + TEST_CONTROLLER_HOST_START_INDEX; helper_usbh_device_emulate(dev_addr, hub_addr, hub_port, hostid, TUSB_SPEED_HIGH); async_head = get_async_head( hostid ); //------------- pipe open -------------// pipe_hdl_bulk = hcd_pipe_open(dev_addr, &desc_ept_bulk_in, TUSB_CLASS_MSC); TEST_ASSERT_EQUAL(dev_addr, pipe_hdl_bulk.dev_addr); TEST_ASSERT_EQUAL(TUSB_XFER_BULK, pipe_hdl_bulk.xfer_type); p_qhd_bulk = &ehci_data.device[ dev_addr -1].qhd[ pipe_hdl_bulk.index ]; }
void IntlTestDecimalFormatAPI::TestFixedDecimal() { UErrorCode status = U_ZERO_ERROR; LocalPointer<DecimalFormat> df(new DecimalFormat("###", status), status); TEST_ASSERT_STATUS(status); FixedDecimal fd = df->getFixedDecimal(44, status); TEST_ASSERT_STATUS(status); ASSERT_EQUAL(44, fd.source); ASSERT_EQUAL(0, fd.visibleDecimalDigitCount); df.adoptInsteadAndCheckErrorCode(new DecimalFormat("###.00##", status), status); TEST_ASSERT_STATUS(status); fd = df->getFixedDecimal(123.456, status); TEST_ASSERT_STATUS(status); ASSERT_EQUAL(3, fd.visibleDecimalDigitCount); ASSERT_EQUAL(456, fd.decimalDigits); ASSERT_EQUAL(456, fd.decimalDigitsWithoutTrailingZeros); ASSERT_EQUAL(123, fd.intValue); ASSERT_EQUAL(FALSE, fd.hasIntegerValue); ASSERT_EQUAL(FALSE, fd.isNegative); df.adoptInsteadAndCheckErrorCode(new DecimalFormat("###", status), status); TEST_ASSERT_STATUS(status); fd = df->getFixedDecimal(123.456, status); TEST_ASSERT_STATUS(status); ASSERT_EQUAL(0, fd.visibleDecimalDigitCount); ASSERT_EQUAL(0, fd.decimalDigits); ASSERT_EQUAL(0, fd.decimalDigitsWithoutTrailingZeros); ASSERT_EQUAL(123, fd.intValue); ASSERT_EQUAL(TRUE, fd.hasIntegerValue); ASSERT_EQUAL(FALSE, fd.isNegative); df.adoptInsteadAndCheckErrorCode(new DecimalFormat("###.0", status), status); TEST_ASSERT_STATUS(status); fd = df->getFixedDecimal(123.01, status); TEST_ASSERT_STATUS(status); ASSERT_EQUAL(1, fd.visibleDecimalDigitCount); ASSERT_EQUAL(0, fd.decimalDigits); ASSERT_EQUAL(0, fd.decimalDigitsWithoutTrailingZeros); ASSERT_EQUAL(123, fd.intValue); ASSERT_EQUAL(TRUE, fd.hasIntegerValue); ASSERT_EQUAL(FALSE, fd.isNegative); df.adoptInsteadAndCheckErrorCode(new DecimalFormat("###.0", status), status); TEST_ASSERT_STATUS(status); fd = df->getFixedDecimal(123.06, status); TEST_ASSERT_STATUS(status); ASSERT_EQUAL(1, fd.visibleDecimalDigitCount); ASSERT_EQUAL(1, fd.decimalDigits); ASSERT_EQUAL(1, fd.decimalDigitsWithoutTrailingZeros); ASSERT_EQUAL(123, fd.intValue); ASSERT_EQUAL(FALSE, fd.hasIntegerValue); ASSERT_EQUAL(FALSE, fd.isNegative); df.adoptInsteadAndCheckErrorCode(new DecimalFormat("@@@@@", status), status); // Significant Digits TEST_ASSERT_STATUS(status); fd = df->getFixedDecimal(123, status); TEST_ASSERT_STATUS(status); ASSERT_EQUAL(2, fd.visibleDecimalDigitCount); ASSERT_EQUAL(0, fd.decimalDigits); ASSERT_EQUAL(0, fd.decimalDigitsWithoutTrailingZeros); ASSERT_EQUAL(123, fd.intValue); ASSERT_EQUAL(TRUE, fd.hasIntegerValue); ASSERT_EQUAL(FALSE, fd.isNegative); df.adoptInsteadAndCheckErrorCode(new DecimalFormat("@@@@@", status), status); // Significant Digits TEST_ASSERT_STATUS(status); fd = df->getFixedDecimal(1.23, status); TEST_ASSERT_STATUS(status); ASSERT_EQUAL(4, fd.visibleDecimalDigitCount); ASSERT_EQUAL(2300, fd.decimalDigits); ASSERT_EQUAL(23, fd.decimalDigitsWithoutTrailingZeros); ASSERT_EQUAL(1, fd.intValue); ASSERT_EQUAL(FALSE, fd.hasIntegerValue); ASSERT_EQUAL(FALSE, fd.isNegative); fd = df->getFixedDecimal(uprv_getInfinity(), status); TEST_ASSERT_STATUS(status); ASSERT_EQUAL(TRUE, fd.isNanOrInfinity); fd = df->getFixedDecimal(0.0, status); ASSERT_EQUAL(FALSE, fd.isNanOrInfinity); fd = df->getFixedDecimal(uprv_getNaN(), status); ASSERT_EQUAL(TRUE, fd.isNanOrInfinity); TEST_ASSERT_STATUS(status); // Test Big Decimal input. // 22 digits before and after decimal, will exceed the precision of a double // and force DecimalFormat::getFixedDecimal() to work with a digit list. df.adoptInsteadAndCheckErrorCode( new DecimalFormat("#####################0.00####################", status), status); TEST_ASSERT_STATUS(status); Formattable fable("12.34", status); TEST_ASSERT_STATUS(status); fd = df->getFixedDecimal(fable, status); TEST_ASSERT_STATUS(status); ASSERT_EQUAL(2, fd.visibleDecimalDigitCount); ASSERT_EQUAL(34, fd.decimalDigits); ASSERT_EQUAL(34, fd.decimalDigitsWithoutTrailingZeros); ASSERT_EQUAL(12, fd.intValue); ASSERT_EQUAL(FALSE, fd.hasIntegerValue); ASSERT_EQUAL(FALSE, fd.isNegative); fable.setDecimalNumber("12.345678901234567890123456789", status); TEST_ASSERT_STATUS(status); fd = df->getFixedDecimal(fable, status); TEST_ASSERT_STATUS(status); ASSERT_EQUAL(22, fd.visibleDecimalDigitCount); ASSERT_EQUAL(345678901234567890LL, fd.decimalDigits); ASSERT_EQUAL(34567890123456789LL, fd.decimalDigitsWithoutTrailingZeros); ASSERT_EQUAL(12, fd.intValue); ASSERT_EQUAL(FALSE, fd.hasIntegerValue); ASSERT_EQUAL(FALSE, fd.isNegative); // On field overflow, Integer part is truncated on the left, fraction part on the right. fable.setDecimalNumber("123456789012345678901234567890.123456789012345678901234567890", status); TEST_ASSERT_STATUS(status); fd = df->getFixedDecimal(fable, status); TEST_ASSERT_STATUS(status); ASSERT_EQUAL(22, fd.visibleDecimalDigitCount); ASSERT_EQUAL(123456789012345678LL, fd.decimalDigits); ASSERT_EQUAL(123456789012345678LL, fd.decimalDigitsWithoutTrailingZeros); ASSERT_EQUAL(345678901234567890LL, fd.intValue); ASSERT_EQUAL(FALSE, fd.hasIntegerValue); ASSERT_EQUAL(FALSE, fd.isNegative); // Digits way to the right of the decimal but within the format's precision aren't truncated fable.setDecimalNumber("1.0000000000000000000012", status); TEST_ASSERT_STATUS(status); fd = df->getFixedDecimal(fable, status); TEST_ASSERT_STATUS(status); ASSERT_EQUAL(22, fd.visibleDecimalDigitCount); ASSERT_EQUAL(12, fd.decimalDigits); ASSERT_EQUAL(12, fd.decimalDigitsWithoutTrailingZeros); ASSERT_EQUAL(1, fd.intValue); ASSERT_EQUAL(FALSE, fd.hasIntegerValue); ASSERT_EQUAL(FALSE, fd.isNegative); // Digits beyond the precision of the format are rounded away fable.setDecimalNumber("1.000000000000000000000012", status); TEST_ASSERT_STATUS(status); fd = df->getFixedDecimal(fable, status); TEST_ASSERT_STATUS(status); ASSERT_EQUAL(2, fd.visibleDecimalDigitCount); ASSERT_EQUAL(0, fd.decimalDigits); ASSERT_EQUAL(0, fd.decimalDigitsWithoutTrailingZeros); ASSERT_EQUAL(1, fd.intValue); ASSERT_EQUAL(TRUE, fd.hasIntegerValue); ASSERT_EQUAL(FALSE, fd.isNegative); // Negative numbers come through fable.setDecimalNumber("-1.0000000000000000000012", status); TEST_ASSERT_STATUS(status); fd = df->getFixedDecimal(fable, status); TEST_ASSERT_STATUS(status); ASSERT_EQUAL(22, fd.visibleDecimalDigitCount); ASSERT_EQUAL(12, fd.decimalDigits); ASSERT_EQUAL(12, fd.decimalDigitsWithoutTrailingZeros); ASSERT_EQUAL(1, fd.intValue); ASSERT_EQUAL(FALSE, fd.hasIntegerValue); ASSERT_EQUAL(TRUE, fd.isNegative); // MinFractionDigits from format larger than from number. fable.setDecimalNumber("1000000000000000000000.3", status); TEST_ASSERT_STATUS(status); fd = df->getFixedDecimal(fable, status); TEST_ASSERT_STATUS(status); ASSERT_EQUAL(2, fd.visibleDecimalDigitCount); ASSERT_EQUAL(30, fd.decimalDigits); ASSERT_EQUAL(3, fd.decimalDigitsWithoutTrailingZeros); ASSERT_EQUAL(100000000000000000LL, fd.intValue); ASSERT_EQUAL(FALSE, fd.hasIntegerValue); ASSERT_EQUAL(FALSE, fd.isNegative); // Test some int64_t values that are out of the range of a double fable.setInt64(4503599627370496LL); TEST_ASSERT_STATUS(status); fd = df->getFixedDecimal(fable, status); TEST_ASSERT_STATUS(status); ASSERT_EQUAL(2, fd.visibleDecimalDigitCount); ASSERT_EQUAL(0, fd.decimalDigits); ASSERT_EQUAL(0, fd.decimalDigitsWithoutTrailingZeros); ASSERT_EQUAL(4503599627370496LL, fd.intValue); ASSERT_EQUAL(TRUE, fd.hasIntegerValue); ASSERT_EQUAL(FALSE, fd.isNegative); fable.setInt64(4503599627370497LL); TEST_ASSERT_STATUS(status); fd = df->getFixedDecimal(fable, status); TEST_ASSERT_STATUS(status); ASSERT_EQUAL(2, fd.visibleDecimalDigitCount); ASSERT_EQUAL(0, fd.decimalDigits); ASSERT_EQUAL(0, fd.decimalDigitsWithoutTrailingZeros); ASSERT_EQUAL(4503599627370497LL, fd.intValue); ASSERT_EQUAL(TRUE, fd.hasIntegerValue); ASSERT_EQUAL(FALSE, fd.isNegative); fable.setInt64(9223372036854775807LL); TEST_ASSERT_STATUS(status); fd = df->getFixedDecimal(fable, status); TEST_ASSERT_STATUS(status); ASSERT_EQUAL(2, fd.visibleDecimalDigitCount); ASSERT_EQUAL(0, fd.decimalDigits); ASSERT_EQUAL(0, fd.decimalDigitsWithoutTrailingZeros); // note: going through DigitList path to FixedDecimal, which is trimming // int64_t fields to 18 digits. See ticket Ticket #10374 // ASSERT_EQUAL(223372036854775807LL, fd.intValue); if (!(fd.intValue == 223372036854775807LL || fd.intValue == 9223372036854775807LL)) { dataerrln("File %s, Line %d, fd.intValue = %lld", __FILE__, __LINE__, fd.intValue); } ASSERT_EQUAL(TRUE, fd.hasIntegerValue); ASSERT_EQUAL(FALSE, fd.isNegative); }