📄 enrgy_02.cc
字号:
input.assign(L"1, 2, 3, 4"); ans.assign(L"22.9766"); ma.assign(L"1"); ar.assign(L"1, -0.5"); egy0.setAlgorithm(FILTER); egy0.setImplementation(IDENTITY); egy0.setFloor(1.0); egy0.setFilter(ma, ar); egy0.compute(output, input); egy0.compute(output, input); if (!output.almostEqual(ans)) { ans.debug(L"expected result:"); output.debug(L"wrong result:"); return Error::handle(name(), L"compute", Error::TEST, __FILE__, __LINE__); } // test the scaling modes using a longer signal // egy0.setAlgorithm(SUM); input.assign(L"0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,32,32,0,32,-32,16,48,48,16,-48,0,16,32,-32,-16,0,0,16,16,-32,-32,32,0,-16,-48,0,0,-16,0,-32,-48,48,-32,48,16,0,-48,-48,0,48,-32,0,16,0,16,48,48,-48,0,48,0,48,-32,48,16,-48,-16,32,32,-48,48,32,0,-48,-32,-16,48,48,16,32,0,-16,16,0,-32,-48,-48,0,16,0,-32,32,-48,32,0,48,-48,-48,32,32,0,48,48,-48,-48,0,16,-16,32,-16,16,-32,-16,0,32,48,0,0,48,0,0,-16,0,16,16,0,0,0,-32,0,32,16,0,32,-48,16,32,16,32,16,48,0,32,-16,16,-48,0,48,-32,0,-16,-48,-32,-32,16,-48,00,-16,16,-48"); ans.assign(L"142848"); egy0.setImplementation(IDENTITY); egy0.compute(output, input); if (!output.almostEqual(ans)) { ans.debug(L"expected result:"); output.debug(L"wrong result:"); return Error::handle(name(), L"compute", Error::TEST, __FILE__, __LINE__); } ans.assign(L"11.869536406860874"); egy0.setAlgorithm(SUM); egy0.setImplementation(LOG); egy0.compute(output, input); if (!output.almostEqual(ans)) { ans.debug(L"expected result:"); output.debug(L"wrong result:"); return Error::handle(name(), L"compute", Error::TEST, __FILE__, __LINE__); } ans.assign(L"51.5487"); egy0.setImplementation(DB); egy0.compute(output, input); if (!output.almostEqual(ans)) { ans.debug(L"expected result:"); output.debug(L"wrong result:"); return Error::handle(name(), L"compute", Error::TEST, __FILE__, __LINE__); } ans.assign(L"714.24"); egy0.setImplementation(POWER); egy0.compute(output, input); if (!output.almostEqual(ans)) { ans.debug(L"expected result:"); output.debug(L"wrong result:"); return Error::handle(name(), L"compute", Error::TEST, __FILE__, __LINE__); } ans.assign(L"6.57122"); egy0.setImplementation(LOG_POWER); egy0.compute(output, input); if (!output.almostEqual(ans)) { ans.debug(L"expected result:"); output.debug(L"wrong result:"); return Error::handle(name(), L"compute", Error::TEST, __FILE__, __LINE__); } ans.assign(L"28.5385"); egy0.setImplementation(DB_POWER); egy0.compute(output, input); if (!output.almostEqual(ans)) { ans.debug(L"expected result:"); output.debug(L"wrong result:"); return Error::handle(name(), L"compute", Error::TEST, __FILE__, __LINE__); } ans.assign(L"26.7253"); egy0.setImplementation(RMS); egy0.compute(output, input); if (!output.almostEqual(ans)) { ans.debug(L"expected result:"); output.debug(L"wrong result:"); return Error::handle(name(), L"compute", Error::TEST, __FILE__, __LINE__); } ans.assign(L"3.2856"); egy0.setImplementation(LOG_RMS); egy0.compute(output, input); if (!output.almostEqual(ans)) { ans.debug(L"expected result:"); output.debug(L"wrong result:"); return Error::handle(name(), L"compute", Error::TEST, __FILE__, __LINE__); } ans.assign(L"28.5385"); egy0.setImplementation(DB_RMS); egy0.compute(output, input); if (!output.almostEqual(ans)) { ans.debug(L"expected result:"); output.debug(L"wrong result:"); return Error::handle(name(), L"compute", Error::TEST, __FILE__, __LINE__); } // test with an all zero vector: // note the use of an energy floor to make sure we correctly clip the result // input.assign(L"0, 0, 0, 0"); egy0.setFloor(-10); ans.assign(L"0.0"); egy0.setImplementation(IDENTITY); egy0.compute(output, input); if (!output.almostEqual(ans)) { ans.debug(L"expected result:"); output.debug(L"wrong result:"); return Error::handle(name(), L"compute", Error::TEST, __FILE__, __LINE__); } egy0.setImplementation(LOG); ans.assign(L"-10"); egy0.compute(output, input); if (!output.almostEqual(ans)) { ans.debug(L"expected result:"); output.debug(L"wrong result:"); return Error::handle(name(), L"compute", Error::TEST, __FILE__, __LINE__); } egy0.setImplementation(DB); egy0.compute(output, input); if (!output.almostEqual(ans)) { ans.debug(L"expected result:"); output.debug(L"wrong result:"); return Error::handle(name(), L"compute", Error::TEST, __FILE__, __LINE__); } egy0.setImplementation(POWER); ans.assign(L"0"); egy0.compute(output, input); if (!output.almostEqual(ans)) { ans.debug(L"expected result:"); output.debug(L"wrong result:"); return Error::handle(name(), L"compute", Error::TEST, __FILE__, __LINE__); } egy0.setImplementation(LOG_POWER); ans.assign(L"-10"); egy0.compute(output, input); if (!output.almostEqual(ans)) { ans.debug(L"expected result:"); output.debug(L"wrong result:"); return Error::handle(name(), L"compute", Error::TEST, __FILE__, __LINE__); } egy0.setImplementation(DB_POWER); egy0.compute(output, input); if (!output.almostEqual(ans)) { ans.debug(L"expected result:"); output.debug(L"wrong result:"); return Error::handle(name(), L"compute", Error::TEST, __FILE__, __LINE__); } egy0.setImplementation(RMS); ans.assign(L"0"); egy0.compute(output, input); if (!output.almostEqual(ans)) { ans.debug(L"expected result:"); output.debug(L"wrong result:"); return Error::handle(name(), L"compute", Error::TEST, __FILE__, __LINE__); } egy0.setImplementation(LOG_RMS); ans.assign(L"-10"); egy0.compute(output, input); if (!output.almostEqual(ans)) { ans.debug(L"expected result:"); output.debug(L"wrong result:"); return Error::handle(name(), L"compute", Error::TEST, __FILE__, __LINE__); } egy0.setImplementation(DB_RMS); ans.assign(L"-10"); egy0.compute(output, input); if (!output.almostEqual(ans)) { ans.debug(L"expected result:"); output.debug(L"wrong result:"); return Error::handle(name(), L"compute", Error::TEST, __FILE__, __LINE__); } // test with a constant vector // input.assign(L"1, 1, 1, 1"); ans.assign(L"4.0"); egy0.setImplementation(IDENTITY); egy0.compute(output, input); if (!output.almostEqual(ans)) { ans.debug(L"expected result:"); output.debug(L"wrong result:"); return Error::handle(name(), L"compute", Error::TEST, __FILE__, __LINE__); } ans.assign(L"1.386294"); egy0.setImplementation(LOG); egy0.compute(output, input); if (!output.almostEqual(ans)) { ans.debug(L"expected result:"); output.debug(L"wrong result:"); return Error::handle(name(), L"compute", Error::TEST, __FILE__, __LINE__); } ans.assign(L"6.0206"); egy0.setImplementation(DB); egy0.compute(output, input); if (!output.almostEqual(ans)) { ans.debug(L"expected result:"); output.debug(L"wrong result:"); return Error::handle(name(), L"compute", Error::TEST, __FILE__, __LINE__); } ans.assign(L"1.0"); egy0.setImplementation(POWER); egy0.compute(output, input); if (!output.almostEqual(ans)) { ans.debug(L"expected result:"); output.debug(L"wrong result:"); return Error::handle(name(), L"compute", Error::TEST, __FILE__, __LINE__); } ans.assign(L"0.0"); egy0.setImplementation(LOG_POWER); egy0.compute(output, input); if (!output.almostEqual(ans)) { ans.debug(L"expected result:"); output.debug(L"wrong result:"); return Error::handle(name(), L"compute", Error::TEST, __FILE__, __LINE__); } ans.assign(L"0.0"); egy0.setImplementation(DB_POWER); egy0.compute(output, input); if (!output.almostEqual(ans)) { ans.debug(L"expected result:"); output.debug(L"wrong result:"); return Error::handle(name(), L"compute", Error::TEST, __FILE__, __LINE__); } ans.assign(L"1.0"); egy0.setImplementation(RMS); egy0.compute(output, input); if (!output.almostEqual(ans)) { ans.debug(L"expected result:"); output.debug(L"wrong result:"); return Error::handle(name(), L"compute", Error::TEST, __FILE__, __LINE__); } ans.assign(L"0.0"); egy0.setImplementation(LOG_RMS); egy0.compute(output, input); if (!output.almostEqual(ans)) { ans.debug(L"expected result:"); output.debug(L"wrong result:"); return Error::handle(name(), L"compute", Error::TEST, __FILE__, __LINE__); } ans.assign(L"0.0"); egy0.setImplementation(DB_RMS); egy0.compute(output, input); if (!output.almostEqual(ans)) { ans.debug(L"expected result:"); output.debug(L"wrong result:"); return Error::handle(name(), L"compute", Error::TEST, __FILE__, __LINE__); } // reset indentation // if (level_a > Integral::NONE) { Console::decreaseIndention(); } //--------------------------------------------------------------------------- // // 5. print completion message // //--------------------------------------------------------------------------- // reset indentation // if (level_a > Integral::NONE) { Console::decreaseIndention(); } if (level_a > Integral::NONE) { String output(L"diagnostics passed for class "); output.concat(name()); output.concat(L"\n"); Console::put(output); } // exit gracefully // return true;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -