示例#1
0
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);
}
示例#2
0
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);
}
示例#3
0
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() );
}
示例#4
0
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);
}
示例#5
0
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);
}
示例#6
0
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);
}
示例#7
0
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);
}
示例#8
0
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);
}
示例#9
0
//--------------------------------------------------------------------+
// 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 ];
}
示例#10
0
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);

}