LibreVNA/Software/PC_Application/LibreVNA-Test/impedancerenormalizationtests.cpp
2025-02-21 15:56:21 +01:00

45 lines
1.3 KiB
C++

#include "impedancerenormalizationtests.h"
ImpedanceRenormalizationTests::ImpedanceRenormalizationTests()
{
renorm = new ImpedanceRenormalization();
// set it up to normalize to 75 Ohm
nlohmann::json j;
j["impedance"] = 75;
renorm->fromJSON(j);
}
ImpedanceRenormalizationTests::~ImpedanceRenormalizationTests()
{
delete renorm;
}
void ImpedanceRenormalizationTests::OnePortTests()
{
// Create dummy measurements
DeviceDriver::VNAMeasurement measShort;
measShort.pointNum = 0;
measShort.Z0 = 50.0;
measShort.measurements["S11"] = -1.0;
auto measLoad = measShort;
measLoad.measurements["S11"] = 0.0;
auto measOpen = measShort;
measOpen.measurements["S11"] = 0.9999999999999999; // using exactly 1.0 runs into inf problems
// perform renormalization
renorm->transformDatapoint(measShort);
renorm->transformDatapoint(measLoad);
renorm->transformDatapoint(measOpen);
QVERIFY(measShort.measurements["S11"] == -1.0);
// a Ohm load renormalized to 75 Ohm impedance has a reflection coefficient of -0.2
QVERIFY(qFuzzyCompare(measLoad.measurements["S11"].real(), -0.2));
QVERIFY(qFuzzyCompare(measLoad.measurements["S11"].imag(), 0.0));
QVERIFY(qFuzzyCompare(measOpen.measurements["S11"].real(), 1.0));
QVERIFY(qFuzzyCompare(measOpen.measurements["S11"].imag(), 0.0));
}