Files
test_ta1_usb_01/testinfo.cpp
2025-08-07 15:18:25 +03:00

310 lines
7.0 KiB
C++

#include <QTest>
#include "testinfo.h"
#include "WDMTMKv2.cpp"
#include <windows.h>
HANDLE hEvent;
TTmkEventData tmkEvD;
void testInfo::init()
{
if (isFailed)
{
qDebug() << "Skip";
QSKIP("");
}
}
void testInfo::cleanup()
{
bool a = QTest::currentTestFailed();
if (a)
isFailed = a;
}
void testInfo::cleanupTestCase()
{
qDebug() << "TmkClose()";
TmkClose();
if (hEvent)
CloseHandle(hEvent);
}
void testInfo::testcreateevent()
{
hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
QVERIFY(hEvent);
}
void testInfo::testTmkOpen()
{
DWORD a;
a = TmkOpen();
QCOMPARE(a, DWORD(0));
}
void testInfo::testtmkgetmaxn()
{
QCOMPARE(tmkgetmaxn(), (int)(0));
}
void testInfo::testmrtgetmaxn()
{
QCOMPARE(mrtgetmaxn(), (int)(0));
}
void testInfo::testtmkconfig()
{
int hTmk = 0;
QCOMPARE(tmkconfig(hTmk), (int)(0));
}
void testInfo::testtmkselect()
{
int hTmk = 0;
QCOMPARE(tmkselect(hTmk), (int)(0));
}
void testInfo::testtmkgetinfo()
{
TTmkConfigData tmkCfg;
int hTmk = 0;
tmkgetinfo(&tmkCfg);
QCOMPARE(hTmk, (int)(0)); //Device Number
QCOMPARE(tmkCfg.nType, (short)(9)); //Device Type
QCOMPARE(tmkCfg.szName, "TA1USB"); //Device Name
QCOMPARE(tmkCfg.wPorts1, (unsigned short)(0)); //Device I/O Ports
if (tmkCfg.wPorts2 == (unsigned short)(0xFFFF)) //Device I/O Ports
;
else
QCOMPARE(tmkCfg.wPorts2, (unsigned short)(0));
if (tmkCfg.wIrq2 == (unsigned short)(0xFF))
QCOMPARE(tmkCfg.wIrq1, (unsigned short)(0)); //Device Interrupt
else
{
QCOMPARE(tmkCfg.wIrq1, (unsigned short)(0)); //Device Interrupts
QCOMPARE(tmkCfg.wIrq2, (unsigned short)(0));
}
QCOMPARE(tmkCfg.wIODelay, (unsigned short)(0)); //Device I/O Delay
}
void testInfo::testtmkgethwver()
{
QCOMPARE(tmkgethwver(), (unsigned short)(11));
}
void testInfo::testbcreset()
{
QCOMPARE(bcreset(), (int)(0));
}
void testInfo::testbcgetmaxbase()
{
QCOMPARE(bcgetmaxbase(), (unsigned short)(1023));
}
void testInfo::testbcputgetw()
{
int fError;
unsigned short wBase, wAddr;
unsigned short wMaxBase = bcgetmaxbase();
for (wBase = 0; wBase <= wMaxBase; ++wBase)
{
bcdefbase(wBase);
for (wAddr = 0; wAddr <= 63; ++wAddr)
{
bcputw(wAddr, wAddr|(wBase<<6));
}
}
fError = 0;
for (wBase = 0; wBase <= wMaxBase; ++wBase)
{
bcdefbase(wBase);
for (wAddr = 0; wAddr <= 63; ++wAddr)
{
if (bcgetw(wAddr) != (unsigned short)(wAddr|(wBase<<6)))
fError = 1;
}
}
QCOMPARE(fError, (int)(0));
}
void testInfo::testbcputgetblk()
{
int fError;
unsigned short awBuf[64];
unsigned short wBase, wAddr;
unsigned short wMaxBase = bcgetmaxbase();
for (wBase = 0; wBase <= wMaxBase; ++wBase)
{
bcdefbase(wBase);
for (wAddr = 0; wAddr <= 63; ++wAddr)
{
awBuf[63-wAddr] = wBase+(wAddr<<8);
}
bcputblk(0, awBuf, 64);
}
fError = 0;
for (wBase = 0; wBase <= wMaxBase; ++wBase)
{
bcdefbase(wBase);
bcgetblk(0, awBuf, 64);
for (wAddr = 0; wAddr <= 63; ++wAddr)
{
if (awBuf[63-wAddr] != (wBase+(wAddr<<8)))
fError = 1;
}
}
QCOMPARE(fError, (int)(0));
}
void testInfo::testrtreset()
{
QCOMPARE(rtreset(), (int)(0));
}
void testInfo::testrtgetmaxpage()
{
QCOMPARE(rtgetmaxpage(), (unsigned short)(0));
}
void testInfo::testrtputgetw()
{
int fError;
unsigned short wPage, wAddr, wSubAddr;
unsigned short wMaxPage = rtgetmaxpage();
for (wPage = 0; wPage <= wMaxPage; ++wPage)
{
rtdefpage(wPage);
for (wSubAddr = 0; wSubAddr <= 0x1F; ++wSubAddr)
{
rtdefsubaddr(RT_RECEIVE, wSubAddr);
for (wAddr = 0; wAddr <= 31; ++wAddr)
rtputw(wAddr, wAddr|(wSubAddr<<8)|(wPage<<13));
rtdefsubaddr(RT_TRANSMIT, wSubAddr);
for (wAddr = 0; wAddr <= 31; ++wAddr)
rtputw(wAddr, (wAddr+32)|(wSubAddr<<8)|(wPage<<13));
}
}
fError = 0;
for (wPage = 0; wPage <= wMaxPage; ++wPage)
{
rtdefpage(wPage);
for (wSubAddr = 0; wSubAddr <= 0x1F; ++wSubAddr)
{
rtdefsubaddr(RT_RECEIVE, wSubAddr);
for (wAddr = 0; wAddr <= 31; ++wAddr)
{
if (rtgetw(wAddr) != (wAddr|(wSubAddr<<8)|(wPage<<13)))
fError = 1;
}
rtdefsubaddr(RT_TRANSMIT, wSubAddr);
for (wAddr = 0; wAddr <= 31; ++wAddr)
{
if (rtgetw(wAddr) != ((wAddr+32)|(wSubAddr<<8)|(wPage<<13)))
fError = 1;
}
}
}
QCOMPARE(fError, (int)(0));
}
void testInfo::testrtputgetblk()
{
int fError;
unsigned short awBuf[64];
unsigned short wPage, wAddr, wSubAddr;
unsigned short wMaxPage = rtgetmaxpage();
for (wPage = 0; wPage <= wMaxPage; ++wPage)
{
rtdefpage(wPage);
for (wSubAddr = 0; wSubAddr <= 0x1F; ++wSubAddr)
{
rtdefsubaddr(RT_RECEIVE, wSubAddr);
for (wAddr = 0; wAddr <= 31; ++wAddr)
awBuf[31-wAddr] = wSubAddr|(wAddr<<8)|(wPage<<13);
rtputblk(0, awBuf, 32);
rtdefsubaddr(RT_TRANSMIT, wSubAddr);
for (wAddr = 0; wAddr <= 31; ++wAddr)
awBuf[31-wAddr] = (wSubAddr+32)|(wAddr<<8)|(wPage<<13);
rtputblk(0, awBuf, 32);
}
}
fError = 0;
for (wPage = 0; wPage <= wMaxPage; ++wPage)
{
rtdefpage(wPage);
for (wSubAddr = 0; wSubAddr <= 0x1F; ++wSubAddr)
{
rtdefsubaddr(RT_RECEIVE, wSubAddr);
rtgetblk(0, awBuf, 32);
for (wAddr = 0; wAddr <= 31; ++wAddr)
{
if (awBuf[31-wAddr] != (wSubAddr|(wAddr<<8)|(wPage<<13)))
fError = 1;
}
rtdefsubaddr(RT_TRANSMIT, wSubAddr);
rtgetblk(0, awBuf, 32);
for (wAddr = 0; wAddr <= 31; ++wAddr)
{
if (awBuf[31-wAddr] != ((wSubAddr+32)|(wAddr<<8)|(wPage<<13)))
fError = 1;
}
}
}
QCOMPARE(fError, (int)(0));
}
void testInfo::testgetInt()
{
bcreset();
tmkdefevent(hEvent, TRUE);
tmkgetevd(&tmkEvD);
QCOMPARE(tmkEvD.nInt, (int)(0));
bcdefbase(0);
bcputw(0, 0xFFE1);
bcstart(0, CTRL_C_BRCST);
switch (WaitForSingleObject(hEvent, 1000))
{
case WAIT_OBJECT_0:
ResetEvent(hEvent);
qDebug() << "We got interrupt!";
break;
case WAIT_TIMEOUT:
qDebug() << "We didn't get interrupt!";
break;
default:
qDebug() << "Somebody abandon our interrupt waiting!";
break;
}
tmkgetevd(&tmkEvD);
QCOMPARE(tmkEvD.nInt, (int)(1));
tmkdefevent(0,TRUE);
}