122 lines
4.0 KiB
Matlab
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
|