/*++ Copyright (c) 1995 Microsoft Corporation Module Name: itlnev.c Abstract: This module contains the test functions for lineNegotiateExtVersion Author: Oliver Wallace (OliverW) 1-Aug-1995 Revision History: --*/ #include "windows.h" #include "malloc.h" #include "string.h" #include "tapi.h" #include "ttest.h" #include "doline.h" #include "tcore.h" #include "iline.h" // lineNegotiateExtVersion // // The following tests are made: // // Tested Notes // ------------------------------------------------------------------------- // LINEERR_BADDEVICEID Y // LINEERR_INCOMPATIBLEAPIVERSION Y // LINEERR_INCOMPATIBLEEXTVERSION Y High/Low both too high tested // High/Low invalide and flipped tested // High/Low each invalid -- both tested // LINEERR_INVALAPPHANDLE Y // LINEERR_INVALPOINTER Y // LINEERR_NOMEM // LINEERR_NODEVICE // LINEERR_NODRIVER // LINEERR_OPERATIONFAILED // LINEERR_RESOURCEUNAVAIL // LINEERR_UNINITIALIZED // LINEERR_OPERATIONUNAVAIL // // Valid Cases Y // // hLineApp Y // dwDeviceID Y // dwAPIVersion Y // dwExtLowVersion Y // dwExtHighVersion Y // lpdwExtVersion Y BOOL TestLineNegotiateExtVersion(BOOL fQuietMode, BOOL fStandAlone) { LPTAPILINETESTINFO lpTapiLineTestInfo; BOOL fTestPassed = TRUE; TapiLineTestInit(); lpTapiLineTestInfo = GetLineTestInfo(); OutputTAPIDebugInfo( DBUG_SHOW_DETAIL, "\n*****************************************************************************************"); OutputTAPIDebugInfo( DBUG_SHOW_DETAIL, ">> Test lineNegotiateExtVersion"); lpTapiLineTestInfo->lpLineInitializeExParams = (LPLINEINITIALIZEEXPARAMS) AllocFromTestHeap ( sizeof(LINEINITIALIZEEXPARAMS)); lpTapiLineTestInfo->lpLineInitializeExParams->dwTotalSize = sizeof(LINEINITIALIZEEXPARAMS); lpTapiLineTestInfo->lpLineInitializeExParams->dwOptions = LINEINITIALIZEEXOPTION_USEHIDDENWINDOW; lpTapiLineTestInfo->lpdwAPIVersion = &lpTapiLineTestInfo->dwAPIVersion; lpTapiLineTestInfo->dwAPIVersion = TAPI_VERSION2_0; if (! DoLineInitializeEx(lpTapiLineTestInfo, TAPISUCCESS)) { TLINE_FAIL(); } lpTapiLineTestInfo->dwDeviceID = (*(lpTapiLineTestInfo->lpdwNumDevs) == 0 ? 0 : *(lpTapiLineTestInfo->lpdwNumDevs)-1); lpTapiLineTestInfo->dwExtLowVersion = GOOD_EXTVERSION; lpTapiLineTestInfo->dwExtHighVersion = GOOD_EXTVERSION; if(IsESPLineDevice(lpTapiLineTestInfo)) { if (! DoLineNegotiateExtVersion(lpTapiLineTestInfo, TAPISUCCESS)) { TLINE_FAIL(); } } else { if (! DoLineNegotiateExtVersion(lpTapiLineTestInfo, LINEERR_OPERATIONUNAVAIL)) { TLINE_FAIL(); } } /* // Try invalid higher version...low version still ok lpTapiLineTestInfo->dwExtHighVersion = BAD_EXTVERSION; if (! DoLineNegotiateExtVersion(lpTapiLineTestInfo, TAPISUCCESS)) { ITLNEV_FAIL(); } lpTapiLineTestInfo->dwExtHighVersion = GOOD_EXTVERSION; // Flip high and low extension version parameters. // Also, make the high parameter too low to be valid and the low too high. // This checks that the low is being checked as the low version and the // high is being checked as the high version. lpTapiLineTestInfo->dwExtLowVersion = BAD_EXTVERSION; lpTapiLineTestInfo->dwExtHighVersion = BAD_EXTVERSION; if (! DoLineNegotiateExtVersion( lpTapiLineTestInfo, LINEERR_INCOMPATIBLEEXTVERSION )) { ITLNEV_FAIL(); } lpTapiLineTestInfo->dwExtLowVersion = GOOD_EXTVERSION; lpTapiLineTestInfo->dwExtHighVersion = GOOD_EXTVERSION; // Check low and high extension versions that are both too high lpTapiLineTestInfo->dwExtLowVersion = BAD_EXTVERSION; lpTapiLineTestInfo->dwExtHighVersion = BAD_EXTVERSION; if (! DoLineNegotiateExtVersion( lpTapiLineTestInfo, LINEERR_INCOMPATIBLEEXTVERSION )) { ITLNEV_FAIL(); } lpTapiLineTestInfo->dwExtLowVersion = GOOD_EXTVERSION; lpTapiLineTestInfo->dwExtHighVersion = GOOD_EXTVERSION; // Check bad device ID lpTapiLineTestInfo->dwDeviceID = INVLD_DWDEVICEID; if (! DoLineNegotiateExtVersion(lpTapiLineTestInfo, LINEERR_BADDEVICEID)) { ITLNEV_FAIL(); } lpTapiLineTestInfo->dwDeviceID = dwDeviceID; // Check invalid line app handle hLineApp_Orig = *lpTapiLineTestInfo->lphLineApp; *lpTapiLineTestInfo->lphLineApp = INVLD_HLINEAPP; if (! DoLineNegotiateExtVersion(lpTapiLineTestInfo, LINEERR_INVALAPPHANDLE)) { ITLNEV_FAIL(); } *lpTapiLineTestInfo->lphLineApp = hLineApp_Orig; // Check null lpdwExtVersion pointer lpTapiLineTestInfo->lpdwExtVersion = NULL; if (! DoLineNegotiateExtVersion(lpTapiLineTestInfo, LINEERR_INVALPOINTER)) { ITLNEV_FAIL(); } TapiLineTestInfo.lpdwExtVersion = &dwExtVersion; // Check incompatible API Version dwAPIVersion_Orig = *lpTapiLineTestInfo->lpdwAPIVersion; *lpTapiLineTestInfo->lpdwAPIVersion = TOOHIGH_APIVERSION; if (! DoLineNegotiateExtVersion( lpTapiLineTestInfo, LINEERR_INCOMPATIBLEAPIVERSION)) { ITLNEV_FAIL(); } *lpTapiLineTestInfo->lpdwAPIVersion = dwAPIVersion_Orig; */ // Shutdown and end the tests if (! DoLineShutdown(lpTapiLineTestInfo, TAPISUCCESS)) { TLINE_FAIL(); } FreeTestHeap(); if(fTestPassed) TapiLogDetail( DBUG_SHOW_DETAIL, "## lineNegotiateExtVersion Test Passed"); else TapiLogDetail( DBUG_SHOW_DETAIL, "## lineNegotiateExtVersion Test Failed"); return fTestPassed; }