BasicTestsQ7.cpp 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465
  1. #include "BasicTestsQ7.h"
  2. #include "Error.h"
  3. #define SNR_THRESHOLD 20
  4. #define ABS_ERROR_Q7 ((q7_t)2)
  5. #define ABS_ERROR_Q31 ((q31_t)(1<<15))
  6. #define ONEHALF 0x40
  7. #define GET_Q7_PTR() \
  8. const q7_t *inp1=input1.ptr(); \
  9. const q7_t *inp2=input2.ptr(); \
  10. q7_t *refp=ref.ptr(); \
  11. q7_t *outp=output.ptr();
  12. void BasicTestsQ7::test_add_q7()
  13. {
  14. GET_Q7_PTR();
  15. arm_add_q7(inp1,inp2,outp,input1.nbSamples());
  16. ASSERT_EMPTY_TAIL(output);
  17. ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
  18. ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q7);
  19. }
  20. void BasicTestsQ7::test_sub_q7()
  21. {
  22. GET_Q7_PTR();
  23. arm_sub_q7(inp1,inp2,outp,input1.nbSamples());
  24. ASSERT_EMPTY_TAIL(output);
  25. ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
  26. ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q7);
  27. }
  28. void BasicTestsQ7::test_mult_q7()
  29. {
  30. GET_Q7_PTR();
  31. arm_mult_q7(inp1,inp2,outp,input1.nbSamples());
  32. ASSERT_EMPTY_TAIL(output);
  33. ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
  34. ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q7);
  35. }
  36. /*
  37. This test is run on a very short signal (3 samples).
  38. It is too short for a good SNR estimation.
  39. So, SNR is artificially decreased a little just for this test.
  40. */
  41. void BasicTestsQ7::test_mult_short_q7()
  42. {
  43. GET_Q7_PTR();
  44. arm_mult_q7(inp1,inp2,outp,input1.nbSamples());
  45. ASSERT_EMPTY_TAIL(output);
  46. ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD - 1.0f);
  47. ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q7);
  48. }
  49. void BasicTestsQ7::test_negate_q7()
  50. {
  51. const q7_t *inp1=input1.ptr();
  52. q7_t *refp=ref.ptr();
  53. q7_t *outp=output.ptr();
  54. arm_negate_q7(inp1,outp,input1.nbSamples());
  55. ASSERT_EMPTY_TAIL(output);
  56. ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
  57. ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q7);
  58. }
  59. void BasicTestsQ7::test_offset_q7()
  60. {
  61. const q7_t *inp1=input1.ptr();
  62. q7_t *refp=ref.ptr();
  63. q7_t *outp=output.ptr();
  64. arm_offset_q7(inp1,this->scalar,outp,input1.nbSamples());
  65. ASSERT_EMPTY_TAIL(output);
  66. ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
  67. ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q7);
  68. }
  69. void BasicTestsQ7::test_scale_q7()
  70. {
  71. const q7_t *inp1=input1.ptr();
  72. q7_t *refp=ref.ptr();
  73. q7_t *outp=output.ptr();
  74. arm_scale_q7(inp1,this->scalar,0,outp,input1.nbSamples());
  75. ASSERT_EMPTY_TAIL(output);
  76. ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
  77. ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q7);
  78. }
  79. void BasicTestsQ7::test_dot_prod_q7()
  80. {
  81. q31_t r;
  82. const q7_t *inp1=input1.ptr();
  83. const q7_t *inp2=input2.ptr();
  84. q31_t *refp=dotRef.ptr();
  85. q31_t *outp=dotOutput.ptr();
  86. arm_dot_prod_q7(inp1,inp2,input1.nbSamples(),&r);
  87. outp[0] = r;
  88. ASSERT_SNR(dotOutput,dotRef,(float32_t)SNR_THRESHOLD);
  89. ASSERT_NEAR_EQ(dotOutput,dotRef,ABS_ERROR_Q31);
  90. ASSERT_EMPTY_TAIL(dotOutput);
  91. }
  92. void BasicTestsQ7::test_abs_q7()
  93. {
  94. GET_Q7_PTR();
  95. arm_abs_q7(inp1,outp,input1.nbSamples());
  96. ASSERT_EMPTY_TAIL(output);
  97. ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
  98. ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q7);
  99. }
  100. void BasicTestsQ7::test_shift_q7()
  101. {
  102. const q7_t *inp1=input1.ptr();
  103. q7_t *refp=ref.ptr();
  104. q7_t *outp=output.ptr();
  105. arm_shift_q7(inp1,1,outp,input1.nbSamples());
  106. ASSERT_EMPTY_TAIL(output);
  107. ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
  108. ASSERT_NEAR_EQ(output,ref,ABS_ERROR_Q7);
  109. }
  110. void BasicTestsQ7::setUp(Testing::testID_t id,std::vector<Testing::param_t>& params,Client::PatternMgr *mgr)
  111. {
  112. Testing::nbSamples_t nb=MAX_NB_SAMPLES;
  113. this->scalar = ONEHALF;
  114. switch(id)
  115. {
  116. case BasicTestsQ7::TEST_ADD_Q7_1:
  117. nb = 15;
  118. ref.reload(BasicTestsQ7::REF_ADD_Q7_ID,mgr,nb);
  119. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  120. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  121. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  122. break;
  123. case BasicTestsQ7::TEST_ADD_Q7_2:
  124. nb = 32;
  125. ref.reload(BasicTestsQ7::REF_ADD_Q7_ID,mgr,nb);
  126. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  127. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  128. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  129. break;
  130. case BasicTestsQ7::TEST_ADD_Q7_3:
  131. nb = 33;
  132. ref.reload(BasicTestsQ7::REF_ADD_Q7_ID,mgr,nb);
  133. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  134. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  135. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  136. break;
  137. case BasicTestsQ7::TEST_SUB_Q7_4:
  138. nb = 15;
  139. ref.reload(BasicTestsQ7::REF_SUB_Q7_ID,mgr,nb);
  140. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  141. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  142. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  143. break;
  144. case BasicTestsQ7::TEST_SUB_Q7_5:
  145. nb = 32;
  146. ref.reload(BasicTestsQ7::REF_SUB_Q7_ID,mgr,nb);
  147. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  148. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  149. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  150. break;
  151. case BasicTestsQ7::TEST_SUB_Q7_6:
  152. nb = 33;
  153. ref.reload(BasicTestsQ7::REF_SUB_Q7_ID,mgr,nb);
  154. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  155. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  156. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  157. break;
  158. case BasicTestsQ7::TEST_MULT_SHORT_Q7_7:
  159. nb = 15;
  160. ref.reload(BasicTestsQ7::REF_MULT_Q7_ID,mgr,nb);
  161. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  162. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  163. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  164. break;
  165. case BasicTestsQ7::TEST_MULT_Q7_8:
  166. nb = 32;
  167. ref.reload(BasicTestsQ7::REF_MULT_Q7_ID,mgr,nb);
  168. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  169. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  170. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  171. break;
  172. case BasicTestsQ7::TEST_MULT_Q7_9:
  173. nb = 33;
  174. ref.reload(BasicTestsQ7::REF_MULT_Q7_ID,mgr,nb);
  175. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  176. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  177. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  178. break;
  179. case BasicTestsQ7::TEST_NEGATE_Q7_10:
  180. nb = 15;
  181. ref.reload(BasicTestsQ7::REF_NEGATE_Q7_ID,mgr,nb);
  182. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  183. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  184. break;
  185. case BasicTestsQ7::TEST_NEGATE_Q7_11:
  186. nb = 32;
  187. ref.reload(BasicTestsQ7::REF_NEGATE_Q7_ID,mgr,nb);
  188. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  189. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  190. break;
  191. case BasicTestsQ7::TEST_NEGATE_Q7_12:
  192. nb = 33;
  193. ref.reload(BasicTestsQ7::REF_NEGATE_Q7_ID,mgr,nb);
  194. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  195. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  196. break;
  197. case BasicTestsQ7::TEST_OFFSET_Q7_13:
  198. nb = 15;
  199. ref.reload(BasicTestsQ7::REF_OFFSET_Q7_ID,mgr,nb);
  200. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  201. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  202. break;
  203. case BasicTestsQ7::TEST_OFFSET_Q7_14:
  204. nb = 32;
  205. ref.reload(BasicTestsQ7::REF_OFFSET_Q7_ID,mgr,nb);
  206. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  207. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  208. break;
  209. case BasicTestsQ7::TEST_OFFSET_Q7_15:
  210. nb = 33;
  211. ref.reload(BasicTestsQ7::REF_OFFSET_Q7_ID,mgr,nb);
  212. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  213. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  214. break;
  215. case BasicTestsQ7::TEST_SCALE_Q7_16:
  216. nb = 15;
  217. ref.reload(BasicTestsQ7::REF_SCALE_Q7_ID,mgr,nb);
  218. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  219. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  220. break;
  221. case BasicTestsQ7::TEST_SCALE_Q7_17:
  222. nb = 32;
  223. ref.reload(BasicTestsQ7::REF_SCALE_Q7_ID,mgr,nb);
  224. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  225. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  226. break;
  227. case BasicTestsQ7::TEST_SCALE_Q7_18:
  228. nb = 33;
  229. ref.reload(BasicTestsQ7::REF_SCALE_Q7_ID,mgr,nb);
  230. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  231. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  232. break;
  233. case BasicTestsQ7::TEST_DOT_PROD_Q7_19:
  234. nb = 15;
  235. dotRef.reload(BasicTestsQ7::REF_DOT_3_Q7_ID,mgr);
  236. dotOutput.create(dotRef.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  237. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  238. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  239. break;
  240. case BasicTestsQ7::TEST_DOT_PROD_Q7_20:
  241. nb = 32;
  242. dotRef.reload(BasicTestsQ7::REF_DOT_4N_Q7_ID,mgr);
  243. dotOutput.create(dotRef.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  244. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  245. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  246. break;
  247. case BasicTestsQ7::TEST_DOT_PROD_Q7_21:
  248. nb = 33;
  249. dotRef.reload(BasicTestsQ7::REF_DOT_4N1_Q7_ID,mgr);
  250. dotOutput.create(dotRef.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  251. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  252. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  253. break;
  254. case BasicTestsQ7::TEST_ABS_Q7_22:
  255. nb = 15;
  256. ref.reload(BasicTestsQ7::REF_ABS_Q7_ID,mgr,nb);
  257. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  258. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  259. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  260. break;
  261. case BasicTestsQ7::TEST_ABS_Q7_23:
  262. nb = 32;
  263. ref.reload(BasicTestsQ7::REF_ABS_Q7_ID,mgr,nb);
  264. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  265. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  266. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  267. break;
  268. case BasicTestsQ7::TEST_ABS_Q7_24:
  269. nb = 33;
  270. ref.reload(BasicTestsQ7::REF_ABS_Q7_ID,mgr,nb);
  271. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  272. input1.reload(BasicTestsQ7::INPUT1_Q7_ID,mgr,nb);
  273. input2.reload(BasicTestsQ7::INPUT2_Q7_ID,mgr,nb);
  274. break;
  275. case BasicTestsQ7::TEST_ADD_Q7_25:
  276. input1.reload(BasicTestsQ7::MAXPOS_Q7_ID,mgr);
  277. input2.reload(BasicTestsQ7::MAXPOS_Q7_ID,mgr);
  278. ref.reload(BasicTestsQ7::REF_POSSAT_12_Q7_ID,mgr);
  279. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  280. break;
  281. case BasicTestsQ7::TEST_ADD_Q7_26:
  282. input1.reload(BasicTestsQ7::MAXNEG_Q7_ID,mgr);
  283. input2.reload(BasicTestsQ7::MAXNEG_Q7_ID,mgr);
  284. ref.reload(BasicTestsQ7::REF_NEGSAT_13_Q7_ID,mgr);
  285. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  286. break;
  287. case BasicTestsQ7::TEST_SUB_Q7_27:
  288. ref.reload(BasicTestsQ7::REF_POSSAT_14_Q7_ID,mgr);
  289. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  290. input1.reload(BasicTestsQ7::MAXPOS_Q7_ID,mgr);
  291. input2.reload(BasicTestsQ7::MAXNEG_Q7_ID,mgr);
  292. break;
  293. case BasicTestsQ7::TEST_SUB_Q7_28:
  294. ref.reload(BasicTestsQ7::REF_NEGSAT_15_Q7_ID,mgr);
  295. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  296. input1.reload(BasicTestsQ7::MAXNEG_Q7_ID,mgr);
  297. input2.reload(BasicTestsQ7::MAXPOS_Q7_ID,mgr);
  298. break;
  299. case BasicTestsQ7::TEST_MULT_Q7_29:
  300. ref.reload(BasicTestsQ7::REF_POSSAT_16_Q7_ID,mgr);
  301. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  302. input1.reload(BasicTestsQ7::MAXNEG2_Q7_ID,mgr);
  303. input2.reload(BasicTestsQ7::MAXNEG2_Q7_ID,mgr);
  304. break;
  305. case BasicTestsQ7::TEST_NEGATE_Q7_30:
  306. ref.reload(BasicTestsQ7::REF_POSSAT_17_Q7_ID,mgr);
  307. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  308. input1.reload(BasicTestsQ7::MAXNEG2_Q7_ID,mgr);
  309. break;
  310. case BasicTestsQ7::TEST_OFFSET_Q7_31:
  311. ref.reload(BasicTestsQ7::REF_POSSAT_18_Q7_ID,mgr);
  312. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  313. input1.reload(BasicTestsQ7::MAXPOS_Q7_ID,mgr);
  314. /* 0.9 */
  315. this->scalar = 0x73;
  316. break;
  317. case BasicTestsQ7::TEST_OFFSET_Q7_32:
  318. ref.reload(BasicTestsQ7::REF_NEGSAT_19_Q7_ID,mgr);
  319. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  320. input1.reload(BasicTestsQ7::MAXNEG_Q7_ID,mgr);
  321. /* -0.9 */
  322. this->scalar = 0x8d;
  323. break;
  324. case BasicTestsQ7::TEST_SCALE_Q7_33:
  325. ref.reload(BasicTestsQ7::REF_POSSAT_20_Q7_ID,mgr);
  326. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  327. input1.reload(BasicTestsQ7::MAXNEG2_Q7_ID,mgr);
  328. /* Minus max*/
  329. this->scalar = 0x80;
  330. break;
  331. case BasicTestsQ7::TEST_SHIFT_Q7_34:
  332. ref.reload(BasicTestsQ7::REF_SHIFT_21_Q7_ID,mgr);
  333. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  334. input1.reload(BasicTestsQ7::INPUTRAND_Q7_ID,mgr);
  335. break;
  336. case BasicTestsQ7::TEST_SHIFT_Q7_35:
  337. ref.reload(BasicTestsQ7::REF_SHIFT_POSSAT_22_Q7_ID,mgr);
  338. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  339. input1.reload(BasicTestsQ7::MAXPOS_Q7_ID,mgr);
  340. break;
  341. case BasicTestsQ7::TEST_SHIFT_Q7_36:
  342. ref.reload(BasicTestsQ7::REF_SHIFT_NEGSAT_23_Q7_ID,mgr);
  343. output.create(ref.nbSamples(),BasicTestsQ7::OUT_SAMPLES_Q7_ID,mgr);
  344. input1.reload(BasicTestsQ7::MAXNEG_Q7_ID,mgr);
  345. break;
  346. }
  347. }
  348. void BasicTestsQ7::tearDown(Testing::testID_t id,Client::PatternMgr *mgr)
  349. {
  350. switch(id)
  351. {
  352. case BasicTestsQ7::TEST_DOT_PROD_Q7_19:
  353. case BasicTestsQ7::TEST_DOT_PROD_Q7_20:
  354. case BasicTestsQ7::TEST_DOT_PROD_Q7_21:
  355. dotOutput.dump(mgr);
  356. break;
  357. default:
  358. output.dump(mgr);
  359. }
  360. }