VirtualBox

Changeset 46817 in vbox


Ignore:
Timestamp:
Jun 26, 2013 9:19:50 PM (12 years ago)
Author:
vboxsync
Message:

Devices/Input/UsbMouse: simple report test.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Input/testcase/tstUsbMouse.cpp

    r46799 r46817  
    7272    NOREF(iLun);
    7373    NOREF(pszDesc);
    74     pUsbIns->IBase = *pBaseInterface;
     74    s_drvTstMouse.pDrvBase = pBaseInterface;
     75    s_drvTstMouse.pDrv = PDMIBASE_QUERY_INTERFACE(pBaseInterface,
     76                                                  PDMIMOUSEPORT);
    7577    *ppBaseInterface = &s_drvTstMouse.IBase;
    7678    return VINF_SUCCESS;
     
    121123    if (RT_SUCCESS(rc))
    122124    {
     125        s_drvTstMouse.pDrv = NULL;
     126        s_drvTstMouse.pDrvBase = NULL;
    123127        pThis->iInstance = iInstance;
    124128        pThis->pHlpR3 = &s_tstUsbHlp;
    125129        rc = g_UsbHidMou.pfnConstruct(pThis, iInstance, pCfg, NULL);
    126         *ppThis = pThis;
    127130        if (RT_SUCCESS(rc))
     131        {
     132           *ppThis = pThis;
    128133           return rc;
     134        }
    129135    }
    130136    /* Failure */
     
    142148    RTTestSub(hTest, "simple construction and destruction");
    143149    int rc = tstMouseConstruct(0, false, 1, &pThis);
    144     if (RT_SUCCESS(rc))
     150    RTTEST_CHECK_RC_OK(hTest, rc);
     151    if (pThis)
    145152        g_UsbHidMou.pfnDestruct(pThis);
     153}
     154
     155
     156static void testSendPosition(RTTEST hTest)
     157{
     158    PPDMUSBINS pThis = NULL;
     159    VUSBURB Urb = { 0 };
     160    RTTestSub(hTest, "sending a position event");
     161    int rc = tstMouseConstruct(0, true, 1, &pThis);
     162    if (RT_SUCCESS(rc))
     163    {
     164        rc = g_UsbHidMou.pfnUsbReset(pThis, false);
     165    }
     166    if (RT_SUCCESS(rc))
     167    {
     168        if (s_drvTstMouse.pDrv)
     169            s_drvTstMouse.pDrv->pfnPutEventAbs(s_drvTstMouse.pDrv, 300, 200, 1,
     170                                               0, 3);
     171        else
     172            rc = VERR_PDM_MISSING_INTERFACE;
     173    }
     174    if (RT_SUCCESS(rc))
     175    {
     176        Urb.EndPt = 0x01;
     177        rc = g_UsbHidMou.pfnUrbQueue(pThis, &Urb);
     178    }
     179    if (RT_SUCCESS(rc))
     180    {
     181        PVUSBURB pUrb = g_UsbHidMou.pfnUrbReap(pThis, 0);
     182        if (pUrb)
     183        {
     184            if (pUrb == &Urb)
     185            {
     186                if (   Urb.abData[0] != 1                  /* Report ID */
     187                    || Urb.abData[1] != 3                  /* Buttons */
     188                    || (int8_t)Urb.abData[2] != -1         /* Wheel, inverted */
     189                    || *(uint16_t *)&Urb.abData[4] != 150  /* x >> 1 */
     190                    || *(uint16_t *)&Urb.abData[6] != 100  /* y >> 1 */)
     191                    rc = VERR_GENERAL_FAILURE;
     192            }
     193            else
     194                rc = VERR_GENERAL_FAILURE;
     195        }
     196        else
     197            rc = VERR_GENERAL_FAILURE;
     198    }
    146199    RTTEST_CHECK_RC_OK(hTest, rc);
     200    if (pThis)
     201        g_UsbHidMou.pfnDestruct(pThis);
    147202}
    148203
     
    170225     */
    171226    testConstructAndDestruct(hTest);
     227    testSendPosition(hTest);
    172228    return RTTestSummaryAndDestroy(hTest);
    173229}
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette