⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rscodingunittest.m

📁 RS编码程序设计
💻 M
字号:

%
%   File Name   :   RsCodingUnitTest.m
%   Abstract    :   RsCodingUnitTest.m contains testsuits for Rs 
%                   co- and de-code modular and related utility modulars.
%                   To sum up, all 13 tests covers follow modulars:
%                   1. Symbol Add modular
%                   2. Symbol Sub modular
%                   3. Symbol Mul modular
%                   4. Symbol Div modular
%                   5. Symbol Rev modular
%                   
%                   6. Poly Add modular
%                   7. Poly Sub modular
%                   8. Poly Mul modular
%       
%                   9. RS encode modular
%                   10.Syndrome calculation modular
%                   11.Error Postion Poly Calculation modular
%                   12.Root of Error Position Poly Calculation modular
%                   13.Error Position and Error Value Calculation modular
%                   
%   
%   Version     :   1.0     2006-3-15
%*************************************************************************

function RsCodingUnitTest

%*************************************************************************
%   First, get all test samples and expected output
[SymbolAddTestSample, SymbolSubTestSample, SymbolMulTestSample, SymbolDivTestSample, SymbolRevTestSample] = GetSymbolTestSampleStu();

[PolyAddTestSample, PolySubTestSample, PolyMulTestSample] = GetPolyTestSampleStu();

[Input, RsCode, ErrorNum, ErrorValue, ErrorPosition, Syndrome, ErrPosPoly, Sigma, Root] = GetRsCoDecodeTestSampleStu();


%*************************************************************************
%   Begin Unit Test
SucceedCount = 0;
FailedCount = 0;
Succeed = 0;
Failed = 1;

BeginUnitTest = sprintf('Begin unit test of RS co-/de-code and related modular, result will be reported at the end');
disp(BeginUnitTest);

%   1. Symbol add modular test
SymbolAddRet = RsSymbolAdd(SymbolAddTestSample(1, 1), SymbolAddTestSample(1, 2));
if (CHECK_EQUAL(SymbolAddRet, SymbolAddTestSample( 1, 3 ), 'Symbol Add modular') == Succeed)
    SucceedCount = SucceedCount + 1;
else
    FailedCount = FailedCount + 1;
end;


%   2. Symbol sub modular test
SymbolSubRet = RsSymbolSub(SymbolSubTestSample(1, 1), SymbolSubTestSample(1, 2));
if (CHECK_EQUAL(SymbolSubRet, SymbolSubTestSample(1, 3), 'Symbol Sub modular') == Succeed)
    SucceedCount = SucceedCount + 1;
else
    FailedCount = FailedCount + 1;
end;

%   3. Symbol Mul modular test
SymbolMulRet = RsSymbolMul(SymbolMulTestSample(1, 1), SymbolMulTestSample(1, 2));
if (CHECK_EQUAL(SymbolMulRet, SymbolMulTestSample(1, 3), 'Symbol Mul modular') == Succeed)
    SucceedCount = SucceedCount + 1;
else
    FailedCount = FailedCount + 1;
end;

%   4. Symbol Div modular test
SymbolDivRet = RsSymbolDiv(SymbolDivTestSample(1, 1), SymbolDivTestSample(1, 2));
if (CHECK_EQUAL(SymbolDivRet, SymbolDivTestSample(1, 3), 'Symbol Div modular') == Succeed)
    SucceedCount = SucceedCount + 1;
else
    FailedCount = FailedCount + 1;
end;


%   5. Symbol Rev modular test
SymbolRevRet = RsSymbolRev(SymbolRevTestSample(1, 1));
if (CHECK_EQUAL(SymbolRevRet, SymbolRevTestSample(1, 2), 'Symbol Rev modular') == Succeed)
    SucceedCount = SucceedCount + 1;
else
    FailedCount = FailedCount + 1;
end;

disp(sprintf('\n'));
%   6. Poly Add modular test
PolyAddRet = RsPolyAdd(PolyAddTestSample(1, :), PolyAddTestSample(2, :));
if (CHECK_EQUAL(PolyAddRet, PolyAddTestSample(3, :), 'Poly Add modular') == Succeed)
    SucceedCount = SucceedCount + 1;
else
    FailedCount = FailedCount + 1;
end;

%   7. Poly Sub modular test
PolySubRet = RsPolySub(PolySubTestSample(1, :), PolySubTestSample(2, :));
if (CHECK_EQUAL(PolySubRet, PolySubTestSample(3, :), 'Poly Sub modular') == Succeed)
    SucceedCount = SucceedCount + 1;
else
    FailedCount = FailedCount + 1;
end;

%   8. Poly Mul modular test
PolyMulRet = RsPolyMul(PolyMulTestSample(1, :), PolyMulTestSample(2, :));
if ( CHECK_EQUAL(PolyMulRet, PolyMulTestSample(3, :), 'Poly Mul modular') == Succeed)
    SucceedCount = SucceedCount + 1;
else
    FailedCount = FailedCount + 1;
end;

disp(sprintf('\n'));

%   9. RS code modular test
RsEnCode = RsEncode(Input);
if (CHECK_EQUAL(RsEnCode, RsCode, 'RS encode modular') == Succeed)
    SucceedCount = SucceedCount + 1;
else
    FailedCount = FailedCount + 1;
end;

%*************************************************************************
%   Get through noise channel
NoisedRsCode = RsChannel(RsEnCode, ErrorNum, ErrorPosition, ErrorValue);

%*************************************************************************
%   Continue test

%   10. Syndrome Calc modular test
SyndromCalc = RsDecodeCalcSynd(NoisedRsCode);
if (CHECK_EQUAL(SyndromCalc, Syndrome, 'Syndrome Calculation modular') == Succeed)
    SucceedCount = SucceedCount + 1;
else
    FailedCount = FailedCount + 1;
end;

%   11. Error Position Poly Calculation modular test
[ErrPosPolyCalc, SigmaCalc] = RsDecodeIterate(SyndromCalc);
if (CHECK_EQUAL(ErrPosPolyCalc, ErrPosPoly, 'Error Position Poly Calculation modular') == Succeed)
    SucceedCount = SucceedCount + 1;
else
    FailedCount = FailedCount + 1;
end;
if (CHECK_EQUAL(SigmaCalc, Sigma, 'Sigma during iteration ') == Succeed)
    SucceedCount = SucceedCount + 1;
else
    FailedCount = FailedCount + 1;
end;

%   12. Root of Error Poly modular test
[RootCalc] = RsDecodeRoot(ErrPosPolyCalc);
if (CHECK_EQUAL(RootCalc, Root, 'Root of Error Position Poly Calculation modular') == Succeed)
    SucceedCount = SucceedCount + 1;
else
    FailedCount = FailedCount + 1;
end;

%   13. Error Position and Error Value calculation modular test
[ErrorValueCalc, ErrorPositionCalc] = RsDecodeForney(SyndromCalc, ErrPosPolyCalc, RootCalc);
if (CHECK_EQUAL(ErrorValueCalc, ErrorValue, 'Error Value Calculation modular') == Succeed)
    SucceedCount = SucceedCount + 1;
else
    FailedCount = FailedCount + 1;
end;

if (CHECK_EQUAL(ErrorPositionCalc, ErrorPosition, 'Error Position Calculation modular') == Succeed)
    SucceedCount = SucceedCount + 1;
else
    FailedCount = FailedCount + 1;
end;

%   14. Print unit test result
UnitTestResult = sprintf('\n[Unit Test Report] Conduct %d unit tests, %d succeeded, %d failed.', 13, SucceedCount, FailedCount);
disp(UnitTestResult);



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -