| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477 | 
							- /*
 
-  * Copyright 2015  <copyright holder> <email>
 
-  *
 
-  * This program is free software; you can redistribute it and/or
 
-  * modify it under the terms of the GNU General Public License as
 
-  * published by the Free Software Foundation; either version 2 of
 
-  * the License or (at your option) version 3 or any later version
 
-  * accepted by the membership of KDE e.V. (or its successor approved
 
-  * by the membership of KDE e.V.), which shall act as a proxy
 
-  * defined in Section 14 of version 3 of the license.
 
-  *
 
-  * This program is distributed in the hope that it will be useful,
 
-  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
-  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
-  * GNU General Public License for more details.
 
-  *
 
-  * You should have received a copy of the GNU General Public License
 
-  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-  *
 
-  */
 
- #include "loadertest.h"
 
- #include <QtTest/QtTest>
 
- #include <QtTest/QSignalSpy>
 
- void LoaderTest::initTestCase()
 
- {
 
-     m_loader = new TestLoader;
 
-     m_rpms << (QList<QString *>() << new QString << new QString << new QString);
 
-     m_rpms << (QList<QString *>() << new QString << new QString << new QString);
 
-     m_temps << (QList<QString *>() << new QString << new QString << new QString);
 
-     m_temps << (QList<QString *>() << new QString << new QString << new QString);
 
-     m_pwms << (QList<QString *>() << new QString << new QString);
 
-     m_pwms << (QList<QString *>() << new QString << new QString);
 
-     m_pwmModes << (QList<QString *>() << new QString << new QString);
 
-     m_pwmModes << (QList<QString *>() << new QString << new QString);
 
-     QCOMPARE(m_loader->hwmons().size(), 0);
 
-     m_loader->addHwmon(new TestHwmon(QStringLiteral("radeon"), m_rpms.at(0), m_pwms.at(0), m_pwmModes.at(0), m_temps.at(0), 0, m_loader));
 
-     m_loader->addHwmon(new TestHwmon(QStringLiteral("coretemp"), m_rpms.at(1), m_pwms.at(1), m_pwmModes.at(1), m_temps.at(1), 1, m_loader));
 
-     QCOMPARE(m_loader->hwmons().size(), 2);
 
- }
 
- void LoaderTest::cleanupTestCase()
 
- {
 
-     delete m_loader;
 
- }
 
- void LoaderTest::init()
 
- {
 
-     // Called before each testfunction is executed
 
- }
 
- void LoaderTest::cleanup()
 
- {
 
-     // Called after every testfunction
 
- }
 
- void LoaderTest::parseIntervalTest_data()
 
- {
 
-     QTest::addColumn<QString>("config");
 
-     QTest::addColumn<int>("result");
 
-     QTest::addColumn<QString>("error");
 
-     QTest::addColumn<bool>("critical");
 
-     QTest::newRow("valid4") << "INTERVAL=4" << 4 << "" << false;
 
-     QTest::newRow("valid2") << "INTERVAL=2" << 2 << "" << false;
 
-     QTest::newRow("valid2") << "INTERVAL= 3" << 3 << "" << false;
 
-     QTest::newRow("invalid0") << "INTERVAL=0" << 0 << "Interval must be greater or equal to one!" << true;
 
-     QTest::newRow("invalid6") << "INTERVA=6" << 6 << "Unrecognized line in config: \"INTERVA=6\"" << true;
 
-     QTest::newRow("invalid1") << "INTEVAL=1" << 1 << "Unrecognized line in config: \"INTEVAL=1\"" << true;
 
- }
 
- void LoaderTest::parseIntervalTest()
 
- {
 
-     QFETCH(QString, config);
 
-     QFETCH(int, result);
 
-     QFETCH(QString, error);
 
-     QFETCH(bool, critical);
 
-     QSignalSpy spy(m_loader, SIGNAL(error(QString, bool)));
 
-     m_loader->parse(config);
 
-     QCOMPARE(spy.isEmpty(), error.isEmpty());
 
-     if (spy.count())
 
-     {
 
-         QCOMPARE(spy.at(0).at(0).toString(), error);
 
-         QCOMPARE(spy.at(0).at(1).toBool(), critical);
 
-     }
 
-     else
 
-         QCOMPARE(m_loader->interval(), result);
 
- }
 
- void LoaderTest::parseFctempTest_data()
 
- {
 
-     QTest::addColumn<QString>("config");
 
-     QTest::addColumn<PwmFan *>("fan");
 
-     QTest::addColumn<Temp *>("temp");
 
-     QTest::addColumn<QString>("error");
 
-     QTest::addColumn<bool>("critical");
 
-     QTest::newRow("fan02temp11") << "FCTEMPS=hwmon0/fan2=hwmon1/temp1" << m_loader->hwmons().at(0)->pwmFan(1) << m_loader->hwmons().at(1)->temp(0) << "" << false;
 
-     QTest::newRow("fan11temp03") << "FCTEMPS=hwmon1/fan1=hwmon0/temp3" << m_loader->hwmons().at(1)->pwmFan(0) << m_loader->hwmons().at(0)->temp(2) << "" << false;
 
-     QTest::newRow("fan12temp12") << "FCTEMPS=hwmon1/fan2=hwmon1/temp2" << m_loader->hwmons().at(1)->pwmFan(1) << m_loader->hwmons().at(1)->temp(1) << "" << false;
 
-     QTest::newRow("invalid0") << "FCTEMPS=hwmon2/fan1=hwmon0/temp3" << static_cast<PwmFan *>(Q_NULLPTR) << m_loader->hwmons().at(0)->temp(2) << "Invalid fan entry: \"hwmon2/fan1\"" << true;
 
-     QTest::newRow("invalid1") << "FCTEMPS=hwmon0/fan1=hwmon0/temp4" << m_loader->hwmons().at(0)->pwmFan(0) << static_cast<Temp *>(Q_NULLPTR) << "Invalid temp entry: \"hwmon0/temp4\"" << true;
 
- }
 
- void LoaderTest::parseFctempTest()
 
- {
 
-     QFETCH(QString, config);
 
-     QFETCH(PwmFan *, fan);
 
-     QFETCH(Temp *, temp);
 
-     QFETCH(QString, error);
 
-     QFETCH(bool, critical);
 
-     QSignalSpy spy(m_loader, SIGNAL(error(QString, bool)));
 
-     m_loader->parse(config);
 
-     QCOMPARE(spy.isEmpty(), error.isEmpty());
 
-     if (fan)
 
-         QCOMPARE(fan->temp(), temp);
 
-     if (spy.count())
 
-     {
 
-         QCOMPARE(spy.at(0).at(0).toString(), error);
 
-         QCOMPARE(spy.at(0).at(1).toBool(), critical);
 
-     }
 
-     else if (fan)
 
-         QCOMPARE(fan->hasTemp(), true);
 
- }
 
- void LoaderTest::parseDevnameTest_data()
 
- {
 
-     QTest::addColumn<QString>("config");
 
-     QTest::addColumn<QString>("error");
 
-     QTest::addColumn<bool>("critical");
 
-     QTest::newRow("valid0") << "DEVNAME=hwmon0=radeon" << "" << false;
 
-     QTest::newRow("valid1") << "DEVNAME=hwmon1=coretemp" << "" << false;
 
-     QTest::newRow("valid2") << "DEVNAME=hwmon0=radeon hwmon1=coretemp" << "" << false;
 
-     QTest::newRow("valid3") << "DEVNAME= hwmon1=coretemp hwmon0=radeon" << "" << false;
 
-     QTest::newRow("invalid0") << "DEVNAME=hwmon2=radeon" << "Invalid DEVNAME: \"hwmon2=radeon\"! No hwmon with index 2" << true;
 
-     QTest::newRow("invalid0") << "DEVNAME=hwmon1=radeon" << "Wrong name for hwmon 1! Should be \"coretemp\"" << true;
 
- }
 
- void LoaderTest::parseDevnameTest()
 
- {
 
-     QFETCH(QString, config);
 
-     QFETCH(QString, error);
 
-     QFETCH(bool, critical);
 
-     QSignalSpy spy(m_loader, SIGNAL(error(QString, bool)));
 
-     m_loader->parse(config);
 
-     QCOMPARE(spy.isEmpty(), error.isEmpty());
 
-     if (spy.count())
 
-     {
 
-         QCOMPARE(spy.at(0).at(0).toString(), error);
 
-         QCOMPARE(spy.at(0).at(1).toBool(), critical);
 
-     }
 
- }
 
- void LoaderTest::parseMintempTest_data()
 
- {
 
-     QTest::addColumn<QString>("config");
 
-     QTest::addColumn<PwmFan *>("fan");
 
-     QTest::addColumn<int>("result");
 
-     QTest::addColumn<QString>("error");
 
-     QTest::addColumn<bool>("critical");
 
-     QTest::newRow("valid01") << "MINTEMP=hwmon0/fan1=20" << m_loader->pwmFan(0, 0) << 20 << "" << false;
 
-     QTest::newRow("valid12") << "MINTEMP=hwmon1/fan2=35" << m_loader->pwmFan(1, 1) << 35 << "" << false;
 
-     QTest::newRow("valid02") << "MINTEMP=hwmon0/fan2=-35" << m_loader->pwmFan(0, 1) << -35 << "" << false;
 
-     QTest::newRow("valid11") << "MINTEMP= hwmon1/fan1=40" << m_loader->pwmFan(1, 0) << 40 << "" << false;
 
- }
 
- void LoaderTest::parseMintempTest()
 
- {
 
-     QFETCH(QString, config);
 
-     QFETCH(PwmFan *, fan);
 
-     QFETCH(int, result);
 
-     QFETCH(QString, error);
 
-     QFETCH(bool, critical);
 
-     QSignalSpy spy(m_loader, SIGNAL(error(QString, bool)));
 
-     m_loader->parse(config);
 
-     QCOMPARE(spy.isEmpty(), error.isEmpty());
 
-     if (spy.count())
 
-     {
 
-         QCOMPARE(spy.at(0).at(0).toString(), error);
 
-         QCOMPARE(spy.at(0).at(1).toBool(), critical);
 
-     }
 
-     else
 
-         QCOMPARE(fan->minTemp(), result);
 
- }
 
- void LoaderTest::parseMaxtempTest_data()
 
- {
 
-     QTest::addColumn<QString>("config");
 
-     QTest::addColumn<PwmFan *>("fan");
 
-     QTest::addColumn<int>("result");
 
-     QTest::addColumn<QString>("error");
 
-     QTest::addColumn<bool>("critical");
 
-     QTest::newRow("valid01") << "MAXTEMP=hwmon0/fan1=80" << m_loader->pwmFan(0, 0) << 80 << "" << false;
 
-     QTest::newRow("valid12") << "MAXTEMP=hwmon1/fan2=78 #iuf" << m_loader->pwmFan(1, 1) << 78 << "" << false;
 
-     QTest::newRow("valid02") << "MAXTEMP=hwmon0/fan2=-78" << m_loader->pwmFan(0, 1) << -78 << "" << false;
 
-     QTest::newRow("valid11") << "MAXTEMP= hwmon1/fan1=53" << m_loader->pwmFan(1, 0) << 53 << "" << false;
 
- }
 
- void LoaderTest::parseMaxtempTest()
 
- {
 
-     QFETCH(QString, config);
 
-     QFETCH(PwmFan *, fan);
 
-     QFETCH(int, result);
 
-     QFETCH(QString, error);
 
-     QFETCH(bool, critical);
 
-     QSignalSpy spy(m_loader, SIGNAL(error(QString, bool)));
 
-     m_loader->parse(config);
 
-     QCOMPARE(spy.isEmpty(), error.isEmpty());
 
-     if (spy.count())
 
-     {
 
-         QCOMPARE(spy.at(0).at(0).toString(), error);
 
-         QCOMPARE(spy.at(0).at(1).toBool(), critical);
 
-     }
 
-     else
 
-         QCOMPARE(fan->maxTemp(), result);
 
- }
 
- void LoaderTest::parseMinstartTest_data()
 
- {
 
-     QTest::addColumn<QString>("config");
 
-     QTest::addColumn<PwmFan *>("fan");
 
-     QTest::addColumn<int>("result");
 
-     QTest::addColumn<QString>("error");
 
-     QTest::addColumn<bool>("critical");
 
-     QTest::newRow("valid01") << "MINSTART=hwmon0/fan1=20" << m_loader->pwmFan(0, 0) << 20 << "" << false;
 
-     QTest::newRow("valid12") << "MINSTART=hwmon1/fan2=35" << m_loader->pwmFan(1, 1) << 35 << "" << false;
 
-     QTest::newRow("valid02") << "MINSTART=hwmon0/fan2=0#rtg" << m_loader->pwmFan(0, 1) << 0 << "" << false;
 
-     QTest::newRow("valid11") << "MINSTART= hwmon1/fan1=40" << m_loader->pwmFan(1, 0) << 40 << "" << false;
 
- }
 
- void LoaderTest::parseMinstartTest()
 
- {
 
-     QFETCH(QString, config);
 
-     QFETCH(PwmFan *, fan);
 
-     QFETCH(int, result);
 
-     QFETCH(QString, error);
 
-     QFETCH(bool, critical);
 
-     QSignalSpy spy(m_loader, SIGNAL(error(QString, bool)));
 
-     m_loader->parse(config);
 
-     QCOMPARE(spy.isEmpty(), error.isEmpty());
 
-     if (spy.count())
 
-     {
 
-         QCOMPARE(spy.at(0).at(0).toString(), error);
 
-         QCOMPARE(spy.at(0).at(1).toBool(), critical);
 
-     }
 
-     else
 
-         QCOMPARE(fan->minStart(), result);
 
- }
 
- void LoaderTest::parseMinstopTest_data()
 
- {
 
-     QTest::addColumn<QString>("config");
 
-     QTest::addColumn<PwmFan *>("fan");
 
-     QTest::addColumn<int>("result");
 
-     QTest::addColumn<QString>("error");
 
-     QTest::addColumn<bool>("critical");
 
-     QTest::newRow("valid01") << "MINSTOP=hwmon0/fan1=20" << m_loader->pwmFan(0, 0) << 20 << "" << false;
 
-     QTest::newRow("valid12") << "MINSTOP=hwmon1/fan2=35" << m_loader->pwmFan(1, 1) << 35 << "" << false;
 
-     QTest::newRow("valid02") << "MINSTOP=hwmon0/fan2=0" << m_loader->pwmFan(0, 1) << 0 << "" << false;
 
-     QTest::newRow("valid11") << "MINSTOP= hwmon1/fan1=40" << m_loader->pwmFan(1, 0) << 40 << "" << false;
 
- }
 
- void LoaderTest::parseMinstopTest()
 
- {
 
-     QFETCH(QString, config);
 
-     QFETCH(PwmFan *, fan);
 
-     QFETCH(int, result);
 
-     QFETCH(QString, error);
 
-     QFETCH(bool, critical);
 
-     QSignalSpy spy(m_loader, SIGNAL(error(QString, bool)));
 
-     m_loader->parse(config);
 
-     QCOMPARE(spy.isEmpty(), error.isEmpty());
 
-     if (spy.count())
 
-     {
 
-         QCOMPARE(spy.at(0).at(0).toString(), error);
 
-         QCOMPARE(spy.at(0).at(1).toBool(), critical);
 
-     }
 
-     else
 
-         QCOMPARE(fan->minStop(), result);
 
- }
 
- void LoaderTest::parseMinpwmTest_data()
 
- {
 
-     QTest::addColumn<QString>("config");
 
-     QTest::addColumn<PwmFan *>("fan");
 
-     QTest::addColumn<int>("result");
 
-     QTest::addColumn<QString>("error");
 
-     QTest::addColumn<bool>("critical");
 
-     QTest::newRow("valid01") << "MINPWM=hwmon0/fan1=20#fgiuh" << m_loader->pwmFan(0, 0) << 20 << "" << false;
 
-     QTest::newRow("valid12") << "MINPWM=hwmon1/fan2=35" << m_loader->pwmFan(1, 1) << 35 << "" << false;
 
-     QTest::newRow("valid02") << "MINPWM=hwmon0/fan2=0" << m_loader->pwmFan(0, 1) << 0 << "" << false;
 
-     QTest::newRow("valid11") << "MINPWM= hwmon1/fan1=40" << m_loader->pwmFan(1, 0) << 40 << "" << false;
 
-     QTest::newRow("invalid02") << "MINPWM=hwmon0/fan2=256" << m_loader->pwmFan(0, 1) << 256 << "MinPwm cannot exceed 0-255!" << true;
 
-     QTest::newRow("invalid11") << "MINPWM=hwmon1/fan2=-2" << m_loader->pwmFan(1, 1) << -2 << "MinPwm cannot exceed 0-255!" << true;
 
- }
 
- void LoaderTest::parseMinpwmTest()
 
- {
 
-     QFETCH(QString, config);
 
-     QFETCH(PwmFan *, fan);
 
-     QFETCH(int, result);
 
-     QFETCH(QString, error);
 
-     QFETCH(bool, critical);
 
-     QSignalSpy spy(m_loader, SIGNAL(error(QString, bool)));
 
-     m_loader->parse(config);
 
-     QCOMPARE(spy.isEmpty(), error.isEmpty());
 
-     if (spy.count())
 
-     {
 
-         QCOMPARE(spy.at(0).at(0).toString(), error);
 
-         QCOMPARE(spy.at(0).at(1).toBool(), critical);
 
-     }
 
-     else
 
-         QCOMPARE(fan->minPwm(), result);
 
- }
 
- void LoaderTest::parseMaxpwmTest_data()
 
- {
 
-     QTest::addColumn<QString>("config");
 
-     QTest::addColumn<PwmFan *>("fan");
 
-     QTest::addColumn<int>("result");
 
-     QTest::addColumn<QString>("error");
 
-     QTest::addColumn<bool>("critical");
 
-     QTest::newRow("valid01") << "MAXPWM=hwmon0/fan1=20" << m_loader->pwmFan(0, 0) << 20 << "" << false;
 
-     QTest::newRow("valid12") << "MAXPWM=hwmon1/fan2=35 #uivnriuhgfdn" << m_loader->pwmFan(1, 1) << 35 << "" << false;
 
-     QTest::newRow("valid02") << "MAXPWM=hwmon0/fan2=0" << m_loader->pwmFan(0, 1) << 0 << "" << false;
 
-     QTest::newRow("valid11") << "MAXPWM= hwmon1/fan1=40" << m_loader->pwmFan(1, 0) << 40 << "" << false;
 
-     QTest::newRow("invalid02") << "MAXPWM=hwmon0/fan2=256" << m_loader->pwmFan(0, 1) << 256 << "MaxPwm cannot exceed 0-255!" << true;
 
-     QTest::newRow("invalid11") << "MAXPWM=hwmon1/fan2=-2" << m_loader->pwmFan(1, 1) << -2 << "MaxPwm cannot exceed 0-255!" << true;
 
- }
 
- void LoaderTest::parseMaxpwmTest()
 
- {
 
-     QFETCH(QString, config);
 
-     QFETCH(PwmFan *, fan);
 
-     QFETCH(int, result);
 
-     QFETCH(QString, error);
 
-     QFETCH(bool, critical);
 
-     QSignalSpy spy(m_loader, SIGNAL(error(QString, bool)));
 
-     m_loader->parse(config);
 
-     QCOMPARE(spy.isEmpty(), error.isEmpty());
 
-     if (spy.count())
 
-     {
 
-         QCOMPARE(spy.at(0).at(0).toString(), error);
 
-         QCOMPARE(spy.at(0).at(1).toBool(), critical);
 
-     }
 
-     else
 
-         QCOMPARE(fan->maxPwm(), result);
 
- }
 
- void LoaderTest::parseUnrecognizableLineTest_data()
 
- {
 
-     QTest::addColumn<QString>("config");
 
-     QTest::addColumn<QString>("error");
 
-     QTest::addColumn<bool>("critical");
 
-     QTest::newRow("valid01") << "MMAXPWM=hwmon0/fan1=20" << "Unrecognized line in config: \"MMAXPWM=hwmon0/fan1=20\"" << true;
 
- }
 
- void LoaderTest::parseUnrecognizableLineTest()
 
- {
 
-     QFETCH(QString, config);
 
-     QFETCH(QString, error);
 
-     QFETCH(bool, critical);
 
-     QSignalSpy spy(m_loader, SIGNAL(error(QString, bool)));
 
-     m_loader->parse(config);
 
-     QCOMPARE(spy.count(), 1);
 
-     if (spy.count())
 
-     {
 
-         QCOMPARE(spy.at(0).at(0).toString(), error);
 
-         QCOMPARE(spy.at(0).at(1).toBool(), critical);
 
-     }
 
- }
 
- void LoaderTest::createConfigTest()
 
- {
 
-     auto pwmFan = m_loader->pwmFan(0, 0);
 
-     pwmFan->setTemp(m_loader->temp(1, 0));
 
-     pwmFan->setMinTemp(20);
 
-     pwmFan->setMaxTemp(60);
 
-     pwmFan->setMaxPwm(200);
 
-     pwmFan->setMinPwm(100);
 
-     pwmFan->setMinStart(120);
 
-     pwmFan->setMinStop(80);
 
-     pwmFan = m_loader->pwmFan(1, 1);
 
-     pwmFan->setTemp(m_loader->temp(1, 2));
 
-     pwmFan->setMinTemp(30);
 
-     pwmFan->setMaxTemp(70);
 
-     pwmFan->setMaxPwm(255);
 
-     pwmFan->setMinPwm(120);
 
-     pwmFan->setMinStart(110);
 
-     pwmFan->setMinStop(75);
 
-     m_loader->setInterval(5);
 
-     auto config = m_loader->createConfig();
 
-     QString expectedConfig = "# This file was created by Fancontrol-GUI\n"
 
-                              "INTERVAL=5\n"
 
-                              "DEVPATH=hwmon0= hwmon1= \n"
 
-                              "DEVNAME=hwmon0=radeon hwmon1=coretemp \n"
 
-                              "FCTEMPS=hwmon0/pwm0=hwmon1/temp0_input hwmon1/pwm1=hwmon1/temp2_input \n"
 
-                              "FCFANS=hwmon0/pwm0=hwmon0/fan0_input hwmon1/pwm1=hwmon1/fan1_input \n"
 
-                              "MINTEMP=hwmon0/pwm0=20 hwmon1/pwm1=30 \n"
 
-                              "MAXTEMP=hwmon0/pwm0=60 hwmon1/pwm1=70 \n"
 
-                              "MINSTART=hwmon0/pwm0=120 hwmon1/pwm1=110 \n"
 
-                              "MINSTOP=hwmon0/pwm0=80 hwmon1/pwm1=75 \n"
 
-                              "MINPWM=hwmon0/pwm0=100 hwmon1/pwm1=120 \n"
 
-                              "MAXPWM=hwmon0/pwm0=200 hwmon1/pwm1=255 \n";
 
-     auto expectedLines = expectedConfig.split(QChar(QChar::LineFeed));
 
-     auto configLines = config.split(QChar(QChar::LineFeed));
 
-     QCOMPARE(configLines.size(), expectedLines.size());
 
-     for (auto i=0; i<configLines.size(); i++)
 
-         QCOMPARE(configLines.at(i), expectedLines.at(i));
 
- }
 
- QTEST_MAIN(LoaderTest);
 
 
  |