minimalist hardware testing support

Dependents:   MAX5715BOB_Tester MAX11131BOB_Tester MAX5171BOB_Tester MAX11410BOB_Tester ... more

Committer:
whismanoid
Date:
Mon Apr 13 02:53:26 2020 +0000
Revision:
12:55db0f4a417d
Parent:
11:bfa56dab822c
Child:
13:c294236d7465
use return type and arg type signatures in names e.g. FunctionCall_su_d_lu_Expect

Who changed what in which revision?

UserRevisionLine numberNew contents of line
whismanoid 0:93d4119d3f14 1 // /*******************************************************************************
whismanoid 0:93d4119d3f14 2 // * Copyright (C) 2019 Maxim Integrated Products, Inc., All Rights Reserved.
whismanoid 0:93d4119d3f14 3 // *
whismanoid 0:93d4119d3f14 4 // * Permission is hereby granted, free of charge, to any person obtaining a
whismanoid 0:93d4119d3f14 5 // * copy of this software and associated documentation files (the "Software"),
whismanoid 0:93d4119d3f14 6 // * to deal in the Software without restriction, including without limitation
whismanoid 0:93d4119d3f14 7 // * the rights to use, copy, modify, merge, publish, distribute, sublicense,
whismanoid 0:93d4119d3f14 8 // * and/or sell copies of the Software, and to permit persons to whom the
whismanoid 0:93d4119d3f14 9 // * Software is furnished to do so, subject to the following conditions:
whismanoid 0:93d4119d3f14 10 // *
whismanoid 0:93d4119d3f14 11 // * The above copyright notice and this permission notice shall be included
whismanoid 0:93d4119d3f14 12 // * in all copies or substantial portions of the Software.
whismanoid 0:93d4119d3f14 13 // *
whismanoid 0:93d4119d3f14 14 // * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
whismanoid 0:93d4119d3f14 15 // * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
whismanoid 0:93d4119d3f14 16 // * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
whismanoid 0:93d4119d3f14 17 // * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES
whismanoid 0:93d4119d3f14 18 // * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
whismanoid 0:93d4119d3f14 19 // * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
whismanoid 0:93d4119d3f14 20 // * OTHER DEALINGS IN THE SOFTWARE.
whismanoid 0:93d4119d3f14 21 // *
whismanoid 0:93d4119d3f14 22 // * Except as contained in this notice, the name of Maxim Integrated
whismanoid 0:93d4119d3f14 23 // * Products, Inc. shall not be used except as stated in the Maxim Integrated
whismanoid 0:93d4119d3f14 24 // * Products, Inc. Branding Policy.
whismanoid 0:93d4119d3f14 25 // *
whismanoid 0:93d4119d3f14 26 // * The mere transfer of this software does not imply any licenses
whismanoid 0:93d4119d3f14 27 // * of trade secrets, proprietary technology, copyrights, patents,
whismanoid 0:93d4119d3f14 28 // * trademarks, maskwork rights, or any other form of intellectual
whismanoid 0:93d4119d3f14 29 // * property whatsoever. Maxim Integrated Products, Inc. retains all
whismanoid 0:93d4119d3f14 30 // * ownership rights.
whismanoid 0:93d4119d3f14 31 // *******************************************************************************
whismanoid 0:93d4119d3f14 32 // */
whismanoid 0:93d4119d3f14 33 // *********************************************************************
whismanoid 0:93d4119d3f14 34 // @file MaximTinyTester.cpp
whismanoid 0:93d4119d3f14 35 // *********************************************************************
whismanoid 0:93d4119d3f14 36
whismanoid 0:93d4119d3f14 37 #include "MaximTinyTester.h"
whismanoid 0:93d4119d3f14 38
whismanoid 3:080aa1bb1bc0 39 #ifndef LED_ON
whismanoid 3:080aa1bb1bc0 40 # define LED_ON 0
whismanoid 3:080aa1bb1bc0 41 #endif
whismanoid 3:080aa1bb1bc0 42 #ifndef LED_OFF
whismanoid 3:080aa1bb1bc0 43 # define LED_OFF 1
whismanoid 3:080aa1bb1bc0 44 #endif
whismanoid 3:080aa1bb1bc0 45
whismanoid 0:93d4119d3f14 46 MaximTinyTester::MaximTinyTester(CmdLine& AssociatedCmdLine,
whismanoid 0:93d4119d3f14 47 AnalogIn& analogInPin0,
whismanoid 0:93d4119d3f14 48 AnalogIn& analogInPin1,
whismanoid 0:93d4119d3f14 49 AnalogIn& analogInPin2,
whismanoid 0:93d4119d3f14 50 AnalogIn& analogInPin3,
whismanoid 0:93d4119d3f14 51 AnalogIn& analogInPin4,
whismanoid 1:f98ddb04f9e0 52 AnalogIn& analogInPin5,
whismanoid 1:f98ddb04f9e0 53 DigitalOut& m_RFailLED,
whismanoid 1:f98ddb04f9e0 54 DigitalOut& m_GPassLED,
whismanoid 1:f98ddb04f9e0 55 DigitalOut& m_BBusyLED)
whismanoid 0:93d4119d3f14 56 : associatedCmdLine(AssociatedCmdLine)
whismanoid 0:93d4119d3f14 57 , analogInPin0(analogInPin0)
whismanoid 0:93d4119d3f14 58 , analogInPin1(analogInPin1)
whismanoid 0:93d4119d3f14 59 , analogInPin2(analogInPin2)
whismanoid 0:93d4119d3f14 60 , analogInPin3(analogInPin3)
whismanoid 0:93d4119d3f14 61 , analogInPin4(analogInPin4)
whismanoid 0:93d4119d3f14 62 , analogInPin5(analogInPin5)
whismanoid 1:f98ddb04f9e0 63 , m_RFailLED(m_RFailLED)
whismanoid 1:f98ddb04f9e0 64 , m_GPassLED(m_GPassLED)
whismanoid 1:f98ddb04f9e0 65 , m_BBusyLED(m_BBusyLED)
whismanoid 0:93d4119d3f14 66 {
whismanoid 0:93d4119d3f14 67 nPass = 0;
whismanoid 0:93d4119d3f14 68 nFail = 0;
whismanoid 0:93d4119d3f14 69 err_threshold = 0.030; // 30mV
whismanoid 0:93d4119d3f14 70 input_timeout_time_msec = 250;
whismanoid 0:93d4119d3f14 71 settle_time_msec = 250;
whismanoid 1:f98ddb04f9e0 72 blink_time_msec = 75;
whismanoid 0:93d4119d3f14 73 analogInPin_fullScaleVoltage[0] = 3.300;
whismanoid 0:93d4119d3f14 74 analogInPin_fullScaleVoltage[1] = 3.300;
whismanoid 0:93d4119d3f14 75 analogInPin_fullScaleVoltage[2] = 3.300;
whismanoid 0:93d4119d3f14 76 analogInPin_fullScaleVoltage[3] = 3.300;
whismanoid 0:93d4119d3f14 77 analogInPin_fullScaleVoltage[4] = 3.300;
whismanoid 0:93d4119d3f14 78 analogInPin_fullScaleVoltage[5] = 3.300;
whismanoid 0:93d4119d3f14 79 }
whismanoid 0:93d4119d3f14 80
whismanoid 0:93d4119d3f14 81 /** reset the pass/fail counters.
whismanoid 0:93d4119d3f14 82 *
whismanoid 0:93d4119d3f14 83 * @post nPass and nFail are reset to 0
whismanoid 0:93d4119d3f14 84 *
whismanoid 0:93d4119d3f14 85 */
whismanoid 0:93d4119d3f14 86 void MaximTinyTester::clear(void)
whismanoid 0:93d4119d3f14 87 {
whismanoid 0:93d4119d3f14 88 nPass = 0;
whismanoid 0:93d4119d3f14 89 nFail = 0;
whismanoid 3:080aa1bb1bc0 90 // PinName NC means NOT_CONNECTED; DigitalOut::is_connected() returns false
whismanoid 3:080aa1bb1bc0 91 if (m_RFailLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 92 m_RFailLED = LED_ON;
whismanoid 3:080aa1bb1bc0 93 }
whismanoid 3:080aa1bb1bc0 94 if (m_GPassLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 95 m_GPassLED = LED_ON;
whismanoid 3:080aa1bb1bc0 96 }
whismanoid 3:080aa1bb1bc0 97 if (m_BBusyLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 98 m_BBusyLED = LED_OFF;
whismanoid 3:080aa1bb1bc0 99 }
whismanoid 0:93d4119d3f14 100 }
whismanoid 0:93d4119d3f14 101
whismanoid 0:93d4119d3f14 102 /** report that a test has completed with success.
whismanoid 0:93d4119d3f14 103 *
whismanoid 0:93d4119d3f14 104 * @post nPass is increased by 1
whismanoid 0:93d4119d3f14 105 *
whismanoid 0:93d4119d3f14 106 */
whismanoid 0:93d4119d3f14 107 void MaximTinyTester::PASS()
whismanoid 0:93d4119d3f14 108 {
whismanoid 0:93d4119d3f14 109 ++nPass;
whismanoid 1:f98ddb04f9e0 110 // m_RFailLED = LED_ON; m_GPassLED = LED_ON; m_BBusyLED = LED_ON;
whismanoid 1:f98ddb04f9e0 111 // pulse blue LED during test to indicate activity
whismanoid 3:080aa1bb1bc0 112 if (m_GPassLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 113 m_GPassLED = LED_OFF;
whismanoid 3:080aa1bb1bc0 114 }
whismanoid 3:080aa1bb1bc0 115 if (m_BBusyLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 116 m_BBusyLED = LED_ON;
whismanoid 3:080aa1bb1bc0 117 }
whismanoid 1:f98ddb04f9e0 118 wait_ms(blink_time_msec); // delay
whismanoid 3:080aa1bb1bc0 119 if (m_GPassLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 120 m_GPassLED = LED_ON;
whismanoid 3:080aa1bb1bc0 121 }
whismanoid 3:080aa1bb1bc0 122 if (m_BBusyLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 123 m_BBusyLED = LED_OFF;
whismanoid 3:080aa1bb1bc0 124 }
whismanoid 1:f98ddb04f9e0 125 wait_ms(blink_time_msec); // delay
whismanoid 0:93d4119d3f14 126 associatedCmdLine.serial().printf("\r\n+PASS ");
whismanoid 0:93d4119d3f14 127 }
whismanoid 0:93d4119d3f14 128
whismanoid 0:93d4119d3f14 129 /** report that a test has completed with failure.
whismanoid 0:93d4119d3f14 130 *
whismanoid 0:93d4119d3f14 131 * @post nFail is increased by 1
whismanoid 0:93d4119d3f14 132 *
whismanoid 0:93d4119d3f14 133 */
whismanoid 0:93d4119d3f14 134 void MaximTinyTester::FAIL()
whismanoid 0:93d4119d3f14 135 {
whismanoid 0:93d4119d3f14 136 ++nFail;
whismanoid 1:f98ddb04f9e0 137 // m_RFailLED = LED_ON; m_GPassLED = LED_ON; m_BBusyLED = LED_ON;
whismanoid 1:f98ddb04f9e0 138 // pulse blue LED during test to indicate activity
whismanoid 3:080aa1bb1bc0 139 if (m_RFailLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 140 m_RFailLED = LED_OFF;
whismanoid 3:080aa1bb1bc0 141 }
whismanoid 3:080aa1bb1bc0 142 if (m_BBusyLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 143 m_BBusyLED = LED_ON;
whismanoid 3:080aa1bb1bc0 144 }
whismanoid 1:f98ddb04f9e0 145 wait_ms(blink_time_msec); // delay
whismanoid 3:080aa1bb1bc0 146 if (m_RFailLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 147 m_RFailLED = LED_ON;
whismanoid 3:080aa1bb1bc0 148 }
whismanoid 3:080aa1bb1bc0 149 if (m_BBusyLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 150 m_BBusyLED = LED_OFF;
whismanoid 3:080aa1bb1bc0 151 }
whismanoid 1:f98ddb04f9e0 152 wait_ms(blink_time_msec); // delay
whismanoid 0:93d4119d3f14 153 associatedCmdLine.serial().printf("\r\n-FAIL ");
whismanoid 0:93d4119d3f14 154 #if USE_LEDS
whismanoid 0:93d4119d3f14 155 rgb_led.red(); // diagnostic rbg led RED
whismanoid 0:93d4119d3f14 156 //~ rgb_led.green(); // diagnostic rbg led GREEN
whismanoid 0:93d4119d3f14 157 //~ rgb_led.blue(); // diagnostic rbg led BLUE
whismanoid 0:93d4119d3f14 158 //~ rgb_led.white(); // diagnostic rbg led RED+GREEN+BLUE=WHITE
whismanoid 0:93d4119d3f14 159 //~ rgb_led.cyan(); // diagnostic rbg led GREEN+BLUE=CYAN
whismanoid 0:93d4119d3f14 160 //~ rgb_led.magenta(); // diagnostic rbg led RED+BLUE=MAGENTA
whismanoid 0:93d4119d3f14 161 //~ rgb_led.yellow(); // diagnostic rbg led RED+GREEN=YELLOW
whismanoid 0:93d4119d3f14 162 //~ rgb_led.black(); // diagnostic rbg led BLACK
whismanoid 0:93d4119d3f14 163 #endif // USE_LEDS
whismanoid 0:93d4119d3f14 164 }
whismanoid 0:93d4119d3f14 165
whismanoid 9:3ec00515891d 166 /** Print a message to the console during test.
whismanoid 9:3ec00515891d 167 */
whismanoid 9:3ec00515891d 168 void MaximTinyTester::print(const char* stringLiteralMessage)
whismanoid 9:3ec00515891d 169 {
whismanoid 9:3ec00515891d 170 associatedCmdLine.serial().printf("\r\n %s", stringLiteralMessage);
whismanoid 9:3ec00515891d 171 }
whismanoid 9:3ec00515891d 172
whismanoid 0:93d4119d3f14 173 /** Report number of pass and number of fail test results
whismanoid 0:93d4119d3f14 174 */
whismanoid 0:93d4119d3f14 175 void MaximTinyTester::Report_Summary(void)
whismanoid 0:93d4119d3f14 176 {
whismanoid 0:93d4119d3f14 177 associatedCmdLine.serial().printf("\r\nSummary: %d PASS %d FAIL\r\n", nPass, nFail);
whismanoid 0:93d4119d3f14 178 //~ associatedCmdLine.serial().printf(g_SelfTest_nPass);
whismanoid 0:93d4119d3f14 179 //~ associatedCmdLine.serial().printf(" PASS ");
whismanoid 0:93d4119d3f14 180 //~ associatedCmdLine.serial().printf(g_SelfTest_nFail);
whismanoid 0:93d4119d3f14 181 //~ associatedCmdLine.serial().printf(" FAIL\r\n");
whismanoid 0:93d4119d3f14 182 if (nFail == 0) {
whismanoid 3:080aa1bb1bc0 183 if (m_RFailLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 184 m_RFailLED = LED_OFF;
whismanoid 3:080aa1bb1bc0 185 }
whismanoid 3:080aa1bb1bc0 186 if (m_GPassLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 187 m_GPassLED = LED_ON;
whismanoid 3:080aa1bb1bc0 188 }
whismanoid 3:080aa1bb1bc0 189 if (m_BBusyLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 190 m_BBusyLED = LED_OFF;
whismanoid 3:080aa1bb1bc0 191 }
whismanoid 1:f98ddb04f9e0 192 //~ rgb_led.green(); // diagnostic rbg led GREEN
whismanoid 1:f98ddb04f9e0 193 }
whismanoid 1:f98ddb04f9e0 194 else {
whismanoid 3:080aa1bb1bc0 195 if (m_RFailLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 196 m_RFailLED = LED_ON;
whismanoid 3:080aa1bb1bc0 197 }
whismanoid 3:080aa1bb1bc0 198 if (m_GPassLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 199 m_GPassLED = LED_OFF;
whismanoid 3:080aa1bb1bc0 200 }
whismanoid 3:080aa1bb1bc0 201 if (m_BBusyLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 202 m_BBusyLED = LED_OFF;
whismanoid 3:080aa1bb1bc0 203 }
whismanoid 0:93d4119d3f14 204 //~ rgb_led.red(); // diagnostic rbg led RED
whismanoid 0:93d4119d3f14 205 }
whismanoid 0:93d4119d3f14 206 }
whismanoid 0:93d4119d3f14 207
whismanoid 10:b11ab5d7ac58 208 bool MaximTinyTester::Expect(const char *nameOfTest, int actual_result, int expect_result)
whismanoid 10:b11ab5d7ac58 209 {
whismanoid 10:b11ab5d7ac58 210 if (actual_result != expect_result)
whismanoid 10:b11ab5d7ac58 211 {
whismanoid 10:b11ab5d7ac58 212 FAIL();
whismanoid 10:b11ab5d7ac58 213 associatedCmdLine.serial().printf("%s", nameOfTest);
whismanoid 10:b11ab5d7ac58 214 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 10:b11ab5d7ac58 215 associatedCmdLine.serial().printf(" but got %d", actual_result);
whismanoid 10:b11ab5d7ac58 216 return false;
whismanoid 10:b11ab5d7ac58 217 }
whismanoid 10:b11ab5d7ac58 218 else
whismanoid 10:b11ab5d7ac58 219 {
whismanoid 10:b11ab5d7ac58 220 PASS();
whismanoid 10:b11ab5d7ac58 221 associatedCmdLine.serial().printf("%s", nameOfTest);
whismanoid 10:b11ab5d7ac58 222 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 10:b11ab5d7ac58 223 return true;
whismanoid 10:b11ab5d7ac58 224 }
whismanoid 10:b11ab5d7ac58 225 }
whismanoid 10:b11ab5d7ac58 226
whismanoid 10:b11ab5d7ac58 227 bool MaximTinyTester::Expect(const char *nameOfTest, double actual_result, double expect_result)
whismanoid 10:b11ab5d7ac58 228 {
whismanoid 10:b11ab5d7ac58 229 double err_result = (actual_result - expect_result);
whismanoid 10:b11ab5d7ac58 230 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 10:b11ab5d7ac58 231 {
whismanoid 10:b11ab5d7ac58 232 PASS();
whismanoid 10:b11ab5d7ac58 233 associatedCmdLine.serial().printf("%s", nameOfTest);
whismanoid 10:b11ab5d7ac58 234 associatedCmdLine.serial().printf(" expect %6.6f", expect_result);
whismanoid 10:b11ab5d7ac58 235 return true;
whismanoid 10:b11ab5d7ac58 236 }
whismanoid 10:b11ab5d7ac58 237 else
whismanoid 10:b11ab5d7ac58 238 {
whismanoid 10:b11ab5d7ac58 239 FAIL();
whismanoid 10:b11ab5d7ac58 240 associatedCmdLine.serial().printf("%s", nameOfTest);
whismanoid 10:b11ab5d7ac58 241 associatedCmdLine.serial().printf(" expect %6.6f", expect_result);
whismanoid 10:b11ab5d7ac58 242 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 10:b11ab5d7ac58 243 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 10:b11ab5d7ac58 244 return false;
whismanoid 10:b11ab5d7ac58 245 }
whismanoid 10:b11ab5d7ac58 246 }
whismanoid 10:b11ab5d7ac58 247
whismanoid 0:93d4119d3f14 248 /** Test a software function
whismanoid 0:93d4119d3f14 249 *
whismanoid 0:93d4119d3f14 250 * @param[in] nameOfFunctionUnderTest is the user-facing name of the function under test
whismanoid 0:93d4119d3f14 251 *
whismanoid 0:93d4119d3f14 252 * @param[in] functionUnderTest points to the function under test
whismanoid 0:93d4119d3f14 253 *
whismanoid 8:9171f0ab3c17 254 * @param[in] arg_1_voltageV is a test argument given to the function under test
whismanoid 0:93d4119d3f14 255 *
whismanoid 0:93d4119d3f14 256 * @param[in] expect_result contains the expected result
whismanoid 0:93d4119d3f14 257 *
whismanoid 0:93d4119d3f14 258 * @post nPass and nFail counters are updated
whismanoid 0:93d4119d3f14 259 *
whismanoid 0:93d4119d3f14 260 * @return true if success, false if test failed
whismanoid 0:93d4119d3f14 261 *
whismanoid 0:93d4119d3f14 262 */
whismanoid 12:55db0f4a417d 263 bool MaximTinyTester::FunctionCall_u_f_Expect(const char *nameOfFunctionUnderTest,
whismanoid 0:93d4119d3f14 264 Callback<uint16_t(double)> functionUnderTest,
whismanoid 8:9171f0ab3c17 265 double arg_1_voltageV,
whismanoid 8:9171f0ab3c17 266 uint16_t expect_result)
whismanoid 0:93d4119d3f14 267 {
whismanoid 8:9171f0ab3c17 268 uint16_t actual_result = functionUnderTest(arg_1_voltageV);
whismanoid 0:93d4119d3f14 269 if (actual_result != expect_result)
whismanoid 0:93d4119d3f14 270 {
whismanoid 0:93d4119d3f14 271 FAIL();
whismanoid 8:9171f0ab3c17 272 associatedCmdLine.serial().printf("%s(%6.4fV)", nameOfFunctionUnderTest, arg_1_voltageV);
whismanoid 0:93d4119d3f14 273 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 0:93d4119d3f14 274 associatedCmdLine.serial().printf(" but got %d", actual_result);
whismanoid 0:93d4119d3f14 275 return false;
whismanoid 0:93d4119d3f14 276 }
whismanoid 0:93d4119d3f14 277 else
whismanoid 0:93d4119d3f14 278 {
whismanoid 0:93d4119d3f14 279 PASS();
whismanoid 8:9171f0ab3c17 280 associatedCmdLine.serial().printf("%s(%6.4fV)", nameOfFunctionUnderTest, arg_1_voltageV);
whismanoid 0:93d4119d3f14 281 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 0:93d4119d3f14 282 return true;
whismanoid 0:93d4119d3f14 283 }
whismanoid 0:93d4119d3f14 284 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 0:93d4119d3f14 285 }
whismanoid 0:93d4119d3f14 286
whismanoid 0:93d4119d3f14 287 /** Test a software function
whismanoid 0:93d4119d3f14 288 *
whismanoid 0:93d4119d3f14 289 * @param[in] nameOfFunctionUnderTest is the user-facing name of the function under test
whismanoid 0:93d4119d3f14 290 *
whismanoid 0:93d4119d3f14 291 * @param[in] functionUnderTest points to the function under test
whismanoid 0:93d4119d3f14 292 *
whismanoid 8:9171f0ab3c17 293 * @param[in] arg_1_u16 is a test argument given to the function under test
whismanoid 0:93d4119d3f14 294 *
whismanoid 0:93d4119d3f14 295 * @param[in] expect_result contains the expected result
whismanoid 0:93d4119d3f14 296 *
whismanoid 0:93d4119d3f14 297 * @pre err_threshold determines how closely the result must match the expected value
whismanoid 0:93d4119d3f14 298 *
whismanoid 0:93d4119d3f14 299 * @post nPass and nFail counters are updated
whismanoid 0:93d4119d3f14 300 *
whismanoid 0:93d4119d3f14 301 * @return true if success, false if test failed
whismanoid 0:93d4119d3f14 302 *
whismanoid 0:93d4119d3f14 303 */
whismanoid 12:55db0f4a417d 304 bool MaximTinyTester::FunctionCall_f_d_Expect(const char *nameOfFunctionUnderTest,
whismanoid 10:b11ab5d7ac58 305 Callback<double(int)> functionUnderTest,
whismanoid 10:b11ab5d7ac58 306 int arg_1_u16,
whismanoid 8:9171f0ab3c17 307 double expect_result)
whismanoid 0:93d4119d3f14 308 {
whismanoid 8:9171f0ab3c17 309 double actual_result = functionUnderTest(arg_1_u16);
whismanoid 0:93d4119d3f14 310 double err_result = (actual_result - expect_result);
whismanoid 0:93d4119d3f14 311 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 0:93d4119d3f14 312 {
whismanoid 0:93d4119d3f14 313 PASS();
whismanoid 8:9171f0ab3c17 314 associatedCmdLine.serial().printf("%s(%d)", nameOfFunctionUnderTest, arg_1_u16);
whismanoid 0:93d4119d3f14 315 associatedCmdLine.serial().printf(" expect %6.6f", expect_result);
whismanoid 0:93d4119d3f14 316 return true;
whismanoid 0:93d4119d3f14 317 }
whismanoid 0:93d4119d3f14 318 else
whismanoid 0:93d4119d3f14 319 {
whismanoid 0:93d4119d3f14 320 FAIL();
whismanoid 8:9171f0ab3c17 321 associatedCmdLine.serial().printf("%s(%d)", nameOfFunctionUnderTest, arg_1_u16);
whismanoid 0:93d4119d3f14 322 associatedCmdLine.serial().printf(" expect %6.6f", expect_result);
whismanoid 0:93d4119d3f14 323 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 0:93d4119d3f14 324 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 0:93d4119d3f14 325 return false;
whismanoid 0:93d4119d3f14 326 }
whismanoid 0:93d4119d3f14 327 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 0:93d4119d3f14 328 }
whismanoid 0:93d4119d3f14 329
whismanoid 5:67a1cd5a67cc 330 /** Test a software function
whismanoid 5:67a1cd5a67cc 331 *
whismanoid 5:67a1cd5a67cc 332 * @param[in] nameOfFunctionUnderTest is the user-facing name of the function under test
whismanoid 5:67a1cd5a67cc 333 *
whismanoid 5:67a1cd5a67cc 334 * @param[in] functionUnderTest points to the function under test
whismanoid 5:67a1cd5a67cc 335 *
whismanoid 12:55db0f4a417d 336 * @param[in] arg_1_int is a test argument given to the function under test
whismanoid 12:55db0f4a417d 337 * @param[in] arg_2_int is a test argument given to the function under test
whismanoid 12:55db0f4a417d 338 *
whismanoid 12:55db0f4a417d 339 * @param[in] expect_result contains the expected result
whismanoid 12:55db0f4a417d 340 *
whismanoid 12:55db0f4a417d 341 * @pre err_threshold determines how closely the result must match the expected value
whismanoid 12:55db0f4a417d 342 *
whismanoid 12:55db0f4a417d 343 * @post nPass and nFail counters are updated
whismanoid 12:55db0f4a417d 344 *
whismanoid 12:55db0f4a417d 345 * @return true if success, false if test failed
whismanoid 12:55db0f4a417d 346 *
whismanoid 12:55db0f4a417d 347 */
whismanoid 12:55db0f4a417d 348 bool MaximTinyTester::FunctionCall_f_d_d_Expect(const char *nameOfFunctionUnderTest,
whismanoid 12:55db0f4a417d 349 Callback<double(int, int)> functionUnderTest,
whismanoid 12:55db0f4a417d 350 int arg_1_int,
whismanoid 12:55db0f4a417d 351 int arg_2_int,
whismanoid 12:55db0f4a417d 352 double expect_result)
whismanoid 12:55db0f4a417d 353 {
whismanoid 12:55db0f4a417d 354 double actual_result = functionUnderTest(arg_1_int, arg_2_int);
whismanoid 12:55db0f4a417d 355 double err_result = (actual_result - expect_result);
whismanoid 12:55db0f4a417d 356 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 12:55db0f4a417d 357 {
whismanoid 12:55db0f4a417d 358 PASS();
whismanoid 12:55db0f4a417d 359 associatedCmdLine.serial().printf("%s(%d,%d)", nameOfFunctionUnderTest, arg_1_int, arg_2_int);
whismanoid 12:55db0f4a417d 360 associatedCmdLine.serial().printf(" expect %6.6f", expect_result);
whismanoid 12:55db0f4a417d 361 return true;
whismanoid 12:55db0f4a417d 362 }
whismanoid 12:55db0f4a417d 363 else
whismanoid 12:55db0f4a417d 364 {
whismanoid 12:55db0f4a417d 365 FAIL();
whismanoid 12:55db0f4a417d 366 associatedCmdLine.serial().printf("%s(%d,%d)", nameOfFunctionUnderTest, arg_1_int, arg_2_int);
whismanoid 12:55db0f4a417d 367 associatedCmdLine.serial().printf(" expect %6.6f", expect_result);
whismanoid 12:55db0f4a417d 368 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 12:55db0f4a417d 369 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 12:55db0f4a417d 370 return false;
whismanoid 12:55db0f4a417d 371 }
whismanoid 12:55db0f4a417d 372 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 12:55db0f4a417d 373 }
whismanoid 12:55db0f4a417d 374
whismanoid 12:55db0f4a417d 375 /** Test a software function
whismanoid 12:55db0f4a417d 376 *
whismanoid 12:55db0f4a417d 377 * @param[in] nameOfFunctionUnderTest is the user-facing name of the function under test
whismanoid 12:55db0f4a417d 378 *
whismanoid 12:55db0f4a417d 379 * @param[in] functionUnderTest points to the function under test
whismanoid 12:55db0f4a417d 380 *
whismanoid 8:9171f0ab3c17 381 * @param[in] arg_1_u32 is a test argument given to the function under test
whismanoid 5:67a1cd5a67cc 382 *
whismanoid 5:67a1cd5a67cc 383 * @param[in] expect_result contains the expected result
whismanoid 5:67a1cd5a67cc 384 *
whismanoid 5:67a1cd5a67cc 385 * @pre err_threshold determines how closely the result must match the expected value
whismanoid 5:67a1cd5a67cc 386 *
whismanoid 5:67a1cd5a67cc 387 * @post nPass and nFail counters are updated
whismanoid 5:67a1cd5a67cc 388 *
whismanoid 5:67a1cd5a67cc 389 * @return true if success, false if test failed
whismanoid 5:67a1cd5a67cc 390 *
whismanoid 5:67a1cd5a67cc 391 */
whismanoid 12:55db0f4a417d 392 bool MaximTinyTester::FunctionCall_f_lu_Expect(const char *nameOfFunctionUnderTest,
whismanoid 5:67a1cd5a67cc 393 Callback<double(uint32_t)> functionUnderTest,
whismanoid 8:9171f0ab3c17 394 uint32_t arg_1_u32,
whismanoid 8:9171f0ab3c17 395 double expect_result)
whismanoid 5:67a1cd5a67cc 396 {
whismanoid 8:9171f0ab3c17 397 double actual_result = functionUnderTest(arg_1_u32);
whismanoid 5:67a1cd5a67cc 398 double err_result = (actual_result - expect_result);
whismanoid 5:67a1cd5a67cc 399 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 5:67a1cd5a67cc 400 {
whismanoid 5:67a1cd5a67cc 401 PASS();
whismanoid 8:9171f0ab3c17 402 associatedCmdLine.serial().printf("%s(0x%lx)", nameOfFunctionUnderTest, arg_1_u32);
whismanoid 5:67a1cd5a67cc 403 associatedCmdLine.serial().printf(" expect %6.6f", expect_result);
whismanoid 5:67a1cd5a67cc 404 return true;
whismanoid 5:67a1cd5a67cc 405 }
whismanoid 5:67a1cd5a67cc 406 else
whismanoid 5:67a1cd5a67cc 407 {
whismanoid 5:67a1cd5a67cc 408 FAIL();
whismanoid 8:9171f0ab3c17 409 associatedCmdLine.serial().printf("%s(0x%lx)", nameOfFunctionUnderTest, arg_1_u32);
whismanoid 5:67a1cd5a67cc 410 associatedCmdLine.serial().printf(" expect %6.6f", expect_result);
whismanoid 5:67a1cd5a67cc 411 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 5:67a1cd5a67cc 412 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 5:67a1cd5a67cc 413 return false;
whismanoid 5:67a1cd5a67cc 414 }
whismanoid 5:67a1cd5a67cc 415 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 5:67a1cd5a67cc 416 }
whismanoid 5:67a1cd5a67cc 417
whismanoid 5:67a1cd5a67cc 418 /** Test a software function
whismanoid 5:67a1cd5a67cc 419 *
whismanoid 5:67a1cd5a67cc 420 * @param[in] nameOfFunctionUnderTest is the user-facing name of the function under test
whismanoid 5:67a1cd5a67cc 421 *
whismanoid 5:67a1cd5a67cc 422 * @param[in] functionUnderTest points to the function under test
whismanoid 5:67a1cd5a67cc 423 *
whismanoid 8:9171f0ab3c17 424 * @param[in] arg_1_d is a test argument given to the function under test
whismanoid 5:67a1cd5a67cc 425 *
whismanoid 5:67a1cd5a67cc 426 * @param[in] expect_result contains the expected result
whismanoid 5:67a1cd5a67cc 427 *
whismanoid 5:67a1cd5a67cc 428 * @pre err_threshold determines how closely the result must match the expected value
whismanoid 5:67a1cd5a67cc 429 *
whismanoid 5:67a1cd5a67cc 430 * @post nPass and nFail counters are updated
whismanoid 5:67a1cd5a67cc 431 *
whismanoid 5:67a1cd5a67cc 432 * @return true if success, false if test failed
whismanoid 5:67a1cd5a67cc 433 *
whismanoid 5:67a1cd5a67cc 434 */
whismanoid 12:55db0f4a417d 435 bool MaximTinyTester::FunctionCall_f_f_Expect(const char *nameOfFunctionUnderTest,
whismanoid 5:67a1cd5a67cc 436 Callback<double(double)> functionUnderTest,
whismanoid 8:9171f0ab3c17 437 double arg_1_d,
whismanoid 8:9171f0ab3c17 438 double expect_result)
whismanoid 5:67a1cd5a67cc 439 {
whismanoid 8:9171f0ab3c17 440 double actual_result = functionUnderTest(arg_1_d);
whismanoid 5:67a1cd5a67cc 441 double err_result = (actual_result - expect_result);
whismanoid 5:67a1cd5a67cc 442 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 5:67a1cd5a67cc 443 {
whismanoid 5:67a1cd5a67cc 444 PASS();
whismanoid 8:9171f0ab3c17 445 associatedCmdLine.serial().printf("%s(%6.6f)", nameOfFunctionUnderTest, arg_1_d);
whismanoid 5:67a1cd5a67cc 446 associatedCmdLine.serial().printf(" expect %6.6f", expect_result);
whismanoid 5:67a1cd5a67cc 447 return true;
whismanoid 5:67a1cd5a67cc 448 }
whismanoid 5:67a1cd5a67cc 449 else
whismanoid 5:67a1cd5a67cc 450 {
whismanoid 5:67a1cd5a67cc 451 FAIL();
whismanoid 8:9171f0ab3c17 452 associatedCmdLine.serial().printf("%s(%6.6f)", nameOfFunctionUnderTest, arg_1_d);
whismanoid 5:67a1cd5a67cc 453 associatedCmdLine.serial().printf(" expect %6.6f", expect_result);
whismanoid 5:67a1cd5a67cc 454 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 5:67a1cd5a67cc 455 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 5:67a1cd5a67cc 456 return false;
whismanoid 5:67a1cd5a67cc 457 }
whismanoid 5:67a1cd5a67cc 458 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 5:67a1cd5a67cc 459 }
whismanoid 5:67a1cd5a67cc 460
whismanoid 7:5b40b6370f8a 461 /** Test a software function
whismanoid 7:5b40b6370f8a 462 *
whismanoid 7:5b40b6370f8a 463 * @param[in] nameOfFunctionUnderTest is the user-facing name of the function under test
whismanoid 7:5b40b6370f8a 464 *
whismanoid 7:5b40b6370f8a 465 * @param[in] functionUnderTest points to the function under test
whismanoid 7:5b40b6370f8a 466 *
whismanoid 8:9171f0ab3c17 467 * @param[in] expect_result contains the expected result
whismanoid 8:9171f0ab3c17 468 *
whismanoid 8:9171f0ab3c17 469 * @post nPass and nFail counters are updated
whismanoid 8:9171f0ab3c17 470 *
whismanoid 8:9171f0ab3c17 471 * @return true if success, false if test failed
whismanoid 8:9171f0ab3c17 472 *
whismanoid 8:9171f0ab3c17 473 */
whismanoid 12:55db0f4a417d 474 bool MaximTinyTester::FunctionCall_su_Expect(const char *nameOfFunctionUnderTest,
whismanoid 8:9171f0ab3c17 475 Callback<uint8_t()> functionUnderTest,
whismanoid 8:9171f0ab3c17 476 uint8_t expect_result)
whismanoid 8:9171f0ab3c17 477 {
whismanoid 8:9171f0ab3c17 478 uint8_t actual_result = functionUnderTest();
whismanoid 8:9171f0ab3c17 479 if (actual_result != expect_result)
whismanoid 8:9171f0ab3c17 480 {
whismanoid 8:9171f0ab3c17 481 FAIL();
whismanoid 8:9171f0ab3c17 482 associatedCmdLine.serial().printf("%s()", nameOfFunctionUnderTest);
whismanoid 8:9171f0ab3c17 483 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 8:9171f0ab3c17 484 associatedCmdLine.serial().printf(" but got %d", actual_result);
whismanoid 8:9171f0ab3c17 485 return false;
whismanoid 8:9171f0ab3c17 486 }
whismanoid 8:9171f0ab3c17 487 else
whismanoid 8:9171f0ab3c17 488 {
whismanoid 8:9171f0ab3c17 489 PASS();
whismanoid 8:9171f0ab3c17 490 associatedCmdLine.serial().printf("%s()", nameOfFunctionUnderTest);
whismanoid 8:9171f0ab3c17 491 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 8:9171f0ab3c17 492 return true;
whismanoid 8:9171f0ab3c17 493 }
whismanoid 8:9171f0ab3c17 494 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 8:9171f0ab3c17 495 }
whismanoid 8:9171f0ab3c17 496
whismanoid 8:9171f0ab3c17 497 /** Test a software function
whismanoid 8:9171f0ab3c17 498 *
whismanoid 8:9171f0ab3c17 499 * @param[in] nameOfFunctionUnderTest is the user-facing name of the function under test
whismanoid 8:9171f0ab3c17 500 *
whismanoid 8:9171f0ab3c17 501 * @param[in] functionUnderTest points to the function under test
whismanoid 8:9171f0ab3c17 502 *
whismanoid 7:5b40b6370f8a 503 * @param[in] arg_1 is a test argument given to the function under test
whismanoid 7:5b40b6370f8a 504 *
whismanoid 7:5b40b6370f8a 505 * @param[in] expect_result contains the expected result
whismanoid 7:5b40b6370f8a 506 *
whismanoid 7:5b40b6370f8a 507 * @post nPass and nFail counters are updated
whismanoid 7:5b40b6370f8a 508 *
whismanoid 7:5b40b6370f8a 509 * @return true if success, false if test failed
whismanoid 7:5b40b6370f8a 510 *
whismanoid 7:5b40b6370f8a 511 */
whismanoid 12:55db0f4a417d 512 bool MaximTinyTester::FunctionCall_su_su_Expect(const char *nameOfFunctionUnderTest,
whismanoid 12:55db0f4a417d 513 Callback<uint8_t(uint8_t)> functionUnderTest,
whismanoid 12:55db0f4a417d 514 uint8_t arg_1,
whismanoid 12:55db0f4a417d 515 uint8_t expect_result)
whismanoid 12:55db0f4a417d 516 {
whismanoid 12:55db0f4a417d 517 uint8_t actual_result = functionUnderTest(arg_1);
whismanoid 12:55db0f4a417d 518 if (actual_result != expect_result)
whismanoid 12:55db0f4a417d 519 {
whismanoid 12:55db0f4a417d 520 FAIL();
whismanoid 12:55db0f4a417d 521 associatedCmdLine.serial().printf("%s(%d)", nameOfFunctionUnderTest, arg_1);
whismanoid 12:55db0f4a417d 522 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 12:55db0f4a417d 523 associatedCmdLine.serial().printf(" but got %d", actual_result);
whismanoid 12:55db0f4a417d 524 return false;
whismanoid 12:55db0f4a417d 525 }
whismanoid 12:55db0f4a417d 526 else
whismanoid 12:55db0f4a417d 527 {
whismanoid 12:55db0f4a417d 528 PASS();
whismanoid 12:55db0f4a417d 529 associatedCmdLine.serial().printf("%s(%d)", nameOfFunctionUnderTest, arg_1);
whismanoid 12:55db0f4a417d 530 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 12:55db0f4a417d 531 return true;
whismanoid 12:55db0f4a417d 532 }
whismanoid 12:55db0f4a417d 533 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 12:55db0f4a417d 534 }
whismanoid 12:55db0f4a417d 535
whismanoid 12:55db0f4a417d 536 /** Test a software function
whismanoid 12:55db0f4a417d 537 *
whismanoid 12:55db0f4a417d 538 * @param[in] nameOfFunctionUnderTest is the user-facing name of the function under test
whismanoid 12:55db0f4a417d 539 *
whismanoid 12:55db0f4a417d 540 * @param[in] functionUnderTest points to the function under test
whismanoid 12:55db0f4a417d 541 *
whismanoid 12:55db0f4a417d 542 * @param[in] arg_1 is a test argument given to the function under test
whismanoid 12:55db0f4a417d 543 *
whismanoid 12:55db0f4a417d 544 * @param[in] expect_result contains the expected result
whismanoid 12:55db0f4a417d 545 *
whismanoid 12:55db0f4a417d 546 * @post nPass and nFail counters are updated
whismanoid 12:55db0f4a417d 547 *
whismanoid 12:55db0f4a417d 548 * @return true if success, false if test failed
whismanoid 12:55db0f4a417d 549 *
whismanoid 12:55db0f4a417d 550 */
whismanoid 12:55db0f4a417d 551 bool MaximTinyTester::FunctionCall_su_d_Expect(const char *nameOfFunctionUnderTest,
whismanoid 10:b11ab5d7ac58 552 Callback<uint8_t(int)> functionUnderTest,
whismanoid 10:b11ab5d7ac58 553 int arg_1,
whismanoid 7:5b40b6370f8a 554 uint8_t expect_result)
whismanoid 7:5b40b6370f8a 555 {
whismanoid 7:5b40b6370f8a 556 uint8_t actual_result = functionUnderTest(arg_1);
whismanoid 7:5b40b6370f8a 557 if (actual_result != expect_result)
whismanoid 7:5b40b6370f8a 558 {
whismanoid 7:5b40b6370f8a 559 FAIL();
whismanoid 7:5b40b6370f8a 560 associatedCmdLine.serial().printf("%s(%d)", nameOfFunctionUnderTest, arg_1);
whismanoid 7:5b40b6370f8a 561 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 7:5b40b6370f8a 562 associatedCmdLine.serial().printf(" but got %d", actual_result);
whismanoid 7:5b40b6370f8a 563 return false;
whismanoid 7:5b40b6370f8a 564 }
whismanoid 7:5b40b6370f8a 565 else
whismanoid 7:5b40b6370f8a 566 {
whismanoid 7:5b40b6370f8a 567 PASS();
whismanoid 7:5b40b6370f8a 568 associatedCmdLine.serial().printf("%s(%d)", nameOfFunctionUnderTest, arg_1);
whismanoid 7:5b40b6370f8a 569 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 7:5b40b6370f8a 570 return true;
whismanoid 7:5b40b6370f8a 571 }
whismanoid 7:5b40b6370f8a 572 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 7:5b40b6370f8a 573 }
whismanoid 7:5b40b6370f8a 574
whismanoid 7:5b40b6370f8a 575 /** Test a software function
whismanoid 7:5b40b6370f8a 576 *
whismanoid 7:5b40b6370f8a 577 * @param[in] nameOfFunctionUnderTest is the user-facing name of the function under test
whismanoid 7:5b40b6370f8a 578 *
whismanoid 7:5b40b6370f8a 579 * @param[in] functionUnderTest points to the function under test
whismanoid 7:5b40b6370f8a 580 *
whismanoid 7:5b40b6370f8a 581 * @param[in] arg_1 is a test argument given to the function under test
whismanoid 7:5b40b6370f8a 582 * @param[in] arg_2 is a test argument given to the function under test
whismanoid 7:5b40b6370f8a 583 *
whismanoid 7:5b40b6370f8a 584 * @param[in] expect_result contains the expected result
whismanoid 7:5b40b6370f8a 585 *
whismanoid 7:5b40b6370f8a 586 * @post nPass and nFail counters are updated
whismanoid 7:5b40b6370f8a 587 *
whismanoid 7:5b40b6370f8a 588 * @return true if success, false if test failed
whismanoid 7:5b40b6370f8a 589 *
whismanoid 7:5b40b6370f8a 590 */
whismanoid 12:55db0f4a417d 591 bool MaximTinyTester::FunctionCall_su_su_su_Expect(const char *nameOfFunctionUnderTest,
whismanoid 12:55db0f4a417d 592 Callback<uint8_t(uint8_t, uint8_t)> functionUnderTest,
whismanoid 12:55db0f4a417d 593 uint8_t arg_1,
whismanoid 12:55db0f4a417d 594 uint8_t arg_2,
whismanoid 12:55db0f4a417d 595 uint8_t expect_result)
whismanoid 12:55db0f4a417d 596 {
whismanoid 12:55db0f4a417d 597 uint8_t actual_result = functionUnderTest(arg_1, arg_2);
whismanoid 12:55db0f4a417d 598 if (actual_result != expect_result)
whismanoid 12:55db0f4a417d 599 {
whismanoid 12:55db0f4a417d 600 FAIL();
whismanoid 12:55db0f4a417d 601 associatedCmdLine.serial().printf("%s(%d,%d)", nameOfFunctionUnderTest, arg_1, arg_2);
whismanoid 12:55db0f4a417d 602 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 12:55db0f4a417d 603 associatedCmdLine.serial().printf(" but got %d", actual_result);
whismanoid 12:55db0f4a417d 604 return false;
whismanoid 12:55db0f4a417d 605 }
whismanoid 12:55db0f4a417d 606 else
whismanoid 12:55db0f4a417d 607 {
whismanoid 12:55db0f4a417d 608 PASS();
whismanoid 12:55db0f4a417d 609 associatedCmdLine.serial().printf("%s(%d,%d)", nameOfFunctionUnderTest, arg_1, arg_2);
whismanoid 12:55db0f4a417d 610 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 12:55db0f4a417d 611 return true;
whismanoid 12:55db0f4a417d 612 }
whismanoid 12:55db0f4a417d 613 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 12:55db0f4a417d 614 }
whismanoid 12:55db0f4a417d 615
whismanoid 12:55db0f4a417d 616 /** Test a software function
whismanoid 12:55db0f4a417d 617 *
whismanoid 12:55db0f4a417d 618 * @param[in] nameOfFunctionUnderTest is the user-facing name of the function under test
whismanoid 12:55db0f4a417d 619 *
whismanoid 12:55db0f4a417d 620 * @param[in] functionUnderTest points to the function under test
whismanoid 12:55db0f4a417d 621 *
whismanoid 12:55db0f4a417d 622 * @param[in] arg_1 is a test argument given to the function under test
whismanoid 12:55db0f4a417d 623 * @param[in] arg_2 is a test argument given to the function under test
whismanoid 12:55db0f4a417d 624 *
whismanoid 12:55db0f4a417d 625 * @param[in] expect_result contains the expected result
whismanoid 12:55db0f4a417d 626 *
whismanoid 12:55db0f4a417d 627 * @post nPass and nFail counters are updated
whismanoid 12:55db0f4a417d 628 *
whismanoid 12:55db0f4a417d 629 * @return true if success, false if test failed
whismanoid 12:55db0f4a417d 630 *
whismanoid 12:55db0f4a417d 631 */
whismanoid 12:55db0f4a417d 632 bool MaximTinyTester::FunctionCall_su_d_d_Expect(const char *nameOfFunctionUnderTest,
whismanoid 10:b11ab5d7ac58 633 Callback<uint8_t(int, int)> functionUnderTest,
whismanoid 10:b11ab5d7ac58 634 int arg_1,
whismanoid 10:b11ab5d7ac58 635 int arg_2,
whismanoid 7:5b40b6370f8a 636 uint8_t expect_result)
whismanoid 7:5b40b6370f8a 637 {
whismanoid 7:5b40b6370f8a 638 uint8_t actual_result = functionUnderTest(arg_1, arg_2);
whismanoid 7:5b40b6370f8a 639 if (actual_result != expect_result)
whismanoid 7:5b40b6370f8a 640 {
whismanoid 7:5b40b6370f8a 641 FAIL();
whismanoid 7:5b40b6370f8a 642 associatedCmdLine.serial().printf("%s(%d,%d)", nameOfFunctionUnderTest, arg_1, arg_2);
whismanoid 7:5b40b6370f8a 643 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 7:5b40b6370f8a 644 associatedCmdLine.serial().printf(" but got %d", actual_result);
whismanoid 7:5b40b6370f8a 645 return false;
whismanoid 7:5b40b6370f8a 646 }
whismanoid 7:5b40b6370f8a 647 else
whismanoid 7:5b40b6370f8a 648 {
whismanoid 7:5b40b6370f8a 649 PASS();
whismanoid 7:5b40b6370f8a 650 associatedCmdLine.serial().printf("%s(%d,%d)", nameOfFunctionUnderTest, arg_1, arg_2);
whismanoid 7:5b40b6370f8a 651 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 7:5b40b6370f8a 652 return true;
whismanoid 7:5b40b6370f8a 653 }
whismanoid 7:5b40b6370f8a 654 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 7:5b40b6370f8a 655 }
whismanoid 7:5b40b6370f8a 656
whismanoid 12:55db0f4a417d 657 /** Test a software function
whismanoid 12:55db0f4a417d 658 *
whismanoid 12:55db0f4a417d 659 * @param[in] nameOfFunctionUnderTest is the user-facing name of the function under test
whismanoid 12:55db0f4a417d 660 *
whismanoid 12:55db0f4a417d 661 * @param[in] functionUnderTest points to the function under test
whismanoid 12:55db0f4a417d 662 *
whismanoid 12:55db0f4a417d 663 * @param[in] arg_1 is a test argument given to the function under test
whismanoid 12:55db0f4a417d 664 * @param[in] arg_2 is a test argument given to the function under test
whismanoid 12:55db0f4a417d 665 *
whismanoid 12:55db0f4a417d 666 * @param[in] expect_result contains the expected result
whismanoid 12:55db0f4a417d 667 *
whismanoid 12:55db0f4a417d 668 * @post nPass and nFail counters are updated
whismanoid 12:55db0f4a417d 669 *
whismanoid 12:55db0f4a417d 670 * @return true if success, false if test failed
whismanoid 12:55db0f4a417d 671 *
whismanoid 12:55db0f4a417d 672 */
whismanoid 12:55db0f4a417d 673 bool MaximTinyTester::FunctionCall_su_d_lu_Expect(const char *nameOfFunctionUnderTest,
whismanoid 12:55db0f4a417d 674 Callback<uint8_t(int, uint32_t)> functionUnderTest,
whismanoid 12:55db0f4a417d 675 int arg_1,
whismanoid 12:55db0f4a417d 676 uint32_t arg_2,
whismanoid 12:55db0f4a417d 677 uint8_t expect_result)
whismanoid 12:55db0f4a417d 678 {
whismanoid 12:55db0f4a417d 679 uint8_t actual_result = functionUnderTest(arg_1, arg_2);
whismanoid 12:55db0f4a417d 680 if (actual_result != expect_result)
whismanoid 12:55db0f4a417d 681 {
whismanoid 12:55db0f4a417d 682 FAIL();
whismanoid 12:55db0f4a417d 683 associatedCmdLine.serial().printf("%s(%d,%d)", nameOfFunctionUnderTest, arg_1, arg_2);
whismanoid 12:55db0f4a417d 684 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 12:55db0f4a417d 685 associatedCmdLine.serial().printf(" but got %d", actual_result);
whismanoid 12:55db0f4a417d 686 return false;
whismanoid 12:55db0f4a417d 687 }
whismanoid 12:55db0f4a417d 688 else
whismanoid 12:55db0f4a417d 689 {
whismanoid 12:55db0f4a417d 690 PASS();
whismanoid 12:55db0f4a417d 691 associatedCmdLine.serial().printf("%s(%d,%d)", nameOfFunctionUnderTest, arg_1, arg_2);
whismanoid 12:55db0f4a417d 692 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 12:55db0f4a417d 693 return true;
whismanoid 12:55db0f4a417d 694 }
whismanoid 12:55db0f4a417d 695 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 12:55db0f4a417d 696 }
whismanoid 12:55db0f4a417d 697
whismanoid 12:55db0f4a417d 698 bool MaximTinyTester::FunctionCall_su_d_plu_Expect(const char *nameOfFunctionUnderTest,
whismanoid 10:b11ab5d7ac58 699 Callback<uint8_t(int, uint32_t*)> functionUnderTest,
whismanoid 10:b11ab5d7ac58 700 int arg_1,
whismanoid 10:b11ab5d7ac58 701 uint32_t* arg_2,
whismanoid 10:b11ab5d7ac58 702 uint8_t expect_result,
whismanoid 10:b11ab5d7ac58 703 uint32_t expect_buffer)
whismanoid 10:b11ab5d7ac58 704 {
whismanoid 10:b11ab5d7ac58 705 uint8_t actual_result = functionUnderTest(arg_1, arg_2);
whismanoid 10:b11ab5d7ac58 706 uint32_t actual_buffer = *arg_2;
whismanoid 10:b11ab5d7ac58 707 if ((actual_result != expect_result) || (actual_buffer != expect_buffer))
whismanoid 10:b11ab5d7ac58 708 {
whismanoid 10:b11ab5d7ac58 709 FAIL();
whismanoid 10:b11ab5d7ac58 710 associatedCmdLine.serial().printf("%s(%d,buf)", nameOfFunctionUnderTest, arg_1);
whismanoid 10:b11ab5d7ac58 711 //associatedCmdLine.serial().print(nameOfFunctionUnderTest);
whismanoid 10:b11ab5d7ac58 712 //associatedCmdLine.serial().print("(");
whismanoid 10:b11ab5d7ac58 713 //associatedCmdLine.serial().print(arg_1);
whismanoid 10:b11ab5d7ac58 714 //associatedCmdLine.serial().print(F(",buf)"));
whismanoid 11:bfa56dab822c 715 associatedCmdLine.serial().printf(" expect %d buf=%d", expect_result, expect_buffer);
whismanoid 10:b11ab5d7ac58 716 //associatedCmdLine.serial().print(F(" expect "));
whismanoid 10:b11ab5d7ac58 717 //associatedCmdLine.serial().print(expect_result);
whismanoid 10:b11ab5d7ac58 718 //associatedCmdLine.serial().print(F(" buf="));
whismanoid 10:b11ab5d7ac58 719 //associatedCmdLine.serial().print(expect_buffer);
whismanoid 11:bfa56dab822c 720 associatedCmdLine.serial().printf(" but got %d buf=%d", actual_result, actual_buffer);
whismanoid 10:b11ab5d7ac58 721 //associatedCmdLine.serial().print(F(" but got "));
whismanoid 10:b11ab5d7ac58 722 //associatedCmdLine.serial().print(actual_result);
whismanoid 10:b11ab5d7ac58 723 //associatedCmdLine.serial().print(F(" buf="));
whismanoid 10:b11ab5d7ac58 724 //associatedCmdLine.serial().print(actual_buffer);
whismanoid 10:b11ab5d7ac58 725 return false;
whismanoid 10:b11ab5d7ac58 726 }
whismanoid 10:b11ab5d7ac58 727 else
whismanoid 10:b11ab5d7ac58 728 {
whismanoid 10:b11ab5d7ac58 729 PASS();
whismanoid 10:b11ab5d7ac58 730 associatedCmdLine.serial().printf("%s(%d,buf)", nameOfFunctionUnderTest, arg_1);
whismanoid 10:b11ab5d7ac58 731 //associatedCmdLine.serial().print(nameOfFunctionUnderTest);
whismanoid 10:b11ab5d7ac58 732 //associatedCmdLine.serial().print("(");
whismanoid 10:b11ab5d7ac58 733 //associatedCmdLine.serial().print(arg_1);
whismanoid 10:b11ab5d7ac58 734 //associatedCmdLine.serial().print(F(",buf)"));
whismanoid 11:bfa56dab822c 735 associatedCmdLine.serial().printf(" expect %d buf=%d", expect_result, expect_buffer);
whismanoid 10:b11ab5d7ac58 736 //associatedCmdLine.serial().print(F(" expect "));
whismanoid 10:b11ab5d7ac58 737 //associatedCmdLine.serial().print(expect_result);
whismanoid 10:b11ab5d7ac58 738 //associatedCmdLine.serial().print(F(" buf="));
whismanoid 10:b11ab5d7ac58 739 //associatedCmdLine.serial().print(expect_buffer);
whismanoid 10:b11ab5d7ac58 740 return true;
whismanoid 10:b11ab5d7ac58 741 }
whismanoid 10:b11ab5d7ac58 742 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 10:b11ab5d7ac58 743 }
whismanoid 10:b11ab5d7ac58 744
whismanoid 7:5b40b6370f8a 745 /** Test a software function
whismanoid 7:5b40b6370f8a 746 *
whismanoid 7:5b40b6370f8a 747 * @param[in] nameOfFunctionUnderTest is the user-facing name of the function under test
whismanoid 7:5b40b6370f8a 748 *
whismanoid 7:5b40b6370f8a 749 * @param[in] functionUnderTest points to the function under test
whismanoid 7:5b40b6370f8a 750 *
whismanoid 7:5b40b6370f8a 751 * @param[in] arg_1 is a test argument given to the function under test
whismanoid 7:5b40b6370f8a 752 * @param[in] arg_2 is a test argument given to the function under test
whismanoid 7:5b40b6370f8a 753 * @param[in] arg_3 is a test argument given to the function under test
whismanoid 7:5b40b6370f8a 754 *
whismanoid 7:5b40b6370f8a 755 * @param[in] expect_result contains the expected result
whismanoid 7:5b40b6370f8a 756 *
whismanoid 7:5b40b6370f8a 757 * @post nPass and nFail counters are updated
whismanoid 7:5b40b6370f8a 758 *
whismanoid 7:5b40b6370f8a 759 * @return true if success, false if test failed
whismanoid 7:5b40b6370f8a 760 *
whismanoid 7:5b40b6370f8a 761 */
whismanoid 12:55db0f4a417d 762 bool MaximTinyTester::FunctionCall_su_su_su_su_Expect(const char *nameOfFunctionUnderTest,
whismanoid 7:5b40b6370f8a 763 Callback<uint8_t(uint8_t, uint8_t, uint8_t)> functionUnderTest,
whismanoid 7:5b40b6370f8a 764 uint8_t arg_1,
whismanoid 7:5b40b6370f8a 765 uint8_t arg_2,
whismanoid 7:5b40b6370f8a 766 uint8_t arg_3,
whismanoid 7:5b40b6370f8a 767 uint8_t expect_result)
whismanoid 7:5b40b6370f8a 768 {
whismanoid 7:5b40b6370f8a 769 uint8_t actual_result = functionUnderTest(arg_1, arg_2, arg_3);
whismanoid 7:5b40b6370f8a 770 if (actual_result != expect_result)
whismanoid 7:5b40b6370f8a 771 {
whismanoid 7:5b40b6370f8a 772 FAIL();
whismanoid 7:5b40b6370f8a 773 associatedCmdLine.serial().printf("%s(%d,%d,%d)", nameOfFunctionUnderTest, arg_1, arg_2, arg_3);
whismanoid 7:5b40b6370f8a 774 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 7:5b40b6370f8a 775 associatedCmdLine.serial().printf(" but got %d", actual_result);
whismanoid 7:5b40b6370f8a 776 return false;
whismanoid 7:5b40b6370f8a 777 }
whismanoid 7:5b40b6370f8a 778 else
whismanoid 7:5b40b6370f8a 779 {
whismanoid 7:5b40b6370f8a 780 PASS();
whismanoid 7:5b40b6370f8a 781 associatedCmdLine.serial().printf("%s(%d,%d,%d)", nameOfFunctionUnderTest, arg_1, arg_2, arg_3);
whismanoid 7:5b40b6370f8a 782 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 7:5b40b6370f8a 783 return true;
whismanoid 7:5b40b6370f8a 784 }
whismanoid 7:5b40b6370f8a 785 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 7:5b40b6370f8a 786 }
whismanoid 7:5b40b6370f8a 787
whismanoid 7:5b40b6370f8a 788 /** Test a software function
whismanoid 7:5b40b6370f8a 789 *
whismanoid 7:5b40b6370f8a 790 * @param[in] nameOfFunctionUnderTest is the user-facing name of the function under test
whismanoid 7:5b40b6370f8a 791 *
whismanoid 7:5b40b6370f8a 792 * @param[in] functionUnderTest points to the function under test
whismanoid 7:5b40b6370f8a 793 *
whismanoid 7:5b40b6370f8a 794 * @param[in] arg_1 is a test argument given to the function under test
whismanoid 7:5b40b6370f8a 795 * @param[in] arg_2 is a test argument given to the function under test
whismanoid 7:5b40b6370f8a 796 * @param[in] arg_3 is a test argument given to the function under test
whismanoid 7:5b40b6370f8a 797 * @param[in] arg_4 is a test argument given to the function under test
whismanoid 7:5b40b6370f8a 798 *
whismanoid 7:5b40b6370f8a 799 * @param[in] expect_result contains the expected result
whismanoid 7:5b40b6370f8a 800 *
whismanoid 7:5b40b6370f8a 801 * @post nPass and nFail counters are updated
whismanoid 7:5b40b6370f8a 802 *
whismanoid 7:5b40b6370f8a 803 * @return true if success, false if test failed
whismanoid 7:5b40b6370f8a 804 *
whismanoid 7:5b40b6370f8a 805 */
whismanoid 12:55db0f4a417d 806 bool MaximTinyTester::FunctionCall_su_su_su_su_su_Expect(const char *nameOfFunctionUnderTest,
whismanoid 7:5b40b6370f8a 807 Callback<uint8_t(uint8_t, uint8_t, uint8_t, uint8_t)> functionUnderTest,
whismanoid 7:5b40b6370f8a 808 uint8_t arg_1,
whismanoid 7:5b40b6370f8a 809 uint8_t arg_2,
whismanoid 7:5b40b6370f8a 810 uint8_t arg_3,
whismanoid 7:5b40b6370f8a 811 uint8_t arg_4,
whismanoid 7:5b40b6370f8a 812 uint8_t expect_result)
whismanoid 7:5b40b6370f8a 813 {
whismanoid 7:5b40b6370f8a 814 uint8_t actual_result = functionUnderTest(arg_1, arg_2, arg_3, arg_4);
whismanoid 7:5b40b6370f8a 815 if (actual_result != expect_result)
whismanoid 7:5b40b6370f8a 816 {
whismanoid 7:5b40b6370f8a 817 FAIL();
whismanoid 7:5b40b6370f8a 818 associatedCmdLine.serial().printf("%s(%d,%d,%d,%d)", nameOfFunctionUnderTest, arg_1, arg_2, arg_3, arg_4);
whismanoid 7:5b40b6370f8a 819 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 7:5b40b6370f8a 820 associatedCmdLine.serial().printf(" but got %d", actual_result);
whismanoid 7:5b40b6370f8a 821 return false;
whismanoid 7:5b40b6370f8a 822 }
whismanoid 7:5b40b6370f8a 823 else
whismanoid 7:5b40b6370f8a 824 {
whismanoid 7:5b40b6370f8a 825 PASS();
whismanoid 7:5b40b6370f8a 826 associatedCmdLine.serial().printf("%s(%d,%d,%d,%d)", nameOfFunctionUnderTest, arg_1, arg_2, arg_3, arg_4);
whismanoid 7:5b40b6370f8a 827 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 7:5b40b6370f8a 828 return true;
whismanoid 7:5b40b6370f8a 829 }
whismanoid 7:5b40b6370f8a 830 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 7:5b40b6370f8a 831 }
whismanoid 7:5b40b6370f8a 832
whismanoid 7:5b40b6370f8a 833 /** Test a software function
whismanoid 7:5b40b6370f8a 834 *
whismanoid 7:5b40b6370f8a 835 * @param[in] nameOfFunctionUnderTest is the user-facing name of the function under test
whismanoid 7:5b40b6370f8a 836 *
whismanoid 7:5b40b6370f8a 837 * @param[in] functionUnderTest points to the function under test
whismanoid 7:5b40b6370f8a 838 *
whismanoid 7:5b40b6370f8a 839 * @param[in] arg_1 is a test argument given to the function under test
whismanoid 7:5b40b6370f8a 840 * @param[in] arg_2 is a test argument given to the function under test
whismanoid 7:5b40b6370f8a 841 * @param[in] arg_3 is a test argument given to the function under test
whismanoid 7:5b40b6370f8a 842 * @param[in] arg_4 is a test argument given to the function under test
whismanoid 7:5b40b6370f8a 843 * @param[in] arg_5 is a test argument given to the function under test
whismanoid 7:5b40b6370f8a 844 *
whismanoid 7:5b40b6370f8a 845 * @param[in] expect_result contains the expected result
whismanoid 7:5b40b6370f8a 846 *
whismanoid 7:5b40b6370f8a 847 * @post nPass and nFail counters are updated
whismanoid 7:5b40b6370f8a 848 *
whismanoid 7:5b40b6370f8a 849 * @return true if success, false if test failed
whismanoid 7:5b40b6370f8a 850 *
whismanoid 7:5b40b6370f8a 851 */
whismanoid 12:55db0f4a417d 852 bool MaximTinyTester::FunctionCall_su_su_su_su_su_su_Expect(const char *nameOfFunctionUnderTest,
whismanoid 7:5b40b6370f8a 853 Callback<uint8_t(uint8_t, uint8_t, uint8_t, uint8_t, uint8_t)> functionUnderTest,
whismanoid 7:5b40b6370f8a 854 uint8_t arg_1,
whismanoid 7:5b40b6370f8a 855 uint8_t arg_2,
whismanoid 7:5b40b6370f8a 856 uint8_t arg_3,
whismanoid 7:5b40b6370f8a 857 uint8_t arg_4,
whismanoid 7:5b40b6370f8a 858 uint8_t arg_5,
whismanoid 7:5b40b6370f8a 859 uint8_t expect_result)
whismanoid 7:5b40b6370f8a 860 {
whismanoid 7:5b40b6370f8a 861 uint8_t actual_result = functionUnderTest(arg_1, arg_2, arg_3, arg_4, arg_5);
whismanoid 7:5b40b6370f8a 862 if (actual_result != expect_result)
whismanoid 7:5b40b6370f8a 863 {
whismanoid 7:5b40b6370f8a 864 FAIL();
whismanoid 7:5b40b6370f8a 865 associatedCmdLine.serial().printf("%s(%d,%d,%d,%d,%d)", nameOfFunctionUnderTest, arg_1, arg_2, arg_3, arg_4, arg_5);
whismanoid 7:5b40b6370f8a 866 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 7:5b40b6370f8a 867 associatedCmdLine.serial().printf(" but got %d", actual_result);
whismanoid 7:5b40b6370f8a 868 return false;
whismanoid 7:5b40b6370f8a 869 }
whismanoid 7:5b40b6370f8a 870 else
whismanoid 7:5b40b6370f8a 871 {
whismanoid 7:5b40b6370f8a 872 PASS();
whismanoid 7:5b40b6370f8a 873 associatedCmdLine.serial().printf("%s(%d,%d,%d,%d,%d)", nameOfFunctionUnderTest, arg_1, arg_2, arg_3, arg_4, arg_5);
whismanoid 7:5b40b6370f8a 874 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 7:5b40b6370f8a 875 return true;
whismanoid 7:5b40b6370f8a 876 }
whismanoid 7:5b40b6370f8a 877 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 7:5b40b6370f8a 878 }
whismanoid 7:5b40b6370f8a 879
whismanoid 7:5b40b6370f8a 880 // TODO1 #167 support callback<uint8_t(uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t)>
whismanoid 7:5b40b6370f8a 881 /** Test a software function
whismanoid 7:5b40b6370f8a 882 *
whismanoid 7:5b40b6370f8a 883 * @param[in] nameOfFunctionUnderTest is the user-facing name of the function under test
whismanoid 7:5b40b6370f8a 884 *
whismanoid 7:5b40b6370f8a 885 * @param[in] functionUnderTest points to the function under test
whismanoid 7:5b40b6370f8a 886 *
whismanoid 7:5b40b6370f8a 887 * @param[in] arg_1 is a test argument given to the function under test
whismanoid 7:5b40b6370f8a 888 * @param[in] arg_2 is a test argument given to the function under test
whismanoid 7:5b40b6370f8a 889 * @param[in] arg_3 is a test argument given to the function under test
whismanoid 7:5b40b6370f8a 890 * @param[in] arg_4 is a test argument given to the function under test
whismanoid 7:5b40b6370f8a 891 * @param[in] arg_5 is a test argument given to the function under test
whismanoid 7:5b40b6370f8a 892 * @param[in] arg_6 is a test argument given to the function under test
whismanoid 7:5b40b6370f8a 893 *
whismanoid 7:5b40b6370f8a 894 * @param[in] expect_result contains the expected result
whismanoid 7:5b40b6370f8a 895 *
whismanoid 7:5b40b6370f8a 896 * @post nPass and nFail counters are updated
whismanoid 7:5b40b6370f8a 897 *
whismanoid 7:5b40b6370f8a 898 * @return true if success, false if test failed
whismanoid 7:5b40b6370f8a 899 *
whismanoid 7:5b40b6370f8a 900 */
whismanoid 12:55db0f4a417d 901 //bool MaximTinyTester::FunctionCall_su_su_su_su_su_su_su_Expect(const char *nameOfFunctionUnderTest,
whismanoid 7:5b40b6370f8a 902 // Callback<uint8_t(uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t)> functionUnderTest,
whismanoid 7:5b40b6370f8a 903 // uint8_t arg_1,
whismanoid 7:5b40b6370f8a 904 // uint8_t arg_2,
whismanoid 7:5b40b6370f8a 905 // uint8_t arg_3,
whismanoid 7:5b40b6370f8a 906 // uint8_t arg_4,
whismanoid 7:5b40b6370f8a 907 // uint8_t arg_5,
whismanoid 7:5b40b6370f8a 908 // uint8_t arg_6,
whismanoid 7:5b40b6370f8a 909 // uint8_t expect_result)
whismanoid 7:5b40b6370f8a 910 //{
whismanoid 7:5b40b6370f8a 911 // uint8_t actual_result = functionUnderTest(arg_1, arg_2, arg_3, arg_4, arg_5, arg_6);
whismanoid 7:5b40b6370f8a 912 // if (actual_result != expect_result)
whismanoid 7:5b40b6370f8a 913 // {
whismanoid 7:5b40b6370f8a 914 // FAIL();
whismanoid 7:5b40b6370f8a 915 // associatedCmdLine.serial().printf("%s(%d,%d,%d,%d,%d,%d)", nameOfFunctionUnderTest, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6);
whismanoid 7:5b40b6370f8a 916 // associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 7:5b40b6370f8a 917 // associatedCmdLine.serial().printf(" but got %d", actual_result);
whismanoid 7:5b40b6370f8a 918 // return false;
whismanoid 7:5b40b6370f8a 919 // }
whismanoid 7:5b40b6370f8a 920 // else
whismanoid 7:5b40b6370f8a 921 // {
whismanoid 7:5b40b6370f8a 922 // PASS();
whismanoid 7:5b40b6370f8a 923 // associatedCmdLine.serial().printf("%s(%d,%d,%d,%d,%d,%d)", nameOfFunctionUnderTest, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6);
whismanoid 7:5b40b6370f8a 924 // associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 7:5b40b6370f8a 925 // return true;
whismanoid 7:5b40b6370f8a 926 // }
whismanoid 7:5b40b6370f8a 927 // //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 7:5b40b6370f8a 928 //}
whismanoid 7:5b40b6370f8a 929
whismanoid 0:93d4119d3f14 930 /** Test an analog voltage input to the platform (output from the device under test)
whismanoid 0:93d4119d3f14 931 *
whismanoid 0:93d4119d3f14 932 * @param[in] expect_result contains the expected voltage
whismanoid 0:93d4119d3f14 933 *
whismanoid 0:93d4119d3f14 934 * @pre err_threshold determines how closely the result must match the expected value
whismanoid 0:93d4119d3f14 935 *
whismanoid 0:93d4119d3f14 936 * @post nPass and nFail counters are updated
whismanoid 0:93d4119d3f14 937 *
whismanoid 0:93d4119d3f14 938 * @return true if success, false if test failed
whismanoid 0:93d4119d3f14 939 *
whismanoid 0:93d4119d3f14 940 */
whismanoid 0:93d4119d3f14 941 bool MaximTinyTester::AnalogIn0_Read_Expect_voltageV(double expect_result)
whismanoid 0:93d4119d3f14 942 {
whismanoid 0:93d4119d3f14 943 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[0];
whismanoid 2:9b20cadbfa15 944 // skip if expect_result exceeds ADC full scale
whismanoid 2:9b20cadbfa15 945 if (adc_full_scale_voltage < expect_result)
whismanoid 2:9b20cadbfa15 946 {
whismanoid 2:9b20cadbfa15 947 // print a warning message that we can't perform the measurement
whismanoid 2:9b20cadbfa15 948 associatedCmdLine.serial().printf("\r\n..... AIN full scale %1.3fV < expect %6.6f cannot perform measurement",
whismanoid 2:9b20cadbfa15 949 adc_full_scale_voltage, expect_result);
whismanoid 2:9b20cadbfa15 950 return true; // ignore, test conditions are invalid; do not call PASS() or FAIL()
whismanoid 2:9b20cadbfa15 951 }
whismanoid 0:93d4119d3f14 952
whismanoid 0:93d4119d3f14 953 // TODO: tinyTester.Analog_Input_Expect_V replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 0:93d4119d3f14 954 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 955 float normValue_0_1 = analogInPin0.read();
whismanoid 0:93d4119d3f14 956 double actual_result = normValue_0_1 * adc_full_scale_voltage;
whismanoid 0:93d4119d3f14 957 double err_result = (actual_result - expect_result);
whismanoid 0:93d4119d3f14 958 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 0:93d4119d3f14 959 {
whismanoid 0:93d4119d3f14 960 PASS();
whismanoid 0:93d4119d3f14 961 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 962 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 963 associatedCmdLine.serial().printf("AIN0 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 964 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 965 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 966 );
whismanoid 0:93d4119d3f14 967 //
whismanoid 0:93d4119d3f14 968 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 969 return true;
whismanoid 0:93d4119d3f14 970 }
whismanoid 0:93d4119d3f14 971 else
whismanoid 0:93d4119d3f14 972 {
whismanoid 0:93d4119d3f14 973 FAIL();
whismanoid 0:93d4119d3f14 974 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 975 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 976 associatedCmdLine.serial().printf("AIN0 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 977 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 978 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 979 );
whismanoid 0:93d4119d3f14 980 //
whismanoid 0:93d4119d3f14 981 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 982 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 0:93d4119d3f14 983 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 0:93d4119d3f14 984 }
whismanoid 0:93d4119d3f14 985 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 0:93d4119d3f14 986 return false;
whismanoid 0:93d4119d3f14 987 }
whismanoid 0:93d4119d3f14 988
whismanoid 0:93d4119d3f14 989 /** Test an analog voltage input to the platform (output from the device under test)
whismanoid 0:93d4119d3f14 990 *
whismanoid 0:93d4119d3f14 991 * @param[in] expect_result contains the expected voltage
whismanoid 0:93d4119d3f14 992 *
whismanoid 0:93d4119d3f14 993 * @pre err_threshold determines how closely the result must match the expected value
whismanoid 0:93d4119d3f14 994 *
whismanoid 0:93d4119d3f14 995 * @post nPass and nFail counters are updated
whismanoid 0:93d4119d3f14 996 *
whismanoid 0:93d4119d3f14 997 * @return true if success, false if test failed
whismanoid 0:93d4119d3f14 998 *
whismanoid 0:93d4119d3f14 999 */
whismanoid 0:93d4119d3f14 1000 bool MaximTinyTester::AnalogIn1_Read_Expect_voltageV(double expect_result)
whismanoid 0:93d4119d3f14 1001 {
whismanoid 0:93d4119d3f14 1002 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[1];
whismanoid 2:9b20cadbfa15 1003 // skip if expect_result exceeds ADC full scale
whismanoid 2:9b20cadbfa15 1004 if (adc_full_scale_voltage < expect_result)
whismanoid 2:9b20cadbfa15 1005 {
whismanoid 2:9b20cadbfa15 1006 // print a warning message that we can't perform the measurement
whismanoid 2:9b20cadbfa15 1007 associatedCmdLine.serial().printf("\r\n..... AIN full scale %1.3fV < expect %6.6f cannot perform measurement",
whismanoid 2:9b20cadbfa15 1008 adc_full_scale_voltage, expect_result);
whismanoid 2:9b20cadbfa15 1009 return true; // ignore, test conditions are invalid; do not call PASS() or FAIL()
whismanoid 2:9b20cadbfa15 1010 }
whismanoid 0:93d4119d3f14 1011
whismanoid 0:93d4119d3f14 1012 // TODO: tinyTester.Analog_Input_Expect_V replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 0:93d4119d3f14 1013 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 1014 float normValue_0_1 = analogInPin1.read();
whismanoid 0:93d4119d3f14 1015 double actual_result = normValue_0_1 * adc_full_scale_voltage;
whismanoid 0:93d4119d3f14 1016 double err_result = (actual_result - expect_result);
whismanoid 0:93d4119d3f14 1017 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 0:93d4119d3f14 1018 {
whismanoid 0:93d4119d3f14 1019 PASS();
whismanoid 0:93d4119d3f14 1020 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 1021 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 1022 associatedCmdLine.serial().printf("AIN1 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 1023 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 1024 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 1025 );
whismanoid 0:93d4119d3f14 1026 //
whismanoid 0:93d4119d3f14 1027 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 1028 return true;
whismanoid 0:93d4119d3f14 1029 }
whismanoid 0:93d4119d3f14 1030 else
whismanoid 0:93d4119d3f14 1031 {
whismanoid 0:93d4119d3f14 1032 FAIL();
whismanoid 0:93d4119d3f14 1033 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 1034 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 1035 associatedCmdLine.serial().printf("AIN1 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 1036 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 1037 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 1038 );
whismanoid 0:93d4119d3f14 1039 //
whismanoid 0:93d4119d3f14 1040 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 1041 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 0:93d4119d3f14 1042 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 0:93d4119d3f14 1043 }
whismanoid 0:93d4119d3f14 1044 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 0:93d4119d3f14 1045 return false;
whismanoid 0:93d4119d3f14 1046 }
whismanoid 0:93d4119d3f14 1047
whismanoid 0:93d4119d3f14 1048 /** Test an analog voltage input to the platform (output from the device under test)
whismanoid 0:93d4119d3f14 1049 *
whismanoid 0:93d4119d3f14 1050 * @param[in] expect_result contains the expected voltage
whismanoid 0:93d4119d3f14 1051 *
whismanoid 0:93d4119d3f14 1052 * @pre err_threshold determines how closely the result must match the expected value
whismanoid 0:93d4119d3f14 1053 *
whismanoid 0:93d4119d3f14 1054 * @post nPass and nFail counters are updated
whismanoid 0:93d4119d3f14 1055 *
whismanoid 0:93d4119d3f14 1056 * @return true if success, false if test failed
whismanoid 0:93d4119d3f14 1057 *
whismanoid 0:93d4119d3f14 1058 */
whismanoid 0:93d4119d3f14 1059 bool MaximTinyTester::AnalogIn2_Read_Expect_voltageV(double expect_result)
whismanoid 0:93d4119d3f14 1060 {
whismanoid 0:93d4119d3f14 1061 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[2];
whismanoid 2:9b20cadbfa15 1062 // skip if expect_result exceeds ADC full scale
whismanoid 2:9b20cadbfa15 1063 if (adc_full_scale_voltage < expect_result)
whismanoid 2:9b20cadbfa15 1064 {
whismanoid 2:9b20cadbfa15 1065 // print a warning message that we can't perform the measurement
whismanoid 2:9b20cadbfa15 1066 associatedCmdLine.serial().printf("\r\n..... AIN full scale %1.3fV < expect %6.6f cannot perform measurement",
whismanoid 2:9b20cadbfa15 1067 adc_full_scale_voltage, expect_result);
whismanoid 2:9b20cadbfa15 1068 return true; // ignore, test conditions are invalid; do not call PASS() or FAIL()
whismanoid 2:9b20cadbfa15 1069 }
whismanoid 0:93d4119d3f14 1070
whismanoid 0:93d4119d3f14 1071 // TODO: tinyTester.Analog_Input_Expect_V replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 0:93d4119d3f14 1072 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 1073 float normValue_0_1 = analogInPin2.read();
whismanoid 0:93d4119d3f14 1074 double actual_result = normValue_0_1 * adc_full_scale_voltage;
whismanoid 0:93d4119d3f14 1075 double err_result = (actual_result - expect_result);
whismanoid 0:93d4119d3f14 1076 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 0:93d4119d3f14 1077 {
whismanoid 0:93d4119d3f14 1078 PASS();
whismanoid 0:93d4119d3f14 1079 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 1080 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 1081 associatedCmdLine.serial().printf("AIN2 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 1082 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 1083 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 1084 );
whismanoid 0:93d4119d3f14 1085 //
whismanoid 0:93d4119d3f14 1086 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 1087 return true;
whismanoid 0:93d4119d3f14 1088 }
whismanoid 0:93d4119d3f14 1089 else
whismanoid 0:93d4119d3f14 1090 {
whismanoid 0:93d4119d3f14 1091 FAIL();
whismanoid 0:93d4119d3f14 1092 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 1093 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 1094 associatedCmdLine.serial().printf("AIN2 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 1095 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 1096 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 1097 );
whismanoid 0:93d4119d3f14 1098 //
whismanoid 0:93d4119d3f14 1099 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 1100 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 0:93d4119d3f14 1101 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 0:93d4119d3f14 1102 }
whismanoid 0:93d4119d3f14 1103 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 0:93d4119d3f14 1104 return false;
whismanoid 0:93d4119d3f14 1105 }
whismanoid 0:93d4119d3f14 1106
whismanoid 0:93d4119d3f14 1107 /** Test an analog voltage input to the platform (output from the device under test)
whismanoid 0:93d4119d3f14 1108 *
whismanoid 0:93d4119d3f14 1109 * @param[in] expect_result contains the expected voltage
whismanoid 0:93d4119d3f14 1110 *
whismanoid 0:93d4119d3f14 1111 * @pre err_threshold determines how closely the result must match the expected value
whismanoid 0:93d4119d3f14 1112 *
whismanoid 0:93d4119d3f14 1113 * @post nPass and nFail counters are updated
whismanoid 0:93d4119d3f14 1114 *
whismanoid 0:93d4119d3f14 1115 * @return true if success, false if test failed
whismanoid 0:93d4119d3f14 1116 *
whismanoid 0:93d4119d3f14 1117 */
whismanoid 0:93d4119d3f14 1118 bool MaximTinyTester::AnalogIn3_Read_Expect_voltageV(double expect_result)
whismanoid 0:93d4119d3f14 1119 {
whismanoid 0:93d4119d3f14 1120 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[3];
whismanoid 2:9b20cadbfa15 1121 // skip if expect_result exceeds ADC full scale
whismanoid 2:9b20cadbfa15 1122 if (adc_full_scale_voltage < expect_result)
whismanoid 2:9b20cadbfa15 1123 {
whismanoid 2:9b20cadbfa15 1124 // print a warning message that we can't perform the measurement
whismanoid 2:9b20cadbfa15 1125 associatedCmdLine.serial().printf("\r\n..... AIN full scale %1.3fV < expect %6.6f cannot perform measurement",
whismanoid 2:9b20cadbfa15 1126 adc_full_scale_voltage, expect_result);
whismanoid 2:9b20cadbfa15 1127 return true; // ignore, test conditions are invalid; do not call PASS() or FAIL()
whismanoid 2:9b20cadbfa15 1128 }
whismanoid 0:93d4119d3f14 1129
whismanoid 0:93d4119d3f14 1130 // TODO: tinyTester.Analog_Input_Expect_V replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 0:93d4119d3f14 1131 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 1132 float normValue_0_1 = analogInPin3.read();
whismanoid 0:93d4119d3f14 1133 double actual_result = normValue_0_1 * adc_full_scale_voltage;
whismanoid 0:93d4119d3f14 1134 double err_result = (actual_result - expect_result);
whismanoid 0:93d4119d3f14 1135 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 0:93d4119d3f14 1136 {
whismanoid 0:93d4119d3f14 1137 PASS();
whismanoid 0:93d4119d3f14 1138 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 1139 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 1140 associatedCmdLine.serial().printf("AIN3 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 1141 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 1142 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 1143 );
whismanoid 0:93d4119d3f14 1144 //
whismanoid 0:93d4119d3f14 1145 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 1146 return true;
whismanoid 0:93d4119d3f14 1147 }
whismanoid 0:93d4119d3f14 1148 else
whismanoid 0:93d4119d3f14 1149 {
whismanoid 0:93d4119d3f14 1150 FAIL();
whismanoid 0:93d4119d3f14 1151 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 1152 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 1153 associatedCmdLine.serial().printf("AIN3 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 1154 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 1155 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 1156 );
whismanoid 0:93d4119d3f14 1157 //
whismanoid 0:93d4119d3f14 1158 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 1159 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 0:93d4119d3f14 1160 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 0:93d4119d3f14 1161 }
whismanoid 0:93d4119d3f14 1162 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 0:93d4119d3f14 1163 return false;
whismanoid 0:93d4119d3f14 1164 }
whismanoid 0:93d4119d3f14 1165
whismanoid 0:93d4119d3f14 1166 /** Test an analog voltage input to the platform (output from the device under test)
whismanoid 0:93d4119d3f14 1167 *
whismanoid 0:93d4119d3f14 1168 * @param[in] expect_result contains the expected voltage
whismanoid 0:93d4119d3f14 1169 *
whismanoid 0:93d4119d3f14 1170 * @pre err_threshold determines how closely the result must match the expected value
whismanoid 0:93d4119d3f14 1171 *
whismanoid 0:93d4119d3f14 1172 * @post nPass and nFail counters are updated
whismanoid 0:93d4119d3f14 1173 *
whismanoid 0:93d4119d3f14 1174 * @return true if success, false if test failed
whismanoid 0:93d4119d3f14 1175 *
whismanoid 0:93d4119d3f14 1176 */
whismanoid 0:93d4119d3f14 1177 bool MaximTinyTester::AnalogIn4_Read_Expect_voltageV(double expect_result)
whismanoid 0:93d4119d3f14 1178 {
whismanoid 0:93d4119d3f14 1179 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[4];
whismanoid 2:9b20cadbfa15 1180 // skip if expect_result exceeds ADC full scale
whismanoid 2:9b20cadbfa15 1181 if (adc_full_scale_voltage < expect_result)
whismanoid 2:9b20cadbfa15 1182 {
whismanoid 2:9b20cadbfa15 1183 // print a warning message that we can't perform the measurement
whismanoid 2:9b20cadbfa15 1184 associatedCmdLine.serial().printf("\r\n..... AIN full scale %1.3fV < expect %6.6f cannot perform measurement",
whismanoid 2:9b20cadbfa15 1185 adc_full_scale_voltage, expect_result);
whismanoid 2:9b20cadbfa15 1186 return true; // ignore, test conditions are invalid; do not call PASS() or FAIL()
whismanoid 2:9b20cadbfa15 1187 }
whismanoid 0:93d4119d3f14 1188
whismanoid 0:93d4119d3f14 1189 // TODO: tinyTester.Analog_Input_Expect_V replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 0:93d4119d3f14 1190 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 1191 float normValue_0_1 = analogInPin4.read();
whismanoid 0:93d4119d3f14 1192 double actual_result = normValue_0_1 * adc_full_scale_voltage;
whismanoid 0:93d4119d3f14 1193 double err_result = (actual_result - expect_result);
whismanoid 0:93d4119d3f14 1194 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 0:93d4119d3f14 1195 {
whismanoid 0:93d4119d3f14 1196 PASS();
whismanoid 0:93d4119d3f14 1197 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 1198 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 1199 associatedCmdLine.serial().printf("AIN4 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 1200 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 1201 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 1202 );
whismanoid 0:93d4119d3f14 1203 //
whismanoid 0:93d4119d3f14 1204 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 1205 return true;
whismanoid 0:93d4119d3f14 1206 }
whismanoid 0:93d4119d3f14 1207 else
whismanoid 0:93d4119d3f14 1208 {
whismanoid 0:93d4119d3f14 1209 FAIL();
whismanoid 0:93d4119d3f14 1210 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 1211 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 1212 associatedCmdLine.serial().printf("AIN4 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 1213 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 1214 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 1215 );
whismanoid 0:93d4119d3f14 1216 //
whismanoid 0:93d4119d3f14 1217 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 1218 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 0:93d4119d3f14 1219 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 0:93d4119d3f14 1220 }
whismanoid 0:93d4119d3f14 1221 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 0:93d4119d3f14 1222 return false;
whismanoid 0:93d4119d3f14 1223 }
whismanoid 0:93d4119d3f14 1224
whismanoid 0:93d4119d3f14 1225 /** Test an analog voltage input to the platform (output from the device under test)
whismanoid 0:93d4119d3f14 1226 *
whismanoid 0:93d4119d3f14 1227 * @param[in] expect_result contains the expected voltage
whismanoid 0:93d4119d3f14 1228 *
whismanoid 0:93d4119d3f14 1229 * @pre err_threshold determines how closely the result must match the expected value
whismanoid 0:93d4119d3f14 1230 *
whismanoid 0:93d4119d3f14 1231 * @post nPass and nFail counters are updated
whismanoid 0:93d4119d3f14 1232 *
whismanoid 0:93d4119d3f14 1233 * @return true if success, false if test failed
whismanoid 0:93d4119d3f14 1234 *
whismanoid 0:93d4119d3f14 1235 */
whismanoid 0:93d4119d3f14 1236 bool MaximTinyTester::AnalogIn5_Read_Expect_voltageV(double expect_result)
whismanoid 0:93d4119d3f14 1237 {
whismanoid 0:93d4119d3f14 1238 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[5];
whismanoid 2:9b20cadbfa15 1239 // skip if expect_result exceeds ADC full scale
whismanoid 2:9b20cadbfa15 1240 if (adc_full_scale_voltage < expect_result)
whismanoid 2:9b20cadbfa15 1241 {
whismanoid 2:9b20cadbfa15 1242 // print a warning message that we can't perform the measurement
whismanoid 2:9b20cadbfa15 1243 associatedCmdLine.serial().printf("\r\n..... AIN full scale %1.3fV < expect %6.6f cannot perform measurement",
whismanoid 2:9b20cadbfa15 1244 adc_full_scale_voltage, expect_result);
whismanoid 2:9b20cadbfa15 1245 return true; // ignore, test conditions are invalid; do not call PASS() or FAIL()
whismanoid 2:9b20cadbfa15 1246 }
whismanoid 0:93d4119d3f14 1247
whismanoid 0:93d4119d3f14 1248 // TODO: tinyTester.Analog_Input_Expect_V replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 0:93d4119d3f14 1249 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 1250 float normValue_0_1 = analogInPin5.read();
whismanoid 0:93d4119d3f14 1251 double actual_result = normValue_0_1 * adc_full_scale_voltage;
whismanoid 0:93d4119d3f14 1252 double err_result = (actual_result - expect_result);
whismanoid 0:93d4119d3f14 1253 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 0:93d4119d3f14 1254 {
whismanoid 0:93d4119d3f14 1255 PASS();
whismanoid 0:93d4119d3f14 1256 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 1257 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 1258 associatedCmdLine.serial().printf("AIN5 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 1259 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 1260 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 1261 );
whismanoid 0:93d4119d3f14 1262 //
whismanoid 0:93d4119d3f14 1263 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 1264 return true;
whismanoid 0:93d4119d3f14 1265 }
whismanoid 0:93d4119d3f14 1266 else
whismanoid 0:93d4119d3f14 1267 {
whismanoid 0:93d4119d3f14 1268 FAIL();
whismanoid 0:93d4119d3f14 1269 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 1270 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 1271 associatedCmdLine.serial().printf("AIN5 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 1272 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 1273 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 1274 );
whismanoid 0:93d4119d3f14 1275 //
whismanoid 0:93d4119d3f14 1276 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 1277 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 0:93d4119d3f14 1278 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 0:93d4119d3f14 1279 }
whismanoid 0:93d4119d3f14 1280 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 0:93d4119d3f14 1281 return false;
whismanoid 0:93d4119d3f14 1282 }
whismanoid 0:93d4119d3f14 1283
whismanoid 0:93d4119d3f14 1284 bool MaximTinyTester::AnalogIn_Read_Expect_voltageV(AnalogIn& analogInPin, double expect_result)
whismanoid 0:93d4119d3f14 1285 {
whismanoid 0:93d4119d3f14 1286 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[0];
whismanoid 2:9b20cadbfa15 1287 // skip if expect_result exceeds ADC full scale
whismanoid 2:9b20cadbfa15 1288 if (adc_full_scale_voltage < expect_result)
whismanoid 2:9b20cadbfa15 1289 {
whismanoid 2:9b20cadbfa15 1290 // print a warning message that we can't perform the measurement
whismanoid 2:9b20cadbfa15 1291 associatedCmdLine.serial().printf("\r\n..... AIN full scale %1.3fV < expect %6.6f cannot perform measurement",
whismanoid 2:9b20cadbfa15 1292 adc_full_scale_voltage, expect_result);
whismanoid 2:9b20cadbfa15 1293 return true; // ignore, test conditions are invalid; do not call PASS() or FAIL()
whismanoid 2:9b20cadbfa15 1294 }
whismanoid 0:93d4119d3f14 1295
whismanoid 0:93d4119d3f14 1296 // TODO: tinyTester.Analog_Input_Expect_V replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 0:93d4119d3f14 1297 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 1298 float normValue_0_1 = analogInPin.read();
whismanoid 0:93d4119d3f14 1299 double actual_result = normValue_0_1 * adc_full_scale_voltage;
whismanoid 0:93d4119d3f14 1300 double err_result = (actual_result - expect_result);
whismanoid 0:93d4119d3f14 1301 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 0:93d4119d3f14 1302 {
whismanoid 0:93d4119d3f14 1303 PASS();
whismanoid 0:93d4119d3f14 1304 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 1305 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 1306 associatedCmdLine.serial().printf("AIN0 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 1307 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 1308 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 1309 );
whismanoid 0:93d4119d3f14 1310 //
whismanoid 0:93d4119d3f14 1311 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 1312 return true;
whismanoid 0:93d4119d3f14 1313 }
whismanoid 0:93d4119d3f14 1314 else
whismanoid 0:93d4119d3f14 1315 {
whismanoid 0:93d4119d3f14 1316 FAIL();
whismanoid 0:93d4119d3f14 1317 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 1318 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 1319 associatedCmdLine.serial().printf("AIN0 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 1320 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 1321 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 1322 );
whismanoid 0:93d4119d3f14 1323 //
whismanoid 0:93d4119d3f14 1324 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 1325 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 0:93d4119d3f14 1326 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 0:93d4119d3f14 1327 }
whismanoid 0:93d4119d3f14 1328 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 0:93d4119d3f14 1329 return false;
whismanoid 0:93d4119d3f14 1330 }
whismanoid 0:93d4119d3f14 1331
whismanoid 0:93d4119d3f14 1332 bool MaximTinyTester::DigitalIn_Read_Expect_WarnOnly(DigitalIn& digitalInPin, const char* pinName, int expect_result, const char *expect_description)
whismanoid 0:93d4119d3f14 1333 {
whismanoid 0:93d4119d3f14 1334 int actual_UPO_value = -1;
whismanoid 0:93d4119d3f14 1335 for (int retry_count = 0; retry_count < 10; retry_count++) {
whismanoid 0:93d4119d3f14 1336 actual_UPO_value = digitalInPin.read(); // g_MAX5171_device.UPOinputValue();
whismanoid 0:93d4119d3f14 1337 if (actual_UPO_value == expect_result) {
whismanoid 0:93d4119d3f14 1338 PASS();
whismanoid 0:93d4119d3f14 1339 associatedCmdLine.serial().printf("%s signal=%d %s", pinName, expect_result, expect_description);
whismanoid 0:93d4119d3f14 1340 return true;
whismanoid 0:93d4119d3f14 1341 }
whismanoid 0:93d4119d3f14 1342 // UPO condition not met, retry for a while until give up
whismanoid 0:93d4119d3f14 1343 wait_ms(input_timeout_time_msec / 10); // delay
whismanoid 0:93d4119d3f14 1344 }
whismanoid 0:93d4119d3f14 1345 associatedCmdLine.serial().printf("\r\n!WARN "); // SelfTest_FAIL(cmdLine);
whismanoid 0:93d4119d3f14 1346 associatedCmdLine.serial().printf("expected %s signal=%d %s", pinName, expect_result, expect_description);
whismanoid 0:93d4119d3f14 1347 associatedCmdLine.serial().printf(", but got actual %s=%d", pinName, actual_UPO_value);
whismanoid 0:93d4119d3f14 1348 associatedCmdLine.serial().printf(", missing %s connections?", pinName);
whismanoid 0:93d4119d3f14 1349 return false;
whismanoid 0:93d4119d3f14 1350 }
whismanoid 0:93d4119d3f14 1351
whismanoid 0:93d4119d3f14 1352 void MaximTinyTester::Wait_Output_Settling()
whismanoid 0:93d4119d3f14 1353 {
whismanoid 0:93d4119d3f14 1354 wait_ms(settle_time_msec); // delay
whismanoid 0:93d4119d3f14 1355 }
whismanoid 0:93d4119d3f14 1356
whismanoid 0:93d4119d3f14 1357
whismanoid 0:93d4119d3f14 1358 // End of file