Build out MATLAB test framework and core integration coverage

This commit is contained in:
Silas Oettinghaus
2026-03-24 17:23:02 +01:00
parent 9446dfb888
commit a592ebefda
154 changed files with 2281 additions and 1305 deletions

View File

@@ -1,11 +1,10 @@
classdef DP_Fiber_test < matlab.unittest.TestCase
% Test class for DP_Fiber
classdef DP_Fiber_test < IMDDTestCase
% Auto-generated placeholder for DP_Fiber.
% Target: C:/Users/Silas/Documents/MATLAB/imdd_simulation/Classes/02_optical/DP_Fiber.m
methods (Test)
function testExample(testCase)
% Example test case for DP_Fiber
% Add your test code here
testCase.verifyTrue(true);
methods (Test, TestTags = {'placeholder', 'todo'})
function testNotImplemented(testCase)
testCase.assumeFail("Tests for DP_Fiber are not implemented yet.");
end
end
end

View File

@@ -1,11 +1,10 @@
classdef EML_test < matlab.unittest.TestCase
% Test class for EML
classdef EML_test < IMDDTestCase
% Auto-generated placeholder for EML.
% Target: C:/Users/Silas/Documents/MATLAB/imdd_simulation/Classes/02_optical/EML.m
methods (Test)
function testExample(testCase)
% Example test case for EML
% Add your test code here
testCase.verifyTrue(true);
methods (Test, TestTags = {'placeholder', 'todo'})
function testNotImplemented(testCase)
testCase.assumeFail("Tests for EML are not implemented yet.");
end
end
end

View File

@@ -1,11 +1,87 @@
classdef Fiber_test < matlab.unittest.TestCase
% Test class for Fiber
classdef Fiber_test < IMDDTestCase
methods (Test, TestTags = {'unit', 'fast', 'optical', 'fiber'})
function zeroLengthPropagationLeavesSignalUnchanged(testCase)
fiber = Fiber("fsimu", 64e9, "fiber_length", 0, "alpha", 0, "D", 0, ...
"Dslope", 0, "lambda0", 1310, "gamma", 0);
inputSig = makeOpticalsignal([1 + 1i; -2 + 0.5i; 0.25 - 0.75i], 64e9, 1310e-9);
methods (Test)
function testExample(testCase)
% Example test case for Fiber
% Add your test code here
testCase.verifyTrue(true);
outputSig = fiber.process_(inputSig);
testCase.verifyClass(outputSig, 'Opticalsignal');
testCase.verifyEqual(outputSig.signal, inputSig.signal, "AbsTol", 1e-12);
testCase.verifyEqual(outputSig.lambda, inputSig.lambda);
testCase.verifyEqual(outputSig.fs, inputSig.fs);
end
function attenuationOnlyMatchesAnalyticalFieldScaling(testCase)
fs = 32e9;
lambda = 1310e-9;
fiberLengthKm = 2.5;
alphaDbPerKm = 0.2;
inputSignal = [1 + 2i; -0.5 + 0.25i; 0.75 - 1.25i; 2 - 1i];
fiber = Fiber("fsimu", fs, "fiber_length", fiberLengthKm, "alpha", alphaDbPerKm, ...
"D", 0, "Dslope", 0, "lambda0", 1310, "gamma", 0);
inputSig = makeOpticalsignal(inputSignal, fs, lambda);
outputSig = fiber.process_(inputSig);
alphaLin = alphaDbPerKm / 10 * log(10) / 1e3;
expected = inputSignal .* exp(-alphaLin / 2 * fiber.fiber_length);
testCase.verifyEqual(outputSig.signal, expected, "AbsTol", 1e-12);
end
function linearOnlyPropagationPreservesShapeAndEnergyWhenLossless(testCase)
fs = 64e9;
lambda = 1310e-9;
inputSignal = [1 + 0.5i; -1i; 0.75; 2 - 0.25i];
fiber = Fiber("fsimu", fs, "fiber_length", 0.3, "alpha", 0, ...
"D", 0, "Dslope", 0, "lambda0", 1310, "gamma", 0);
inputSig = makeOpticalsignal(inputSignal, fs, lambda);
outputSig = fiber.process_(inputSig);
testCase.verifySize(outputSig.signal, size(inputSignal));
testCase.verifyEqual(outputSig.signal, inputSignal, "AbsTol", 1e-12);
testCase.verifyEqual(norm(outputSig.signal), norm(inputSignal), "AbsTol", 1e-12);
end
function processAddsLogbookEntryAndReturnsOpticalsignal(testCase)
fs = 32e9;
lambda = 1310e-9;
fiber = Fiber("fsimu", fs, "fiber_length", 0, "alpha", 0, "D", 0, ...
"Dslope", 0, "lambda0", 1310, "gamma", 0);
inputSig = makeOpticalsignal([1; -1; 2], fs, lambda);
outputSig = fiber.process(inputSig);
testCase.verifyClass(outputSig, 'Opticalsignal');
testCase.verifyEqual(outputSig.signal, inputSig.signal, "AbsTol", 1e-12);
testCase.verifyEqual(height(outputSig.logbook), height(inputSig.logbook) + 1);
testCase.verifyEqual(string(outputSig.logbook.Description(end)), "Fiber ");
end
end
end
function sig = makeOpticalsignal(values, fs, lambda)
sig = Opticalsignal(values, ...
"fs", fs, ...
"logbook", emptyLogbook(), ...
"lambda", lambda, ...
"nase", 0, ...
"polrot", 0);
end
function lb = emptyLogbook()
SignalType = [];
TimeStamp = [];
Length = [];
SignalPower = [];
Nase = [];
SignalCopy = [];
ModifierName = [];
ModifierCopy = {};
Description = [];
lb = table(SignalType, TimeStamp, Length, SignalPower, Nase, SignalCopy, ModifierName, ModifierCopy, Description);
end

View File

@@ -1,11 +1,10 @@
classdef Optical_Demultiplex_test < matlab.unittest.TestCase
% Test class for Optical_Demultiplex
classdef Optical_Demultiplex_test < IMDDTestCase
% Auto-generated placeholder for Optical_Demultiplex.
% Target: C:/Users/Silas/Documents/MATLAB/imdd_simulation/Classes/02_optical/Optical_Demultiplex.m
methods (Test)
function testExample(testCase)
% Example test case for Optical_Demultiplex
% Add your test code here
testCase.verifyTrue(true);
methods (Test, TestTags = {'placeholder', 'todo'})
function testNotImplemented(testCase)
testCase.assumeFail("Tests for Optical_Demultiplex are not implemented yet.");
end
end
end

View File

@@ -1,11 +1,10 @@
classdef Optical_Multiplex_test < matlab.unittest.TestCase
% Test class for Optical_Multiplex
classdef Optical_Multiplex_test < IMDDTestCase
% Auto-generated placeholder for Optical_Multiplex.
% Target: C:/Users/Silas/Documents/MATLAB/imdd_simulation/Classes/02_optical/Optical_Multiplex.m
methods (Test)
function testExample(testCase)
% Example test case for Optical_Multiplex
% Add your test code here
testCase.verifyTrue(true);
methods (Test, TestTags = {'placeholder', 'todo'})
function testNotImplemented(testCase)
testCase.assumeFail("Tests for Optical_Multiplex are not implemented yet.");
end
end
end

View File

@@ -1,11 +1,10 @@
classdef Polarization_Controller_test < matlab.unittest.TestCase
% Test class for Polarization_Controller
classdef Polarization_Controller_test < IMDDTestCase
% Auto-generated placeholder for Polarization_Controller.
% Target: C:/Users/Silas/Documents/MATLAB/imdd_simulation/Classes/02_optical/Polarization_Controller.m
methods (Test)
function testExample(testCase)
% Example test case for Polarization_Controller
% Add your test code here
testCase.verifyTrue(true);
methods (Test, TestTags = {'placeholder', 'todo'})
function testNotImplemented(testCase)
testCase.assumeFail("Tests for Polarization_Controller are not implemented yet.");
end
end
end

View File

@@ -1,11 +0,0 @@
classdef CNLSE_plain_test < matlab.unittest.TestCase
% Test class for CNLSE_plain
methods (Test)
function testExample(testCase)
% Example test case for CNLSE_plain
% Add your test code here
testCase.verifyTrue(true);
end
end
end

View File

@@ -1,11 +0,0 @@
classdef CNLSE_test < matlab.unittest.TestCase
% Test class for CNLSE
methods (Test)
function testExample(testCase)
% Example test case for CNLSE
% Add your test code here
testCase.verifyTrue(true);
end
end
end

View File

@@ -1,11 +0,0 @@
classdef canUseGPU_test < matlab.unittest.TestCase
% Test class for canUseGPU
methods (Test)
function testExample(testCase)
% Example test case for canUseGPU
% Add your test code here
testCase.verifyTrue(true);
end
end
end

View File

@@ -1,11 +0,0 @@
classdef getNLstepsize_original_test < matlab.unittest.TestCase
% Test class for getNLstepsize_original
methods (Test)
function testExample(testCase)
% Example test case for getNLstepsize_original
% Add your test code here
testCase.verifyTrue(true);
end
end
end

View File

@@ -1,11 +0,0 @@
classdef getNLstepsize_test < matlab.unittest.TestCase
% Test class for getNLstepsize
methods (Test)
function testExample(testCase)
% Example test case for getNLstepsize
% Add your test code here
testCase.verifyTrue(true);
end
end
end

View File

@@ -1,11 +0,0 @@
classdef lin_step_original_test < matlab.unittest.TestCase
% Test class for lin_step_original
methods (Test)
function testExample(testCase)
% Example test case for lin_step_original
% Add your test code here
testCase.verifyTrue(true);
end
end
end

View File

@@ -1,11 +0,0 @@
classdef lin_step_test < matlab.unittest.TestCase
% Test class for lin_step
methods (Test)
function testExample(testCase)
% Example test case for lin_step
% Add your test code here
testCase.verifyTrue(true);
end
end
end

View File

@@ -1,11 +0,0 @@
classdef nl_step_original_test < matlab.unittest.TestCase
% Test class for nl_step_original
methods (Test)
function testExample(testCase)
% Example test case for nl_step_original
% Add your test code here
testCase.verifyTrue(true);
end
end
end

View File

@@ -1,11 +0,0 @@
classdef nl_step_test < matlab.unittest.TestCase
% Test class for nl_step
methods (Test)
function testExample(testCase)
% Example test case for nl_step
% Add your test code here
testCase.verifyTrue(true);
end
end
end

View File

@@ -1,11 +0,0 @@
classdef split_step_loop_test < matlab.unittest.TestCase
% Test class for split_step_loop
methods (Test)
function testExample(testCase)
% Example test case for split_step_loop
% Add your test code here
testCase.verifyTrue(true);
end
end
end