Skip to content

Commit

Permalink
Added unit test to reproduce #507.
Browse files Browse the repository at this point in the history
  • Loading branch information
hmatuschek committed Dec 28, 2024
1 parent f59fbbb commit fa787ed
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 21 deletions.
75 changes: 54 additions & 21 deletions test/opengd77_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ OpenGD77Test::OpenGD77Test(QObject *parent)
Logger::get().addHandler(new StreamLogHandler(_stderr, LogMessage::DEBUG));
}


void
OpenGD77Test::testBasicConfigEncoding() {
ErrorStack err;
Expand All @@ -25,38 +26,42 @@ OpenGD77Test::testBasicConfigEncoding() {
}
}

void
OpenGD77Test::testBasicConfigDecoding() {
ErrorStack err;

bool
OpenGD77Test::encodeDecode(Config &config, Config &decoded, const ErrorStack &err) {
OpenGD77Codeplug codeplug;
codeplug.clear();
if (! codeplug.encode(&_basicConfig, Codeplug::Flags(), err)) {
QFAIL(QString("Cannot encode codeplug for OpenGD77: %1")
.arg(err.format()).toStdString().c_str());

if (! codeplug.encode(&config, Codeplug::Flags(), err)) {
errMsg(err) << "Cannot encode codeplug for OpenGD77.";
return false;
}

Config config;
if (! codeplug.decode(&config, err)) {
QFAIL(QString("Cannot decode codeplug for OpenGD77: %1")
.arg(err.format()).toStdString().c_str());
if (! codeplug.decode(&decoded, err)) {
errMsg(err) << "Cannot decode codeplug for OpenGD77.";
return false;
}

return true;
}


void
OpenGD77Test::testChannelFrequency() {
OpenGD77Test::testBasicConfigDecoding() {
ErrorStack err;
OpenGD77Codeplug codeplug;
codeplug.clear();
if (! codeplug.encode(&_channelFrequencyConfig, Codeplug::Flags(), err)) {
QFAIL(QString("Cannot encode codeplug for OpenGD77: {}")
.arg(err.format()).toStdString().c_str());
}
Config decoded;
if (! encodeDecode(_basicConfig, decoded, err))
QFAIL(err.format().toLocal8Bit().constData());
}


void
OpenGD77Test::testChannelFrequency() {
ErrorStack err;
Config config;
if (! codeplug.decode(&config, err)) {
QFAIL(QString("Cannot decode codeplug for Radioddity RD5R: {}")
.arg(err.format()).toStdString().c_str());
}

if (! encodeDecode(_channelFrequencyConfig, config, err))
QFAIL(err.format().toLocal8Bit().constData());

QCOMPARE(config.channelList()->channel(0)->rxFrequency(),
Frequency::fromHz(123456780ULL));
Expand All @@ -65,5 +70,33 @@ OpenGD77Test::testChannelFrequency() {
}


void
OpenGD77Test::testChannelPowerSettings() {
ErrorStack err;

Config config, decoded;
OpenGD77Codeplug codeplug;
if (! config.readYAML(":/data/config_test.yaml", err)) {
QFAIL(QString("Cannot open codeplug file: %1")
.arg(err.format()).toLocal8Bit().constData());
}

config.channelList()->channel(0)->setDefaultPower();
if (! encodeDecode(config, decoded, err))
QFAIL(err.format().toLocal8Bit().constData());
QCOMPARE(decoded.channelList()->channel(0)->defaultPower(), true);

config.channelList()->channel(0)->setPower(Channel::Power::Low);
if (! encodeDecode(config, decoded, err))
QFAIL(err.format().toLocal8Bit().constData());
QCOMPARE(decoded.channelList()->channel(0)->power(), Channel::Power::Low);

config.channelList()->channel(0)->setPower(Channel::Power::High);
if (! encodeDecode(config, decoded, err))
QFAIL(err.format().toLocal8Bit().constData());
QCOMPARE(decoded.channelList()->channel(0)->power(), Channel::Power::High);
}


QTEST_GUILESS_MAIN(OpenGD77Test)

8 changes: 8 additions & 0 deletions test/opengd77_test.hh
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
#include <QObject>
#include <QTextStream>
#include "config.hh"
#include "errorstack.hh"


class OpenGD77Test : public UnitTestBase
{
Expand All @@ -19,6 +21,12 @@ private slots:
void testBasicConfigDecoding();
void testChannelFrequency();

/** Regression test for #507 */
void testChannelPowerSettings();

protected:
static bool encodeDecode(Config &config, Config &decoded, const ErrorStack &err=ErrorStack());

protected:
QTextStream _stderr;
};
Expand Down

0 comments on commit fa787ed

Please sign in to comment.