test_ZeigerEvalAnalogToDigitNeu.cpp 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. #include <unity.h>
  2. #include <ClassFlowCNNGeneral.h>
  3. class UnderTestCNNGeneral : public ClassFlowCNNGeneral {
  4. public:
  5. UnderTestCNNGeneral( ClassFlowAlignment *_flowalign, t_CNNType _cnntype) :
  6. ClassFlowCNNGeneral(_flowalign, _cnntype) {};
  7. using ClassFlowCNNGeneral::ZeigerEvalAnalogToDigitNeu;
  8. };
  9. /**
  10. * @brief
  11. *
  12. * Transition = x.8 - x.2 hier keine Transition in den Testfaellen
  13. * Versatz = dig=x.n, ana= n.y: kein Versatz, da beide "n" gleich
  14. */
  15. void test_analogToDigit_Standard() {
  16. UnderTestCNNGeneral* undertest = new UnderTestCNNGeneral(nullptr, Digital100);
  17. // 4.8 ist eine "hängende" 5. Heißt sie ist nicht bis auf 5.0 umgesprungen.
  18. // ab Transition sollte trotzdem ein "hängendes Digit" gerundet werden.
  19. // Transition = ja
  20. // Versatz = nein
  21. TEST_ASSERT_EQUAL_INT(5, undertest->ZeigerEvalAnalogToDigitNeu(4.8, 8.0, 8, 9.2));
  22. // https://github.com/jomjol/AI-on-the-edge-device/issues/921#issue-1344032217
  23. // Standard: dig=9.6, ana=6.8 => erg=9
  24. // Transition = nein
  25. // Versatz = nein
  26. TEST_ASSERT_EQUAL_INT(9, undertest->ZeigerEvalAnalogToDigitNeu( 9.6, 6.8, 6, 9.2));
  27. // https://github.com/jomjol/AI-on-the-edge-device/issues/921#issuecomment-1220365920
  28. // Standard: dig=4.6, ana=6.2 => erg=4
  29. // Transition = nein
  30. // Versatz = nein
  31. TEST_ASSERT_EQUAL_INT(4, undertest->ZeigerEvalAnalogToDigitNeu( 4.6, 6.2, 6, 9.2));
  32. // https://github.com/jomjol/AI-on-the-edge-device/issues/1143#issuecomment-1274434805
  33. // Hängendes digit ()
  34. // Standard: dig=6.8, ana=8.6 => erg=7
  35. // Transition = nein
  36. // Versatz = nein
  37. TEST_ASSERT_EQUAL_INT(7, undertest->ZeigerEvalAnalogToDigitNeu( 6.8, 8.6, 6, 9.2));
  38. // https://github.com/jomjol/AI-on-the-edge-device/issues/1143#issuecomment-1274434805
  39. // Ebenfalls Hängendes digit () bei kleinem Zeiger nach 0-Durchlauf
  40. // Standard: dig=6.8, ana=1.0 => erg=7
  41. // Transition = nein
  42. // Versatz = nein
  43. TEST_ASSERT_EQUAL_INT(7, undertest->ZeigerEvalAnalogToDigitNeu( 6.8, 1.0, 1, 9.2));
  44. }
  45. void test_analogToDigit_Transition() {
  46. UnderTestCNNGeneral* undertest = new UnderTestCNNGeneral(nullptr, Digital100);
  47. // https://github.com/jomjol/AI-on-the-edge-device/issues/921#issuecomment-1222672175
  48. // Standard: dig=3.9, ana=9.7 => erg=3
  49. // Transition = ja
  50. // Nulldurchgang = nein
  51. // Versatz = nein
  52. TEST_ASSERT_EQUAL_INT(3, undertest->ZeigerEvalAnalogToDigitNeu( 3.9, 9.7, 9, 9.2));
  53. // ohne Referenz
  54. // Standard: dig=4.0, ana=9.1 => erg=4
  55. // Transition = ja
  56. // Nulldurchgang = nein
  57. // Versatz = nein
  58. // Besonderheit: Digit ist bei analog 9.1 noch nicht losgelaufen
  59. TEST_ASSERT_EQUAL_INT(4, undertest->ZeigerEvalAnalogToDigitNeu( 4.0, 9.1, 9, 9.2));
  60. // ohne Referenz
  61. // Standard: dig=9.8, ana=0.1, ana_2=9.9 => erg=9
  62. // Transition = ja
  63. // Nulldurchgang = nein
  64. // Versatz = nein
  65. // Besonderheit: analog wird durch vorherigen analog wieder auf 9 gesetzt
  66. TEST_ASSERT_EQUAL_INT(9, undertest->ZeigerEvalAnalogToDigitNeu( 9.8, 0.1, 9, 9.2));
  67. // https://github.com/jomjol/AI-on-the-edge-device/issues/1110#issuecomment-1277425333
  68. // Standard: dig=5.9, ana=9.4 => erg=9
  69. // Transition = ja
  70. // Nulldurchgang = nein
  71. // Versatz = nein
  72. // Besonderheit:
  73. TEST_ASSERT_EQUAL_INT(5, undertest->ZeigerEvalAnalogToDigitNeu( 5.9, 9.4, 9, 9.2));
  74. // https://github.com/jomjol/AI-on-the-edge-device/issues/1110#issuecomment-1282168030
  75. // Standard: dig=1.8, ana=7.8 => erg=9
  76. // Transition = ja
  77. // Nulldurchgang = nein
  78. // Versatz = nein
  79. // Besonderheit: Digit läuft mit Analog mit. Deshalb 1.8 (vs. 7.8)
  80. TEST_ASSERT_EQUAL_INT(1, undertest->ZeigerEvalAnalogToDigitNeu( 1.8, 7.8, 7, 7.7));
  81. }