Skip to content
Snippets Groups Projects
UASUnitTest.cc 9.33 KiB
Newer Older
  • Learn to ignore specific revisions
  • #include "UASUnitTest.h"
    
    UASUnitTest::UASUnitTest()
    {
    }
    
    void UASUnitTest::initTestCase()
    {
    
        mav= new MAVLinkProtocol();
        link = new SerialLink();
        uas=new UAS(mav,UASID);
    
    }
    
    void UASUnitTest::getUASID_test()
    {
        // Test a default ID of zero is assigned
        UAS* uas2 = new UAS(mav);
        QCOMPARE(uas2->getUASID(), 0);
        delete uas2;
    
        // Test that the chosen ID was assigned at construction
        QCOMPARE(uas->getUASID(), UASID);
    
        // Make sure that no other ID was sert
        QEXPECT_FAIL("", "When you set an ID it does not use the default ID of 0", Continue);
        QCOMPARE(uas->getUASID(), 0);
    
    
        // Make sure that ID >= 0
        QCOMPARE(uas->getUASID(), 100);
    
      // Test that the name is build as MAV + ID
      QCOMPARE(uas->getUASName(), "MAV " + QString::number(UASID));
    
        UAS* uas2 = new UAS(mav);
        // Test that the uptime starts at zero to a
        // precision of seconds
        QCOMPARE(floor(uas2->getUptime()/1000.0), 0.0);
    
        // Sleep for three seconds
        QTest::qSleep(3000);
    
        // Test that the up time is computed correctly to a
        // precision of seconds
        QCOMPARE(floor(uas2->getUptime()/1000.0), 3.0);
    
        // Verify that upon construction the Comm status is disconnected
        QCOMPARE(uas->getCommunicationStatus(), static_cast<int>(UASInterface::COMM_DISCONNECTED));
    
    }
    
    void UASUnitTest::filterVoltage_test()
    {
        float verificar=uas->filterVoltage(0.4f);
    
        // Verify that upon construction the Comm status is disconnected
        QCOMPARE(verificar, 8.52f);
    
        int type = uas->getAutopilotType();
        // Verify that upon construction the autopilot is set to -1
        QCOMPARE(type, -1);
    
        uas->setAutopilotType(2);
        // Verify that the autopilot is set
        QCOMPARE(uas->getAutopilotType(), 2);
    
        QString state, desc;
        state = "";
        desc = "";
    
        uas->getStatusForCode(MAV_STATE_UNINIT, state, desc);
        QVERIFY(state == "UNINIT");
    
        uas->getStatusForCode(MAV_STATE_UNINIT, state, desc);
        QVERIFY(state == "UNINIT");
    
        uas->getStatusForCode(MAV_STATE_BOOT, state, desc);
        QVERIFY(state == "BOOT");
    
        uas->getStatusForCode(MAV_STATE_CALIBRATING, state, desc);
        QVERIFY(state == "CALIBRATING");
    
        uas->getStatusForCode(MAV_STATE_ACTIVE, state, desc);
        QVERIFY(state == "ACTIVE");
    
        uas->getStatusForCode(MAV_STATE_STANDBY, state, desc);
        QVERIFY(state == "STANDBY");
    
        uas->getStatusForCode(MAV_STATE_CRITICAL, state, desc);
        QVERIFY(state == "CRITICAL");
    
        uas->getStatusForCode(MAV_STATE_EMERGENCY, state, desc);
        QVERIFY(state == "EMERGENCY");
    
        uas->getStatusForCode(MAV_STATE_POWEROFF, state, desc);
        QVERIFY(state == "SHUTDOWN");
    
        uas->getStatusForCode(5325, state, desc);
        QVERIFY(state == "UNKNOWN");
    
    }
    void UASUnitTest::getLatitude_test()
    {  QCOMPARE(uas->getLatitude(), 0.0);
    }
    void UASUnitTest::getLongitude_test()
    {
    
        QCOMPARE(uas->getAirframe(), 0);
    
        uas->setAirframe(25);
        QVERIFY(uas->getAirframe() == 25);
    
        QVector<Waypoint*> kk = uas->getWaypointManager()->getWaypointList();
        QCOMPARE(kk.count(), 0);
    
        Waypoint* wp = new Waypoint(0,0,0,0,0,false, false, 0,0, MAV_FRAME_GLOBAL, MAV_ACTION_NAVIGATE);
        uas->getWaypointManager()->addWaypoint(wp, true);
    
        kk = uas->getWaypointManager()->getWaypointList();
        QCOMPARE(kk.count(), 1);
    
        wp = new Waypoint();
        uas->getWaypointManager()->addWaypoint(wp, false);
    
        kk = uas->getWaypointManager()->getWaypointList();
        QCOMPARE(kk.count(), 2);
    
        uas->getWaypointManager()->removeWaypoint(1);
        kk = uas->getWaypointManager()->getWaypointList();
        QCOMPARE(kk.count(), 1);
    
        uas->getWaypointManager()->removeWaypoint(0);
        kk = uas->getWaypointManager()->getWaypointList();
        QCOMPARE(kk.count(), 0);
    
        qDebug()<<"disconnect SIGNAL waypointListChanged";
    }
    
    void UASUnitTest::getWaypoint_test()
    {
        Waypoint* wp = new Waypoint(0,5.6,0,0,0,false, false, 0,0, MAV_FRAME_GLOBAL, MAV_ACTION_NAVIGATE);
    
        uas->getWaypointManager()->addWaypoint(wp, true);
    
        QVector<Waypoint*> wpList = uas->getWaypointManager()->getWaypointList();
    
        QCOMPARE(wpList.count(), 1);
        QCOMPARE(static_cast<quint16>(0), static_cast<Waypoint*>(wpList.at(0))->getId());
    
        wp = new Waypoint(0, 5.6, 2, 3);
        uas->getWaypointManager()->addWaypoint(wp, true);
        Waypoint* wp2 = static_cast<Waypoint*>(wpList.at(0));
    
        QCOMPARE(wp->getX(), wp2->getX());
        QCOMPARE(wp->getFrame(), MAV_FRAME_GLOBAL);
        QCOMPARE(wp->getFrame(), wp2->getFrame());
    
        QSignalSpy spy(uas->getWaypointManager(), SIGNAL(waypointListChanged()));
    
        Waypoint* wp = new Waypoint(0,5.6,0,0,0,false, false, 0,0, MAV_FRAME_GLOBAL, MAV_ACTION_NAVIGATE);
        uas->getWaypointManager()->addWaypoint(wp, true);
    
        QCOMPARE(spy.count(), 1); // 1 listChanged for add wayPoint
        uas->getWaypointManager()->removeWaypoint(0);
        QCOMPARE(spy.count(), 2); // 2 listChanged for remove wayPoint
    
        QSignalSpy spyDestroyed(uas->getWaypointManager(), SIGNAL(destroyed()));
        QVERIFY(spyDestroyed.isValid());
        QCOMPARE( spyDestroyed.count(), 0 );
    
        delete uas;// delete(destroyed) uas for validating
        QCOMPARE(spyDestroyed.count(), 1);// count destroyed uas should are 1
    
        uas = new UAS(mav,UASID);
        QSignalSpy spy2(uas->getWaypointManager(), SIGNAL(waypointListChanged()));
        QCOMPARE(spy2.count(), 0);
    
        uas->getWaypointManager()->addWaypoint(wp, true);
        QCOMPARE(spy2.count(), 1);
    
        uas->getWaypointManager()->clearWaypointList();
        QVector<Waypoint*> wpList = uas->getWaypointManager()->getWaypointList();
        QCOMPARE(wpList.count(), 1);
    
        QSignalSpy spy(uas, SIGNAL(modeChanged(int,QString,QString)));
        uas->setMode(2);
        QCOMPARE(spy.count(), 0);// not solve for UAS not receiving message from UAS
    
        QSignalSpy spyS(LinkManager::instance(), SIGNAL(newLink(LinkInterface*)));
        SerialLink* link = new SerialLink();
        LinkManager::instance()->add(link);
        LinkManager::instance()->addProtocol(link, mav);
        QCOMPARE(spyS.count(), 1);
    
        LinkManager::instance()->add(link);
        LinkManager::instance()->addProtocol(link, mav);
        QCOMPARE(spyS.count(), 1);// not add SerialLink, exist in list
    
        SerialLink* link2 = new SerialLink();
        LinkManager::instance()->add(link2);
        LinkManager::instance()->addProtocol(link2, mav);
        QCOMPARE(spyS.count(), 2);// add SerialLink, not exist in list
    
        QList<LinkInterface*> links = LinkManager::instance()->getLinks();
        foreach(LinkInterface* link, links)
        {
            qDebug()<< link->getName();
            qDebug()<< QString::number(link->getId());
            qDebug()<< QString::number(link->getNominalDataRate());
            QVERIFY(link != NULL);
            uas->addLink(link);
        }
    
        SerialLink* ff = static_cast<SerialLink*>(uas->getLinks()->at(0));
    
        QCOMPARE(ff->isConnected(), false);
    
        QCOMPARE(ff->isRunning(), false);
    
        QCOMPARE(ff->isFinished(), false);
    
        QCOMPARE(links.count(), uas->getLinks()->count());
        QCOMPARE(uas->getLinks()->count(), 2);
    
        LinkInterface* ff99 = static_cast<LinkInterface*>(links.at(1));
        LinkManager::instance()->removeLink(ff99);
    
        QCOMPARE(LinkManager::instance()->getLinks().count(), 1);
        QCOMPARE(uas->getLinks()->count(), 2);
    
    
        QCOMPARE(static_cast<LinkInterface*>(LinkManager::instance()->getLinks().at(0))->getId(),
                 static_cast<LinkInterface*>(uas->getLinks()->at(0))->getId());
    
        link = new SerialLink();
        LinkManager::instance()->add(link);
        LinkManager::instance()->addProtocol(link, mav);
        QCOMPARE(spyS.count(), 3);
    
        SerialLink* myLink = new SerialLink();
        myLink->setPortName("COM 17");
        LinkManager::instance()->add(myLink);
        LinkManager::instance()->addProtocol(myLink, mav);
    
        myLink = new SerialLink();
        myLink->setPortName("COM 18");
        LinkManager::instance()->add(myLink);
        LinkManager::instance()->addProtocol(myLink, mav);
    
        QCOMPARE(LinkManager::instance()->getLinks().count(), 4);
    
        QList<LinkInterface*> links = LinkManager::instance()->getLinks();
    
        LinkInterface* a = static_cast<LinkInterface*>(links.at(2));
        LinkInterface* b = static_cast<LinkInterface*>(links.at(3));
    
        QCOMPARE(a->getName(), QString("serial port COM 17"));
        QCOMPARE(b->getName(), QString("serial port COM 18"));