79 lines
2.8 KiB
Matlab
79 lines
2.8 KiB
Matlab
classdef DP_Fiber_test < IMDDTestCase
|
|
methods (Test, TestTags = {'unit', 'fast', 'optical', 'dp_fiber'})
|
|
function constructorStoresConfigurationAndStartsWithEmptyState(testCase)
|
|
fiber = makeIdentityFiber();
|
|
|
|
testCase.verifyEqual(fiber.L, 0);
|
|
testCase.verifyEqual(fiber.dz, 1);
|
|
testCase.verifyEqual(fiber.lambda, 1550);
|
|
testCase.verifyEqual(fiber.rng, 7);
|
|
testCase.verifyEqual(fiber.gamma, 0);
|
|
testCase.verifyEqual(fiber.fa, 64e9);
|
|
testCase.verifyEqual(fiber.X_alpha, 0);
|
|
testCase.verifyEqual(fiber.D, 0);
|
|
testCase.verifyEqual(fiber.Ds, 0);
|
|
testCase.verifyEqual(fiber.Dpmd, 0);
|
|
testCase.verifyEqual(fiber.n_waveplates, 1);
|
|
testCase.verifyEqual(fiber.useGPU, false);
|
|
testCase.verifyEqual(fiber.useSingle, false);
|
|
testCase.verifyTrue(isstruct(fiber.state));
|
|
testCase.verifyEmpty(fieldnames(fiber.state));
|
|
end
|
|
|
|
function processPreservesAZeroImpairmentDualPolarizationSignal(testCase)
|
|
fiber = makeIdentityFiber();
|
|
inputMatrix = [ ...
|
|
1 + 1i, 2 - 1i; ...
|
|
0.5, -0.25i; ...
|
|
-1 + 0.2i, 0.75 - 0.5i; ...
|
|
0, 0.25 + 0.75i];
|
|
|
|
sigIn = Signal(inputMatrix, "fs", fiber.fa);
|
|
sigOut = fiber.process(sigIn);
|
|
|
|
testCase.verifyClass(sigOut, "Signal");
|
|
testCase.verifyEqual(sigOut.fs, sigIn.fs);
|
|
testCase.verifyEqual(size(sigOut.signal), size(sigIn.signal));
|
|
testCase.verifyEqual(sigOut.signal, sigIn.signal, "AbsTol", 1e-12);
|
|
testCase.verifyEqual(height(sigOut.logbook), 1);
|
|
end
|
|
|
|
function process_ProducesIdentityOutputForRawMatrixInput(testCase)
|
|
fiber = makeIdentityFiber();
|
|
inputMatrix = [ ...
|
|
1 + 1i, 2 - 1i; ...
|
|
0.5, -0.25i; ...
|
|
-1 + 0.2i, 0.75 - 0.5i; ...
|
|
0, 0.25 + 0.75i];
|
|
|
|
sigOut = fiber.process_(inputMatrix, fiber.fa);
|
|
|
|
testCase.verifyEqual(size(sigOut), size(inputMatrix));
|
|
testCase.verifyEqual(sigOut, inputMatrix, "AbsTol", 1e-12);
|
|
end
|
|
end
|
|
end
|
|
|
|
function fiber = makeIdentityFiber()
|
|
fiber = DP_Fiber( ...
|
|
"L", 0, ...
|
|
"dz", 1, ...
|
|
"lambda", 1550, ...
|
|
"rng", 7, ...
|
|
"gamma", 0, ...
|
|
"fa", 64e9, ...
|
|
"X_alpha", 0, ...
|
|
"D", 0, ...
|
|
"Ds", 0, ...
|
|
"Dpmd", 0, ...
|
|
"beat_len", 1e9, ...
|
|
"corr_len", 1e9, ...
|
|
"manakov", 0, ...
|
|
"SS_dphimax", 5e-3, ...
|
|
"SS_dzmax", 1, ...
|
|
"SS_dzmin", 1, ...
|
|
"n_waveplates", 1, ...
|
|
"useGPU", false, ...
|
|
"useSingle", false);
|
|
end
|