Files
imdd_silas/Tests/01_transmit/Signalgenerator_test.m

122 lines
4.0 KiB
Matlab

classdef Signalgenerator_test < IMDDTestCase
methods (Test, TestTags = {'unit', 'fast', 'transmit', 'signalgenerator'})
function constructorStoresDefaultConfiguration(testCase)
gen = Signalgenerator();
testCase.verifyEqual(gen.form, signalform.sine);
testCase.verifyEqual(gen.length, 1024);
testCase.verifyEqual(gen.fs, 1000);
testCase.verifyEqual(gen.fsig, 50);
testCase.verifyEqual(gen.dimension, 1);
testCase.verifyEqual(gen.order, 7);
testCase.verifyEqual(gen.randkey, 0);
testCase.verifyEqual(gen.skip, 0);
testCase.verifyFalse(gen.bruijn);
end
function buildSignalProducesExpectedSineWave(testCase)
gen = Signalgenerator( ...
"form", signalform.sine, ...
"length", 4, ...
"fs", 4, ...
"fsig", 1);
signal = gen.build_signal();
expected = [0 1 0 -1];
testCase.verifySize(signal, [1 4]);
testCase.verifyEqual(signal, expected, "AbsTol", 1e-12);
end
function processWrapsGeneratedSignalInInformationsignal(testCase)
gen = Signalgenerator( ...
"form", signalform.sine, ...
"length", 4, ...
"fs", 4, ...
"fsig", 1);
out = gen.process();
testCase.verifyClass(out, 'Informationsignal');
testCase.verifySize(out.signal, [1 4]);
testCase.verifyEqual(out.fs, 4);
testCase.verifyEqual(out.signal, [0 1 0 -1], "AbsTol", 1e-12);
testCase.verifyEqual(height(out.logbook), 1);
end
function randomDataIsDeterministicAndColumnShaped(testCase)
gen = Signalgenerator( ...
"form", signalform.random, ...
"length", 8, ...
"dimension", 2, ...
"randkey", 3);
signal = gen.build_signal();
expected = [ ...
1 0; ...
1 0; ...
0 0; ...
1 0; ...
1 1; ...
1 0; ...
0 1; ...
0 1];
testCase.verifySize(signal, [8 2]);
testCase.verifyEqual(signal, expected);
end
function prmsDataUsesMoveItStyleShape(testCase)
gen = Signalgenerator( ...
"form", signalform.prms, ...
"length", 8, ...
"dimension", 2, ...
"order", 6);
signal = gen.build_signal();
expected = [ ...
1 0; ...
1 0; ...
0 1; ...
1 0; ...
0 1; ...
0 0; ...
1 0; ...
0 0];
testCase.verifySize(signal, [8 2]);
testCase.verifyEqual(signal, expected);
end
function prmsLengthDefaultsToPamSourceStyleLength(testCase)
pam4Gen = Signalgenerator( ...
"form", signalform.prms, ...
"dimension", 2, ...
"order", 7);
pam6Gen = Signalgenerator( ...
"form", signalform.prms, ...
"dimension", 5, ...
"order", 7);
testCase.verifyEqual(pam4Gen.length, 2^(7 - 1));
testCase.verifyEqual(pam6Gen.length, 2^(7 - 2));
end
function processWrapsPrmsSignalInInformationsignal(testCase)
gen = Signalgenerator( ...
"form", signalform.prms, ...
"length", 8, ...
"dimension", 2, ...
"order", 6, ...
"fs", 42);
out = gen.process();
testCase.verifyClass(out, 'Informationsignal');
testCase.verifySize(out.signal, [8 2]);
testCase.verifyEqual(out.fs, 42);
testCase.verifyEqual(height(out.logbook), 1);
end
end
end