minimalist hardware testing support

Dependents:   MAX5715BOB_Tester MAX11131BOB_Tester MAX5171BOB_Tester MAX11410BOB_Tester ... more

Committer:
whismanoid
Date:
Tue Jun 08 04:00:15 2021 -0700
Revision:
18:9874cd1e6cb0
Parent:
17:65fb4afe4991
MaximTinyTester AnalogIn5_Read_Report_voltageV() for MAX5719

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 17:65fb4afe4991 70 mask = 0; // 0=require all bits
whismanoid 0:93d4119d3f14 71 input_timeout_time_msec = 250;
whismanoid 0:93d4119d3f14 72 settle_time_msec = 250;
whismanoid 1:f98ddb04f9e0 73 blink_time_msec = 75;
whismanoid 0:93d4119d3f14 74 analogInPin_fullScaleVoltage[0] = 3.300;
whismanoid 0:93d4119d3f14 75 analogInPin_fullScaleVoltage[1] = 3.300;
whismanoid 0:93d4119d3f14 76 analogInPin_fullScaleVoltage[2] = 3.300;
whismanoid 0:93d4119d3f14 77 analogInPin_fullScaleVoltage[3] = 3.300;
whismanoid 0:93d4119d3f14 78 analogInPin_fullScaleVoltage[4] = 3.300;
whismanoid 0:93d4119d3f14 79 analogInPin_fullScaleVoltage[5] = 3.300;
whismanoid 0:93d4119d3f14 80 }
whismanoid 0:93d4119d3f14 81
whismanoid 0:93d4119d3f14 82 /** reset the pass/fail counters.
whismanoid 0:93d4119d3f14 83 *
whismanoid 0:93d4119d3f14 84 * @post nPass and nFail are reset to 0
whismanoid 0:93d4119d3f14 85 *
whismanoid 0:93d4119d3f14 86 */
whismanoid 0:93d4119d3f14 87 void MaximTinyTester::clear(void)
whismanoid 0:93d4119d3f14 88 {
whismanoid 0:93d4119d3f14 89 nPass = 0;
whismanoid 0:93d4119d3f14 90 nFail = 0;
whismanoid 3:080aa1bb1bc0 91 // PinName NC means NOT_CONNECTED; DigitalOut::is_connected() returns false
whismanoid 3:080aa1bb1bc0 92 if (m_RFailLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 93 m_RFailLED = LED_ON;
whismanoid 3:080aa1bb1bc0 94 }
whismanoid 3:080aa1bb1bc0 95 if (m_GPassLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 96 m_GPassLED = LED_ON;
whismanoid 3:080aa1bb1bc0 97 }
whismanoid 3:080aa1bb1bc0 98 if (m_BBusyLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 99 m_BBusyLED = LED_OFF;
whismanoid 3:080aa1bb1bc0 100 }
whismanoid 17:65fb4afe4991 101 mask = 0; // reset mask (0=require all bits) after every FunctionCall_Expect
whismanoid 0:93d4119d3f14 102 }
whismanoid 0:93d4119d3f14 103
whismanoid 0:93d4119d3f14 104 /** report that a test has completed with success.
whismanoid 0:93d4119d3f14 105 *
whismanoid 0:93d4119d3f14 106 * @post nPass is increased by 1
whismanoid 0:93d4119d3f14 107 *
whismanoid 0:93d4119d3f14 108 */
whismanoid 0:93d4119d3f14 109 void MaximTinyTester::PASS()
whismanoid 0:93d4119d3f14 110 {
whismanoid 0:93d4119d3f14 111 ++nPass;
whismanoid 1:f98ddb04f9e0 112 // m_RFailLED = LED_ON; m_GPassLED = LED_ON; m_BBusyLED = LED_ON;
whismanoid 1:f98ddb04f9e0 113 // pulse blue LED during test to indicate activity
whismanoid 3:080aa1bb1bc0 114 if (m_GPassLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 115 m_GPassLED = LED_OFF;
whismanoid 3:080aa1bb1bc0 116 }
whismanoid 3:080aa1bb1bc0 117 if (m_BBusyLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 118 m_BBusyLED = LED_ON;
whismanoid 3:080aa1bb1bc0 119 }
whismanoid 1:f98ddb04f9e0 120 wait_ms(blink_time_msec); // delay
whismanoid 3:080aa1bb1bc0 121 if (m_GPassLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 122 m_GPassLED = LED_ON;
whismanoid 3:080aa1bb1bc0 123 }
whismanoid 3:080aa1bb1bc0 124 if (m_BBusyLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 125 m_BBusyLED = LED_OFF;
whismanoid 3:080aa1bb1bc0 126 }
whismanoid 1:f98ddb04f9e0 127 wait_ms(blink_time_msec); // delay
whismanoid 0:93d4119d3f14 128 associatedCmdLine.serial().printf("\r\n+PASS ");
whismanoid 17:65fb4afe4991 129 mask = 0; // reset mask (0=require all bits) after every FunctionCall_Expect
whismanoid 0:93d4119d3f14 130 }
whismanoid 0:93d4119d3f14 131
whismanoid 0:93d4119d3f14 132 /** report that a test has completed with failure.
whismanoid 0:93d4119d3f14 133 *
whismanoid 0:93d4119d3f14 134 * @post nFail is increased by 1
whismanoid 0:93d4119d3f14 135 *
whismanoid 0:93d4119d3f14 136 */
whismanoid 0:93d4119d3f14 137 void MaximTinyTester::FAIL()
whismanoid 0:93d4119d3f14 138 {
whismanoid 0:93d4119d3f14 139 ++nFail;
whismanoid 1:f98ddb04f9e0 140 // m_RFailLED = LED_ON; m_GPassLED = LED_ON; m_BBusyLED = LED_ON;
whismanoid 1:f98ddb04f9e0 141 // pulse blue LED during test to indicate activity
whismanoid 3:080aa1bb1bc0 142 if (m_RFailLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 143 m_RFailLED = LED_OFF;
whismanoid 3:080aa1bb1bc0 144 }
whismanoid 3:080aa1bb1bc0 145 if (m_BBusyLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 146 m_BBusyLED = LED_ON;
whismanoid 3:080aa1bb1bc0 147 }
whismanoid 1:f98ddb04f9e0 148 wait_ms(blink_time_msec); // delay
whismanoid 3:080aa1bb1bc0 149 if (m_RFailLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 150 m_RFailLED = LED_ON;
whismanoid 3:080aa1bb1bc0 151 }
whismanoid 3:080aa1bb1bc0 152 if (m_BBusyLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 153 m_BBusyLED = LED_OFF;
whismanoid 3:080aa1bb1bc0 154 }
whismanoid 1:f98ddb04f9e0 155 wait_ms(blink_time_msec); // delay
whismanoid 0:93d4119d3f14 156 associatedCmdLine.serial().printf("\r\n-FAIL ");
whismanoid 0:93d4119d3f14 157 #if USE_LEDS
whismanoid 0:93d4119d3f14 158 rgb_led.red(); // diagnostic rbg led RED
whismanoid 0:93d4119d3f14 159 //~ rgb_led.green(); // diagnostic rbg led GREEN
whismanoid 0:93d4119d3f14 160 //~ rgb_led.blue(); // diagnostic rbg led BLUE
whismanoid 0:93d4119d3f14 161 //~ rgb_led.white(); // diagnostic rbg led RED+GREEN+BLUE=WHITE
whismanoid 0:93d4119d3f14 162 //~ rgb_led.cyan(); // diagnostic rbg led GREEN+BLUE=CYAN
whismanoid 0:93d4119d3f14 163 //~ rgb_led.magenta(); // diagnostic rbg led RED+BLUE=MAGENTA
whismanoid 0:93d4119d3f14 164 //~ rgb_led.yellow(); // diagnostic rbg led RED+GREEN=YELLOW
whismanoid 0:93d4119d3f14 165 //~ rgb_led.black(); // diagnostic rbg led BLACK
whismanoid 0:93d4119d3f14 166 #endif // USE_LEDS
whismanoid 17:65fb4afe4991 167 mask = 0; // reset mask (0=require all bits) after every FunctionCall_Expect
whismanoid 0:93d4119d3f14 168 }
whismanoid 0:93d4119d3f14 169
whismanoid 9:3ec00515891d 170 /** Print a message to the console during test.
whismanoid 9:3ec00515891d 171 */
whismanoid 9:3ec00515891d 172 void MaximTinyTester::print(const char* stringLiteralMessage)
whismanoid 9:3ec00515891d 173 {
whismanoid 9:3ec00515891d 174 associatedCmdLine.serial().printf("\r\n %s", stringLiteralMessage);
whismanoid 9:3ec00515891d 175 }
whismanoid 9:3ec00515891d 176
whismanoid 0:93d4119d3f14 177 /** Report number of pass and number of fail test results
whismanoid 0:93d4119d3f14 178 */
whismanoid 0:93d4119d3f14 179 void MaximTinyTester::Report_Summary(void)
whismanoid 0:93d4119d3f14 180 {
whismanoid 0:93d4119d3f14 181 associatedCmdLine.serial().printf("\r\nSummary: %d PASS %d FAIL\r\n", nPass, nFail);
whismanoid 0:93d4119d3f14 182 //~ associatedCmdLine.serial().printf(g_SelfTest_nPass);
whismanoid 0:93d4119d3f14 183 //~ associatedCmdLine.serial().printf(" PASS ");
whismanoid 0:93d4119d3f14 184 //~ associatedCmdLine.serial().printf(g_SelfTest_nFail);
whismanoid 0:93d4119d3f14 185 //~ associatedCmdLine.serial().printf(" FAIL\r\n");
whismanoid 0:93d4119d3f14 186 if (nFail == 0) {
whismanoid 3:080aa1bb1bc0 187 if (m_RFailLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 188 m_RFailLED = LED_OFF;
whismanoid 3:080aa1bb1bc0 189 }
whismanoid 3:080aa1bb1bc0 190 if (m_GPassLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 191 m_GPassLED = LED_ON;
whismanoid 3:080aa1bb1bc0 192 }
whismanoid 3:080aa1bb1bc0 193 if (m_BBusyLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 194 m_BBusyLED = LED_OFF;
whismanoid 3:080aa1bb1bc0 195 }
whismanoid 1:f98ddb04f9e0 196 //~ rgb_led.green(); // diagnostic rbg led GREEN
whismanoid 1:f98ddb04f9e0 197 }
whismanoid 1:f98ddb04f9e0 198 else {
whismanoid 3:080aa1bb1bc0 199 if (m_RFailLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 200 m_RFailLED = LED_ON;
whismanoid 3:080aa1bb1bc0 201 }
whismanoid 3:080aa1bb1bc0 202 if (m_GPassLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 203 m_GPassLED = LED_OFF;
whismanoid 3:080aa1bb1bc0 204 }
whismanoid 3:080aa1bb1bc0 205 if (m_BBusyLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 206 m_BBusyLED = LED_OFF;
whismanoid 3:080aa1bb1bc0 207 }
whismanoid 0:93d4119d3f14 208 //~ rgb_led.red(); // diagnostic rbg led RED
whismanoid 0:93d4119d3f14 209 }
whismanoid 0:93d4119d3f14 210 }
whismanoid 0:93d4119d3f14 211
whismanoid 10:b11ab5d7ac58 212 bool MaximTinyTester::Expect(const char *nameOfTest, int actual_result, int expect_result)
whismanoid 10:b11ab5d7ac58 213 {
whismanoid 17:65fb4afe4991 214 if ((int)(actual_result & mask) != (int)(expect_result & mask)) // Expect (int)
whismanoid 10:b11ab5d7ac58 215 {
whismanoid 10:b11ab5d7ac58 216 FAIL();
whismanoid 10:b11ab5d7ac58 217 associatedCmdLine.serial().printf("%s", nameOfTest);
whismanoid 10:b11ab5d7ac58 218 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 10:b11ab5d7ac58 219 associatedCmdLine.serial().printf(" but got %d", actual_result);
whismanoid 10:b11ab5d7ac58 220 return false;
whismanoid 10:b11ab5d7ac58 221 }
whismanoid 10:b11ab5d7ac58 222 else
whismanoid 10:b11ab5d7ac58 223 {
whismanoid 10:b11ab5d7ac58 224 PASS();
whismanoid 10:b11ab5d7ac58 225 associatedCmdLine.serial().printf("%s", nameOfTest);
whismanoid 10:b11ab5d7ac58 226 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 10:b11ab5d7ac58 227 return true;
whismanoid 10:b11ab5d7ac58 228 }
whismanoid 10:b11ab5d7ac58 229 }
whismanoid 10:b11ab5d7ac58 230
whismanoid 10:b11ab5d7ac58 231 bool MaximTinyTester::Expect(const char *nameOfTest, double actual_result, double expect_result)
whismanoid 10:b11ab5d7ac58 232 {
whismanoid 10:b11ab5d7ac58 233 double err_result = (actual_result - expect_result);
whismanoid 10:b11ab5d7ac58 234 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 10:b11ab5d7ac58 235 {
whismanoid 10:b11ab5d7ac58 236 PASS();
whismanoid 10:b11ab5d7ac58 237 associatedCmdLine.serial().printf("%s", nameOfTest);
whismanoid 10:b11ab5d7ac58 238 associatedCmdLine.serial().printf(" expect %6.6f", expect_result);
whismanoid 10:b11ab5d7ac58 239 return true;
whismanoid 10:b11ab5d7ac58 240 }
whismanoid 10:b11ab5d7ac58 241 else
whismanoid 10:b11ab5d7ac58 242 {
whismanoid 10:b11ab5d7ac58 243 FAIL();
whismanoid 10:b11ab5d7ac58 244 associatedCmdLine.serial().printf("%s", nameOfTest);
whismanoid 10:b11ab5d7ac58 245 associatedCmdLine.serial().printf(" expect %6.6f", expect_result);
whismanoid 10:b11ab5d7ac58 246 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 10:b11ab5d7ac58 247 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 10:b11ab5d7ac58 248 return false;
whismanoid 10:b11ab5d7ac58 249 }
whismanoid 10:b11ab5d7ac58 250 }
whismanoid 10:b11ab5d7ac58 251
whismanoid 0:93d4119d3f14 252 /** Test a software function
whismanoid 0:93d4119d3f14 253 *
whismanoid 0:93d4119d3f14 254 * @param[in] nameOfFunctionUnderTest is the user-facing name of the function under test
whismanoid 0:93d4119d3f14 255 *
whismanoid 0:93d4119d3f14 256 * @param[in] functionUnderTest points to the function under test
whismanoid 0:93d4119d3f14 257 *
whismanoid 8:9171f0ab3c17 258 * @param[in] arg_1_voltageV is a test argument given to the function under test
whismanoid 0:93d4119d3f14 259 *
whismanoid 0:93d4119d3f14 260 * @param[in] expect_result contains the expected result
whismanoid 0:93d4119d3f14 261 *
whismanoid 0:93d4119d3f14 262 * @post nPass and nFail counters are updated
whismanoid 0:93d4119d3f14 263 *
whismanoid 0:93d4119d3f14 264 * @return true if success, false if test failed
whismanoid 0:93d4119d3f14 265 *
whismanoid 0:93d4119d3f14 266 */
whismanoid 12:55db0f4a417d 267 bool MaximTinyTester::FunctionCall_u_f_Expect(const char *nameOfFunctionUnderTest,
whismanoid 0:93d4119d3f14 268 Callback<uint16_t(double)> functionUnderTest,
whismanoid 8:9171f0ab3c17 269 double arg_1_voltageV,
whismanoid 8:9171f0ab3c17 270 uint16_t expect_result)
whismanoid 0:93d4119d3f14 271 {
whismanoid 8:9171f0ab3c17 272 uint16_t actual_result = functionUnderTest(arg_1_voltageV);
whismanoid 17:65fb4afe4991 273 if ((uint16_t)(actual_result & mask) != (uint16_t)(expect_result & mask)) // FunctionCall_u_f_Expect
whismanoid 0:93d4119d3f14 274 {
whismanoid 0:93d4119d3f14 275 FAIL();
whismanoid 8:9171f0ab3c17 276 associatedCmdLine.serial().printf("%s(%6.4fV)", nameOfFunctionUnderTest, arg_1_voltageV);
whismanoid 0:93d4119d3f14 277 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 0:93d4119d3f14 278 associatedCmdLine.serial().printf(" but got %d", actual_result);
whismanoid 0:93d4119d3f14 279 return false;
whismanoid 0:93d4119d3f14 280 }
whismanoid 0:93d4119d3f14 281 else
whismanoid 0:93d4119d3f14 282 {
whismanoid 0:93d4119d3f14 283 PASS();
whismanoid 8:9171f0ab3c17 284 associatedCmdLine.serial().printf("%s(%6.4fV)", nameOfFunctionUnderTest, arg_1_voltageV);
whismanoid 0:93d4119d3f14 285 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 0:93d4119d3f14 286 return true;
whismanoid 0:93d4119d3f14 287 }
whismanoid 0:93d4119d3f14 288 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 0:93d4119d3f14 289 }
whismanoid 0:93d4119d3f14 290
whismanoid 15:ac3e4930df8b 291
whismanoid 15:ac3e4930df8b 292 /** Test a software function
whismanoid 15:ac3e4930df8b 293 *
whismanoid 15:ac3e4930df8b 294 * @param[in] nameOfFunctionUnderTest is the user-facing name of the function under test
whismanoid 15:ac3e4930df8b 295 *
whismanoid 15:ac3e4930df8b 296 * @param[in] functionUnderTest points to the function under test
whismanoid 15:ac3e4930df8b 297 *
whismanoid 15:ac3e4930df8b 298 * @param[in] arg_1_voltageV is a test argument given to the function under test
whismanoid 15:ac3e4930df8b 299 *
whismanoid 15:ac3e4930df8b 300 * @param[in] expect_result contains the expected result
whismanoid 15:ac3e4930df8b 301 *
whismanoid 15:ac3e4930df8b 302 * @post nPass and nFail counters are updated
whismanoid 15:ac3e4930df8b 303 *
whismanoid 15:ac3e4930df8b 304 * @return true if success, false if test failed
whismanoid 15:ac3e4930df8b 305 *
whismanoid 15:ac3e4930df8b 306 */
whismanoid 15:ac3e4930df8b 307 // MaximTinyTester FunctionCall_lu_f_Expect support MAX5719
whismanoid 15:ac3e4930df8b 308 bool MaximTinyTester::FunctionCall_lu_f_Expect(const char *nameOfFunctionUnderTest,
whismanoid 15:ac3e4930df8b 309 Callback<uint32_t(double)> functionUnderTest,
whismanoid 15:ac3e4930df8b 310 double arg_1_voltageV,
whismanoid 15:ac3e4930df8b 311 uint32_t expect_result)
whismanoid 15:ac3e4930df8b 312 {
whismanoid 15:ac3e4930df8b 313 uint32_t actual_result = functionUnderTest(arg_1_voltageV);
whismanoid 17:65fb4afe4991 314 if ((uint32_t)(actual_result & mask) != (uint32_t)(expect_result & mask)) // FunctionCall_lu_f_Expect
whismanoid 15:ac3e4930df8b 315 {
whismanoid 15:ac3e4930df8b 316 FAIL();
whismanoid 16:bb4b003a5cd2 317 associatedCmdLine.serial().printf("%s(%6.6fV)", nameOfFunctionUnderTest, arg_1_voltageV);
whismanoid 15:ac3e4930df8b 318 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 15:ac3e4930df8b 319 associatedCmdLine.serial().printf(" but got %d", actual_result);
whismanoid 15:ac3e4930df8b 320 return false;
whismanoid 15:ac3e4930df8b 321 }
whismanoid 15:ac3e4930df8b 322 else
whismanoid 15:ac3e4930df8b 323 {
whismanoid 15:ac3e4930df8b 324 PASS();
whismanoid 16:bb4b003a5cd2 325 associatedCmdLine.serial().printf("%s(%6.6fV)", nameOfFunctionUnderTest, arg_1_voltageV);
whismanoid 15:ac3e4930df8b 326 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 15:ac3e4930df8b 327 return true;
whismanoid 15:ac3e4930df8b 328 }
whismanoid 15:ac3e4930df8b 329 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 15:ac3e4930df8b 330 }
whismanoid 15:ac3e4930df8b 331
whismanoid 0:93d4119d3f14 332 /** Test a software function
whismanoid 0:93d4119d3f14 333 *
whismanoid 0:93d4119d3f14 334 * @param[in] nameOfFunctionUnderTest is the user-facing name of the function under test
whismanoid 0:93d4119d3f14 335 *
whismanoid 0:93d4119d3f14 336 * @param[in] functionUnderTest points to the function under test
whismanoid 0:93d4119d3f14 337 *
whismanoid 8:9171f0ab3c17 338 * @param[in] arg_1_u16 is a test argument given to the function under test
whismanoid 0:93d4119d3f14 339 *
whismanoid 0:93d4119d3f14 340 * @param[in] expect_result contains the expected result
whismanoid 0:93d4119d3f14 341 *
whismanoid 0:93d4119d3f14 342 * @pre err_threshold determines how closely the result must match the expected value
whismanoid 0:93d4119d3f14 343 *
whismanoid 0:93d4119d3f14 344 * @post nPass and nFail counters are updated
whismanoid 0:93d4119d3f14 345 *
whismanoid 0:93d4119d3f14 346 * @return true if success, false if test failed
whismanoid 0:93d4119d3f14 347 *
whismanoid 0:93d4119d3f14 348 */
whismanoid 12:55db0f4a417d 349 bool MaximTinyTester::FunctionCall_f_d_Expect(const char *nameOfFunctionUnderTest,
whismanoid 10:b11ab5d7ac58 350 Callback<double(int)> functionUnderTest,
whismanoid 10:b11ab5d7ac58 351 int arg_1_u16,
whismanoid 8:9171f0ab3c17 352 double expect_result)
whismanoid 0:93d4119d3f14 353 {
whismanoid 8:9171f0ab3c17 354 double actual_result = functionUnderTest(arg_1_u16);
whismanoid 0:93d4119d3f14 355 double err_result = (actual_result - expect_result);
whismanoid 0:93d4119d3f14 356 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 0:93d4119d3f14 357 {
whismanoid 0:93d4119d3f14 358 PASS();
whismanoid 8:9171f0ab3c17 359 associatedCmdLine.serial().printf("%s(%d)", nameOfFunctionUnderTest, arg_1_u16);
whismanoid 0:93d4119d3f14 360 associatedCmdLine.serial().printf(" expect %6.6f", expect_result);
whismanoid 0:93d4119d3f14 361 return true;
whismanoid 0:93d4119d3f14 362 }
whismanoid 0:93d4119d3f14 363 else
whismanoid 0:93d4119d3f14 364 {
whismanoid 0:93d4119d3f14 365 FAIL();
whismanoid 8:9171f0ab3c17 366 associatedCmdLine.serial().printf("%s(%d)", nameOfFunctionUnderTest, arg_1_u16);
whismanoid 0:93d4119d3f14 367 associatedCmdLine.serial().printf(" expect %6.6f", expect_result);
whismanoid 0:93d4119d3f14 368 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 0:93d4119d3f14 369 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 0:93d4119d3f14 370 return false;
whismanoid 0:93d4119d3f14 371 }
whismanoid 0:93d4119d3f14 372 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 0:93d4119d3f14 373 }
whismanoid 0:93d4119d3f14 374
whismanoid 5:67a1cd5a67cc 375 /** Test a software function
whismanoid 5:67a1cd5a67cc 376 *
whismanoid 5:67a1cd5a67cc 377 * @param[in] nameOfFunctionUnderTest is the user-facing name of the function under test
whismanoid 5:67a1cd5a67cc 378 *
whismanoid 5:67a1cd5a67cc 379 * @param[in] functionUnderTest points to the function under test
whismanoid 5:67a1cd5a67cc 380 *
whismanoid 12:55db0f4a417d 381 * @param[in] arg_1_int is a test argument given to the function under test
whismanoid 12:55db0f4a417d 382 * @param[in] arg_2_int is a test argument given to the function under test
whismanoid 12:55db0f4a417d 383 *
whismanoid 12:55db0f4a417d 384 * @param[in] expect_result contains the expected result
whismanoid 12:55db0f4a417d 385 *
whismanoid 12:55db0f4a417d 386 * @pre err_threshold determines how closely the result must match the expected value
whismanoid 12:55db0f4a417d 387 *
whismanoid 12:55db0f4a417d 388 * @post nPass and nFail counters are updated
whismanoid 12:55db0f4a417d 389 *
whismanoid 12:55db0f4a417d 390 * @return true if success, false if test failed
whismanoid 12:55db0f4a417d 391 *
whismanoid 12:55db0f4a417d 392 */
whismanoid 12:55db0f4a417d 393 bool MaximTinyTester::FunctionCall_f_d_d_Expect(const char *nameOfFunctionUnderTest,
whismanoid 12:55db0f4a417d 394 Callback<double(int, int)> functionUnderTest,
whismanoid 12:55db0f4a417d 395 int arg_1_int,
whismanoid 12:55db0f4a417d 396 int arg_2_int,
whismanoid 12:55db0f4a417d 397 double expect_result)
whismanoid 12:55db0f4a417d 398 {
whismanoid 12:55db0f4a417d 399 double actual_result = functionUnderTest(arg_1_int, arg_2_int);
whismanoid 12:55db0f4a417d 400 double err_result = (actual_result - expect_result);
whismanoid 12:55db0f4a417d 401 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 12:55db0f4a417d 402 {
whismanoid 12:55db0f4a417d 403 PASS();
whismanoid 12:55db0f4a417d 404 associatedCmdLine.serial().printf("%s(%d,%d)", nameOfFunctionUnderTest, arg_1_int, arg_2_int);
whismanoid 12:55db0f4a417d 405 associatedCmdLine.serial().printf(" expect %6.6f", expect_result);
whismanoid 12:55db0f4a417d 406 return true;
whismanoid 12:55db0f4a417d 407 }
whismanoid 12:55db0f4a417d 408 else
whismanoid 12:55db0f4a417d 409 {
whismanoid 12:55db0f4a417d 410 FAIL();
whismanoid 12:55db0f4a417d 411 associatedCmdLine.serial().printf("%s(%d,%d)", nameOfFunctionUnderTest, arg_1_int, arg_2_int);
whismanoid 12:55db0f4a417d 412 associatedCmdLine.serial().printf(" expect %6.6f", expect_result);
whismanoid 12:55db0f4a417d 413 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 12:55db0f4a417d 414 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 12:55db0f4a417d 415 return false;
whismanoid 12:55db0f4a417d 416 }
whismanoid 12:55db0f4a417d 417 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 12:55db0f4a417d 418 }
whismanoid 12:55db0f4a417d 419
whismanoid 12:55db0f4a417d 420 /** Test a software function
whismanoid 12:55db0f4a417d 421 *
whismanoid 12:55db0f4a417d 422 * @param[in] nameOfFunctionUnderTest is the user-facing name of the function under test
whismanoid 12:55db0f4a417d 423 *
whismanoid 12:55db0f4a417d 424 * @param[in] functionUnderTest points to the function under test
whismanoid 12:55db0f4a417d 425 *
whismanoid 8:9171f0ab3c17 426 * @param[in] arg_1_u32 is a test argument given to the function under test
whismanoid 5:67a1cd5a67cc 427 *
whismanoid 5:67a1cd5a67cc 428 * @param[in] expect_result contains the expected result
whismanoid 5:67a1cd5a67cc 429 *
whismanoid 5:67a1cd5a67cc 430 * @pre err_threshold determines how closely the result must match the expected value
whismanoid 5:67a1cd5a67cc 431 *
whismanoid 5:67a1cd5a67cc 432 * @post nPass and nFail counters are updated
whismanoid 5:67a1cd5a67cc 433 *
whismanoid 5:67a1cd5a67cc 434 * @return true if success, false if test failed
whismanoid 5:67a1cd5a67cc 435 *
whismanoid 5:67a1cd5a67cc 436 */
whismanoid 14:10219b869ac3 437 bool MaximTinyTester::FunctionCall_f_u_Expect(const char *nameOfFunctionUnderTest,
whismanoid 14:10219b869ac3 438 Callback<double(uint16_t)> functionUnderTest,
whismanoid 14:10219b869ac3 439 uint16_t arg_1_u16,
whismanoid 14:10219b869ac3 440 double expect_result)
whismanoid 14:10219b869ac3 441 {
whismanoid 14:10219b869ac3 442 double actual_result = functionUnderTest(arg_1_u16);
whismanoid 14:10219b869ac3 443 double err_result = (actual_result - expect_result);
whismanoid 14:10219b869ac3 444 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 14:10219b869ac3 445 {
whismanoid 14:10219b869ac3 446 PASS();
whismanoid 14:10219b869ac3 447 associatedCmdLine.serial().printf("%s(0x%x)", nameOfFunctionUnderTest, arg_1_u16);
whismanoid 14:10219b869ac3 448 associatedCmdLine.serial().printf(" expect %6.6f", expect_result);
whismanoid 14:10219b869ac3 449 return true;
whismanoid 14:10219b869ac3 450 }
whismanoid 14:10219b869ac3 451 else
whismanoid 14:10219b869ac3 452 {
whismanoid 14:10219b869ac3 453 FAIL();
whismanoid 14:10219b869ac3 454 associatedCmdLine.serial().printf("%s(0x%x)", nameOfFunctionUnderTest, arg_1_u16);
whismanoid 14:10219b869ac3 455 associatedCmdLine.serial().printf(" expect %6.6f", expect_result);
whismanoid 14:10219b869ac3 456 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 14:10219b869ac3 457 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 14:10219b869ac3 458 return false;
whismanoid 14:10219b869ac3 459 }
whismanoid 14:10219b869ac3 460 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 14:10219b869ac3 461 }
whismanoid 14:10219b869ac3 462
whismanoid 14:10219b869ac3 463 /** Test a software function
whismanoid 14:10219b869ac3 464 *
whismanoid 14:10219b869ac3 465 * @param[in] nameOfFunctionUnderTest is the user-facing name of the function under test
whismanoid 14:10219b869ac3 466 *
whismanoid 14:10219b869ac3 467 * @param[in] functionUnderTest points to the function under test
whismanoid 14:10219b869ac3 468 *
whismanoid 14:10219b869ac3 469 * @param[in] arg_1_u32 is a test argument given to the function under test
whismanoid 14:10219b869ac3 470 *
whismanoid 14:10219b869ac3 471 * @param[in] expect_result contains the expected result
whismanoid 14:10219b869ac3 472 *
whismanoid 14:10219b869ac3 473 * @pre err_threshold determines how closely the result must match the expected value
whismanoid 14:10219b869ac3 474 *
whismanoid 14:10219b869ac3 475 * @post nPass and nFail counters are updated
whismanoid 14:10219b869ac3 476 *
whismanoid 14:10219b869ac3 477 * @return true if success, false if test failed
whismanoid 14:10219b869ac3 478 *
whismanoid 14:10219b869ac3 479 */
whismanoid 12:55db0f4a417d 480 bool MaximTinyTester::FunctionCall_f_lu_Expect(const char *nameOfFunctionUnderTest,
whismanoid 5:67a1cd5a67cc 481 Callback<double(uint32_t)> functionUnderTest,
whismanoid 8:9171f0ab3c17 482 uint32_t arg_1_u32,
whismanoid 8:9171f0ab3c17 483 double expect_result)
whismanoid 5:67a1cd5a67cc 484 {
whismanoid 8:9171f0ab3c17 485 double actual_result = functionUnderTest(arg_1_u32);
whismanoid 5:67a1cd5a67cc 486 double err_result = (actual_result - expect_result);
whismanoid 5:67a1cd5a67cc 487 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 5:67a1cd5a67cc 488 {
whismanoid 5:67a1cd5a67cc 489 PASS();
whismanoid 8:9171f0ab3c17 490 associatedCmdLine.serial().printf("%s(0x%lx)", nameOfFunctionUnderTest, arg_1_u32);
whismanoid 5:67a1cd5a67cc 491 associatedCmdLine.serial().printf(" expect %6.6f", expect_result);
whismanoid 5:67a1cd5a67cc 492 return true;
whismanoid 5:67a1cd5a67cc 493 }
whismanoid 5:67a1cd5a67cc 494 else
whismanoid 5:67a1cd5a67cc 495 {
whismanoid 5:67a1cd5a67cc 496 FAIL();
whismanoid 8:9171f0ab3c17 497 associatedCmdLine.serial().printf("%s(0x%lx)", nameOfFunctionUnderTest, arg_1_u32);
whismanoid 5:67a1cd5a67cc 498 associatedCmdLine.serial().printf(" expect %6.6f", expect_result);
whismanoid 5:67a1cd5a67cc 499 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 5:67a1cd5a67cc 500 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 5:67a1cd5a67cc 501 return false;
whismanoid 5:67a1cd5a67cc 502 }
whismanoid 5:67a1cd5a67cc 503 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 5:67a1cd5a67cc 504 }
whismanoid 5:67a1cd5a67cc 505
whismanoid 5:67a1cd5a67cc 506 /** Test a software function
whismanoid 5:67a1cd5a67cc 507 *
whismanoid 5:67a1cd5a67cc 508 * @param[in] nameOfFunctionUnderTest is the user-facing name of the function under test
whismanoid 5:67a1cd5a67cc 509 *
whismanoid 5:67a1cd5a67cc 510 * @param[in] functionUnderTest points to the function under test
whismanoid 5:67a1cd5a67cc 511 *
whismanoid 8:9171f0ab3c17 512 * @param[in] arg_1_d is a test argument given to the function under test
whismanoid 5:67a1cd5a67cc 513 *
whismanoid 5:67a1cd5a67cc 514 * @param[in] expect_result contains the expected result
whismanoid 5:67a1cd5a67cc 515 *
whismanoid 5:67a1cd5a67cc 516 * @pre err_threshold determines how closely the result must match the expected value
whismanoid 5:67a1cd5a67cc 517 *
whismanoid 5:67a1cd5a67cc 518 * @post nPass and nFail counters are updated
whismanoid 5:67a1cd5a67cc 519 *
whismanoid 5:67a1cd5a67cc 520 * @return true if success, false if test failed
whismanoid 5:67a1cd5a67cc 521 *
whismanoid 5:67a1cd5a67cc 522 */
whismanoid 12:55db0f4a417d 523 bool MaximTinyTester::FunctionCall_f_f_Expect(const char *nameOfFunctionUnderTest,
whismanoid 5:67a1cd5a67cc 524 Callback<double(double)> functionUnderTest,
whismanoid 8:9171f0ab3c17 525 double arg_1_d,
whismanoid 8:9171f0ab3c17 526 double expect_result)
whismanoid 5:67a1cd5a67cc 527 {
whismanoid 8:9171f0ab3c17 528 double actual_result = functionUnderTest(arg_1_d);
whismanoid 5:67a1cd5a67cc 529 double err_result = (actual_result - expect_result);
whismanoid 5:67a1cd5a67cc 530 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 5:67a1cd5a67cc 531 {
whismanoid 5:67a1cd5a67cc 532 PASS();
whismanoid 8:9171f0ab3c17 533 associatedCmdLine.serial().printf("%s(%6.6f)", nameOfFunctionUnderTest, arg_1_d);
whismanoid 5:67a1cd5a67cc 534 associatedCmdLine.serial().printf(" expect %6.6f", expect_result);
whismanoid 5:67a1cd5a67cc 535 return true;
whismanoid 5:67a1cd5a67cc 536 }
whismanoid 5:67a1cd5a67cc 537 else
whismanoid 5:67a1cd5a67cc 538 {
whismanoid 5:67a1cd5a67cc 539 FAIL();
whismanoid 8:9171f0ab3c17 540 associatedCmdLine.serial().printf("%s(%6.6f)", nameOfFunctionUnderTest, arg_1_d);
whismanoid 5:67a1cd5a67cc 541 associatedCmdLine.serial().printf(" expect %6.6f", expect_result);
whismanoid 5:67a1cd5a67cc 542 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 5:67a1cd5a67cc 543 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 5:67a1cd5a67cc 544 return false;
whismanoid 5:67a1cd5a67cc 545 }
whismanoid 5:67a1cd5a67cc 546 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 5:67a1cd5a67cc 547 }
whismanoid 5:67a1cd5a67cc 548
whismanoid 7:5b40b6370f8a 549 /** Test a software function
whismanoid 7:5b40b6370f8a 550 *
whismanoid 7:5b40b6370f8a 551 * @param[in] nameOfFunctionUnderTest is the user-facing name of the function under test
whismanoid 7:5b40b6370f8a 552 *
whismanoid 7:5b40b6370f8a 553 * @param[in] functionUnderTest points to the function under test
whismanoid 7:5b40b6370f8a 554 *
whismanoid 8:9171f0ab3c17 555 * @param[in] expect_result contains the expected result
whismanoid 8:9171f0ab3c17 556 *
whismanoid 8:9171f0ab3c17 557 * @post nPass and nFail counters are updated
whismanoid 8:9171f0ab3c17 558 *
whismanoid 8:9171f0ab3c17 559 * @return true if success, false if test failed
whismanoid 8:9171f0ab3c17 560 *
whismanoid 8:9171f0ab3c17 561 */
whismanoid 16:bb4b003a5cd2 562 bool MaximTinyTester::FunctionCall_d_Expect(const char *nameOfFunctionUnderTest,
whismanoid 16:bb4b003a5cd2 563 Callback<int()> functionUnderTest,
whismanoid 16:bb4b003a5cd2 564 int expect_result)
whismanoid 16:bb4b003a5cd2 565 {
whismanoid 16:bb4b003a5cd2 566 int actual_result = functionUnderTest();
whismanoid 17:65fb4afe4991 567 if ((int)(actual_result & mask) != (int)(expect_result & mask)) // FunctionCall_d_Expect
whismanoid 17:65fb4afe4991 568 {
whismanoid 17:65fb4afe4991 569 FAIL();
whismanoid 17:65fb4afe4991 570 associatedCmdLine.serial().printf("%s()", nameOfFunctionUnderTest);
whismanoid 17:65fb4afe4991 571 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 17:65fb4afe4991 572 associatedCmdLine.serial().printf(" but got %d", actual_result);
whismanoid 17:65fb4afe4991 573 return false;
whismanoid 17:65fb4afe4991 574 }
whismanoid 17:65fb4afe4991 575 else
whismanoid 17:65fb4afe4991 576 {
whismanoid 17:65fb4afe4991 577 PASS();
whismanoid 17:65fb4afe4991 578 associatedCmdLine.serial().printf("%s()", nameOfFunctionUnderTest);
whismanoid 17:65fb4afe4991 579 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 17:65fb4afe4991 580 return true;
whismanoid 17:65fb4afe4991 581 }
whismanoid 17:65fb4afe4991 582 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 17:65fb4afe4991 583 }
whismanoid 17:65fb4afe4991 584
whismanoid 17:65fb4afe4991 585 /** Test a software function
whismanoid 17:65fb4afe4991 586 *
whismanoid 17:65fb4afe4991 587 * @param[in] nameOfFunctionUnderTest is the user-facing name of the function under test
whismanoid 17:65fb4afe4991 588 *
whismanoid 17:65fb4afe4991 589 * @param[in] functionUnderTest points to the function under test
whismanoid 17:65fb4afe4991 590 *
whismanoid 17:65fb4afe4991 591 * @param[in] expect_result contains the expected result
whismanoid 17:65fb4afe4991 592 *
whismanoid 17:65fb4afe4991 593 * @post nPass and nFail counters are updated
whismanoid 17:65fb4afe4991 594 *
whismanoid 17:65fb4afe4991 595 * @return true if success, false if test failed
whismanoid 17:65fb4afe4991 596 *
whismanoid 17:65fb4afe4991 597 */
whismanoid 17:65fb4afe4991 598 bool MaximTinyTester::FunctionCall_md_Expect(const char *nameOfFunctionUnderTest,
whismanoid 17:65fb4afe4991 599 Callback<int16_t()> functionUnderTest,
whismanoid 17:65fb4afe4991 600 int16_t expect_result)
whismanoid 17:65fb4afe4991 601 {
whismanoid 17:65fb4afe4991 602 int16_t actual_result = functionUnderTest();
whismanoid 17:65fb4afe4991 603 if ((int16_t)(actual_result & mask) != (int16_t)(expect_result & mask)) // FunctionCall_md_Expect
whismanoid 16:bb4b003a5cd2 604 {
whismanoid 16:bb4b003a5cd2 605 FAIL();
whismanoid 16:bb4b003a5cd2 606 associatedCmdLine.serial().printf("%s()", nameOfFunctionUnderTest);
whismanoid 16:bb4b003a5cd2 607 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 16:bb4b003a5cd2 608 associatedCmdLine.serial().printf(" but got %d", actual_result);
whismanoid 16:bb4b003a5cd2 609 return false;
whismanoid 16:bb4b003a5cd2 610 }
whismanoid 16:bb4b003a5cd2 611 else
whismanoid 16:bb4b003a5cd2 612 {
whismanoid 16:bb4b003a5cd2 613 PASS();
whismanoid 16:bb4b003a5cd2 614 associatedCmdLine.serial().printf("%s()", nameOfFunctionUnderTest);
whismanoid 16:bb4b003a5cd2 615 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 16:bb4b003a5cd2 616 return true;
whismanoid 16:bb4b003a5cd2 617 }
whismanoid 16:bb4b003a5cd2 618 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 16:bb4b003a5cd2 619 }
whismanoid 16:bb4b003a5cd2 620
whismanoid 16:bb4b003a5cd2 621 /** Test a software function
whismanoid 16:bb4b003a5cd2 622 *
whismanoid 16:bb4b003a5cd2 623 * @param[in] nameOfFunctionUnderTest is the user-facing name of the function under test
whismanoid 16:bb4b003a5cd2 624 *
whismanoid 16:bb4b003a5cd2 625 * @param[in] functionUnderTest points to the function under test
whismanoid 16:bb4b003a5cd2 626 *
whismanoid 16:bb4b003a5cd2 627 * @param[in] expect_result contains the expected result
whismanoid 16:bb4b003a5cd2 628 *
whismanoid 16:bb4b003a5cd2 629 * @post nPass and nFail counters are updated
whismanoid 16:bb4b003a5cd2 630 *
whismanoid 16:bb4b003a5cd2 631 * @return true if success, false if test failed
whismanoid 16:bb4b003a5cd2 632 *
whismanoid 16:bb4b003a5cd2 633 */
whismanoid 12:55db0f4a417d 634 bool MaximTinyTester::FunctionCall_su_Expect(const char *nameOfFunctionUnderTest,
whismanoid 8:9171f0ab3c17 635 Callback<uint8_t()> functionUnderTest,
whismanoid 8:9171f0ab3c17 636 uint8_t expect_result)
whismanoid 8:9171f0ab3c17 637 {
whismanoid 8:9171f0ab3c17 638 uint8_t actual_result = functionUnderTest();
whismanoid 17:65fb4afe4991 639 if ((uint8_t)(actual_result & mask) != (uint8_t)(expect_result & mask)) // FunctionCall_su_Expect
whismanoid 8:9171f0ab3c17 640 {
whismanoid 8:9171f0ab3c17 641 FAIL();
whismanoid 8:9171f0ab3c17 642 associatedCmdLine.serial().printf("%s()", nameOfFunctionUnderTest);
whismanoid 8:9171f0ab3c17 643 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 8:9171f0ab3c17 644 associatedCmdLine.serial().printf(" but got %d", actual_result);
whismanoid 8:9171f0ab3c17 645 return false;
whismanoid 8:9171f0ab3c17 646 }
whismanoid 8:9171f0ab3c17 647 else
whismanoid 8:9171f0ab3c17 648 {
whismanoid 8:9171f0ab3c17 649 PASS();
whismanoid 8:9171f0ab3c17 650 associatedCmdLine.serial().printf("%s()", nameOfFunctionUnderTest);
whismanoid 8:9171f0ab3c17 651 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 8:9171f0ab3c17 652 return true;
whismanoid 8:9171f0ab3c17 653 }
whismanoid 8:9171f0ab3c17 654 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 8:9171f0ab3c17 655 }
whismanoid 8:9171f0ab3c17 656
whismanoid 8:9171f0ab3c17 657 /** Test a software function
whismanoid 8:9171f0ab3c17 658 *
whismanoid 8:9171f0ab3c17 659 * @param[in] nameOfFunctionUnderTest is the user-facing name of the function under test
whismanoid 8:9171f0ab3c17 660 *
whismanoid 8:9171f0ab3c17 661 * @param[in] functionUnderTest points to the function under test
whismanoid 8:9171f0ab3c17 662 *
whismanoid 7:5b40b6370f8a 663 * @param[in] arg_1 is a test argument given to the function under test
whismanoid 7:5b40b6370f8a 664 *
whismanoid 7:5b40b6370f8a 665 * @param[in] expect_result contains the expected result
whismanoid 7:5b40b6370f8a 666 *
whismanoid 7:5b40b6370f8a 667 * @post nPass and nFail counters are updated
whismanoid 7:5b40b6370f8a 668 *
whismanoid 7:5b40b6370f8a 669 * @return true if success, false if test failed
whismanoid 7:5b40b6370f8a 670 *
whismanoid 7:5b40b6370f8a 671 */
whismanoid 12:55db0f4a417d 672 bool MaximTinyTester::FunctionCall_su_su_Expect(const char *nameOfFunctionUnderTest,
whismanoid 12:55db0f4a417d 673 Callback<uint8_t(uint8_t)> functionUnderTest,
whismanoid 12:55db0f4a417d 674 uint8_t arg_1,
whismanoid 12:55db0f4a417d 675 uint8_t expect_result)
whismanoid 12:55db0f4a417d 676 {
whismanoid 12:55db0f4a417d 677 uint8_t actual_result = functionUnderTest(arg_1);
whismanoid 17:65fb4afe4991 678 if ((uint8_t)(actual_result & mask) != (uint8_t)(expect_result & mask)) // FunctionCall_su_su_Expect
whismanoid 12:55db0f4a417d 679 {
whismanoid 12:55db0f4a417d 680 FAIL();
whismanoid 12:55db0f4a417d 681 associatedCmdLine.serial().printf("%s(%d)", nameOfFunctionUnderTest, arg_1);
whismanoid 12:55db0f4a417d 682 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 12:55db0f4a417d 683 associatedCmdLine.serial().printf(" but got %d", actual_result);
whismanoid 12:55db0f4a417d 684 return false;
whismanoid 12:55db0f4a417d 685 }
whismanoid 12:55db0f4a417d 686 else
whismanoid 12:55db0f4a417d 687 {
whismanoid 12:55db0f4a417d 688 PASS();
whismanoid 12:55db0f4a417d 689 associatedCmdLine.serial().printf("%s(%d)", nameOfFunctionUnderTest, arg_1);
whismanoid 12:55db0f4a417d 690 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 12:55db0f4a417d 691 return true;
whismanoid 12:55db0f4a417d 692 }
whismanoid 12:55db0f4a417d 693 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 12:55db0f4a417d 694 }
whismanoid 12:55db0f4a417d 695
whismanoid 12:55db0f4a417d 696 /** Test a software function
whismanoid 12:55db0f4a417d 697 *
whismanoid 12:55db0f4a417d 698 * @param[in] nameOfFunctionUnderTest is the user-facing name of the function under test
whismanoid 12:55db0f4a417d 699 *
whismanoid 12:55db0f4a417d 700 * @param[in] functionUnderTest points to the function under test
whismanoid 12:55db0f4a417d 701 *
whismanoid 12:55db0f4a417d 702 * @param[in] arg_1 is a test argument given to the function under test
whismanoid 12:55db0f4a417d 703 *
whismanoid 12:55db0f4a417d 704 * @param[in] expect_result contains the expected result
whismanoid 12:55db0f4a417d 705 *
whismanoid 12:55db0f4a417d 706 * @post nPass and nFail counters are updated
whismanoid 12:55db0f4a417d 707 *
whismanoid 12:55db0f4a417d 708 * @return true if success, false if test failed
whismanoid 12:55db0f4a417d 709 *
whismanoid 12:55db0f4a417d 710 */
whismanoid 12:55db0f4a417d 711 bool MaximTinyTester::FunctionCall_su_d_Expect(const char *nameOfFunctionUnderTest,
whismanoid 10:b11ab5d7ac58 712 Callback<uint8_t(int)> functionUnderTest,
whismanoid 10:b11ab5d7ac58 713 int arg_1,
whismanoid 7:5b40b6370f8a 714 uint8_t expect_result)
whismanoid 7:5b40b6370f8a 715 {
whismanoid 7:5b40b6370f8a 716 uint8_t actual_result = functionUnderTest(arg_1);
whismanoid 17:65fb4afe4991 717 if ((uint8_t)(actual_result & mask) != (uint8_t)(expect_result & mask)) // FunctionCall_su_d_Expect
whismanoid 7:5b40b6370f8a 718 {
whismanoid 7:5b40b6370f8a 719 FAIL();
whismanoid 7:5b40b6370f8a 720 associatedCmdLine.serial().printf("%s(%d)", nameOfFunctionUnderTest, arg_1);
whismanoid 7:5b40b6370f8a 721 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 7:5b40b6370f8a 722 associatedCmdLine.serial().printf(" but got %d", actual_result);
whismanoid 7:5b40b6370f8a 723 return false;
whismanoid 7:5b40b6370f8a 724 }
whismanoid 7:5b40b6370f8a 725 else
whismanoid 7:5b40b6370f8a 726 {
whismanoid 7:5b40b6370f8a 727 PASS();
whismanoid 7:5b40b6370f8a 728 associatedCmdLine.serial().printf("%s(%d)", nameOfFunctionUnderTest, arg_1);
whismanoid 7:5b40b6370f8a 729 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 7:5b40b6370f8a 730 return true;
whismanoid 7:5b40b6370f8a 731 }
whismanoid 7:5b40b6370f8a 732 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 7:5b40b6370f8a 733 }
whismanoid 7:5b40b6370f8a 734
whismanoid 7:5b40b6370f8a 735 /** Test a software function
whismanoid 7:5b40b6370f8a 736 *
whismanoid 7:5b40b6370f8a 737 * @param[in] nameOfFunctionUnderTest is the user-facing name of the function under test
whismanoid 7:5b40b6370f8a 738 *
whismanoid 7:5b40b6370f8a 739 * @param[in] functionUnderTest points to the function under test
whismanoid 7:5b40b6370f8a 740 *
whismanoid 7:5b40b6370f8a 741 * @param[in] arg_1 is a test argument given to the function under test
whismanoid 7:5b40b6370f8a 742 * @param[in] arg_2 is a test argument given to the function under test
whismanoid 7:5b40b6370f8a 743 *
whismanoid 7:5b40b6370f8a 744 * @param[in] expect_result contains the expected result
whismanoid 7:5b40b6370f8a 745 *
whismanoid 7:5b40b6370f8a 746 * @post nPass and nFail counters are updated
whismanoid 7:5b40b6370f8a 747 *
whismanoid 7:5b40b6370f8a 748 * @return true if success, false if test failed
whismanoid 7:5b40b6370f8a 749 *
whismanoid 7:5b40b6370f8a 750 */
whismanoid 12:55db0f4a417d 751 bool MaximTinyTester::FunctionCall_su_su_su_Expect(const char *nameOfFunctionUnderTest,
whismanoid 12:55db0f4a417d 752 Callback<uint8_t(uint8_t, uint8_t)> functionUnderTest,
whismanoid 12:55db0f4a417d 753 uint8_t arg_1,
whismanoid 12:55db0f4a417d 754 uint8_t arg_2,
whismanoid 12:55db0f4a417d 755 uint8_t expect_result)
whismanoid 12:55db0f4a417d 756 {
whismanoid 12:55db0f4a417d 757 uint8_t actual_result = functionUnderTest(arg_1, arg_2);
whismanoid 17:65fb4afe4991 758 if ((uint8_t)(actual_result & mask) != (uint8_t)(expect_result & mask)) // FunctionCall_su_su_su_Expect
whismanoid 12:55db0f4a417d 759 {
whismanoid 12:55db0f4a417d 760 FAIL();
whismanoid 12:55db0f4a417d 761 associatedCmdLine.serial().printf("%s(%d,%d)", nameOfFunctionUnderTest, arg_1, arg_2);
whismanoid 12:55db0f4a417d 762 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 12:55db0f4a417d 763 associatedCmdLine.serial().printf(" but got %d", actual_result);
whismanoid 12:55db0f4a417d 764 return false;
whismanoid 12:55db0f4a417d 765 }
whismanoid 12:55db0f4a417d 766 else
whismanoid 12:55db0f4a417d 767 {
whismanoid 12:55db0f4a417d 768 PASS();
whismanoid 12:55db0f4a417d 769 associatedCmdLine.serial().printf("%s(%d,%d)", nameOfFunctionUnderTest, arg_1, arg_2);
whismanoid 12:55db0f4a417d 770 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 12:55db0f4a417d 771 return true;
whismanoid 12:55db0f4a417d 772 }
whismanoid 12:55db0f4a417d 773 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 12:55db0f4a417d 774 }
whismanoid 12:55db0f4a417d 775
whismanoid 12:55db0f4a417d 776 /** Test a software function
whismanoid 12:55db0f4a417d 777 *
whismanoid 12:55db0f4a417d 778 * @param[in] nameOfFunctionUnderTest is the user-facing name of the function under test
whismanoid 12:55db0f4a417d 779 *
whismanoid 12:55db0f4a417d 780 * @param[in] functionUnderTest points to the function under test
whismanoid 12:55db0f4a417d 781 *
whismanoid 12:55db0f4a417d 782 * @param[in] arg_1 is a test argument given to the function under test
whismanoid 12:55db0f4a417d 783 * @param[in] arg_2 is a test argument given to the function under test
whismanoid 12:55db0f4a417d 784 *
whismanoid 12:55db0f4a417d 785 * @param[in] expect_result contains the expected result
whismanoid 12:55db0f4a417d 786 *
whismanoid 12:55db0f4a417d 787 * @post nPass and nFail counters are updated
whismanoid 12:55db0f4a417d 788 *
whismanoid 12:55db0f4a417d 789 * @return true if success, false if test failed
whismanoid 12:55db0f4a417d 790 *
whismanoid 12:55db0f4a417d 791 */
whismanoid 12:55db0f4a417d 792 bool MaximTinyTester::FunctionCall_su_d_d_Expect(const char *nameOfFunctionUnderTest,
whismanoid 10:b11ab5d7ac58 793 Callback<uint8_t(int, int)> functionUnderTest,
whismanoid 10:b11ab5d7ac58 794 int arg_1,
whismanoid 10:b11ab5d7ac58 795 int arg_2,
whismanoid 7:5b40b6370f8a 796 uint8_t expect_result)
whismanoid 7:5b40b6370f8a 797 {
whismanoid 7:5b40b6370f8a 798 uint8_t actual_result = functionUnderTest(arg_1, arg_2);
whismanoid 17:65fb4afe4991 799 if ((uint8_t)(actual_result & mask) != (uint8_t)(expect_result & mask)) // FunctionCall_su_d_d_Expect
whismanoid 7:5b40b6370f8a 800 {
whismanoid 7:5b40b6370f8a 801 FAIL();
whismanoid 7:5b40b6370f8a 802 associatedCmdLine.serial().printf("%s(%d,%d)", nameOfFunctionUnderTest, arg_1, arg_2);
whismanoid 7:5b40b6370f8a 803 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 7:5b40b6370f8a 804 associatedCmdLine.serial().printf(" but got %d", actual_result);
whismanoid 7:5b40b6370f8a 805 return false;
whismanoid 7:5b40b6370f8a 806 }
whismanoid 7:5b40b6370f8a 807 else
whismanoid 7:5b40b6370f8a 808 {
whismanoid 7:5b40b6370f8a 809 PASS();
whismanoid 7:5b40b6370f8a 810 associatedCmdLine.serial().printf("%s(%d,%d)", nameOfFunctionUnderTest, arg_1, arg_2);
whismanoid 7:5b40b6370f8a 811 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 7:5b40b6370f8a 812 return true;
whismanoid 7:5b40b6370f8a 813 }
whismanoid 7:5b40b6370f8a 814 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 7:5b40b6370f8a 815 }
whismanoid 7:5b40b6370f8a 816
whismanoid 12:55db0f4a417d 817 /** Test a software function
whismanoid 12:55db0f4a417d 818 *
whismanoid 12:55db0f4a417d 819 * @param[in] nameOfFunctionUnderTest is the user-facing name of the function under test
whismanoid 12:55db0f4a417d 820 *
whismanoid 12:55db0f4a417d 821 * @param[in] functionUnderTest points to the function under test
whismanoid 12:55db0f4a417d 822 *
whismanoid 12:55db0f4a417d 823 * @param[in] arg_1 is a test argument given to the function under test
whismanoid 12:55db0f4a417d 824 * @param[in] arg_2 is a test argument given to the function under test
whismanoid 12:55db0f4a417d 825 *
whismanoid 12:55db0f4a417d 826 * @param[in] expect_result contains the expected result
whismanoid 12:55db0f4a417d 827 *
whismanoid 12:55db0f4a417d 828 * @post nPass and nFail counters are updated
whismanoid 12:55db0f4a417d 829 *
whismanoid 12:55db0f4a417d 830 * @return true if success, false if test failed
whismanoid 12:55db0f4a417d 831 *
whismanoid 12:55db0f4a417d 832 */
whismanoid 12:55db0f4a417d 833 bool MaximTinyTester::FunctionCall_su_d_lu_Expect(const char *nameOfFunctionUnderTest,
whismanoid 12:55db0f4a417d 834 Callback<uint8_t(int, uint32_t)> functionUnderTest,
whismanoid 12:55db0f4a417d 835 int arg_1,
whismanoid 12:55db0f4a417d 836 uint32_t arg_2,
whismanoid 12:55db0f4a417d 837 uint8_t expect_result)
whismanoid 12:55db0f4a417d 838 {
whismanoid 12:55db0f4a417d 839 uint8_t actual_result = functionUnderTest(arg_1, arg_2);
whismanoid 17:65fb4afe4991 840 if ((uint8_t)(actual_result & mask) != (uint8_t)(expect_result & mask)) // FunctionCall_su_d_lu_Expect
whismanoid 12:55db0f4a417d 841 {
whismanoid 12:55db0f4a417d 842 FAIL();
whismanoid 13:c294236d7465 843 associatedCmdLine.serial().printf("%s(%d,%ld)", nameOfFunctionUnderTest, arg_1, arg_2);
whismanoid 12:55db0f4a417d 844 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 12:55db0f4a417d 845 associatedCmdLine.serial().printf(" but got %d", actual_result);
whismanoid 12:55db0f4a417d 846 return false;
whismanoid 12:55db0f4a417d 847 }
whismanoid 12:55db0f4a417d 848 else
whismanoid 12:55db0f4a417d 849 {
whismanoid 12:55db0f4a417d 850 PASS();
whismanoid 13:c294236d7465 851 associatedCmdLine.serial().printf("%s(%d,%ld)", nameOfFunctionUnderTest, arg_1, arg_2);
whismanoid 12:55db0f4a417d 852 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 12:55db0f4a417d 853 return true;
whismanoid 12:55db0f4a417d 854 }
whismanoid 12:55db0f4a417d 855 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 12:55db0f4a417d 856 }
whismanoid 12:55db0f4a417d 857
whismanoid 12:55db0f4a417d 858 bool MaximTinyTester::FunctionCall_su_d_plu_Expect(const char *nameOfFunctionUnderTest,
whismanoid 10:b11ab5d7ac58 859 Callback<uint8_t(int, uint32_t*)> functionUnderTest,
whismanoid 10:b11ab5d7ac58 860 int arg_1,
whismanoid 10:b11ab5d7ac58 861 uint32_t* arg_2,
whismanoid 10:b11ab5d7ac58 862 uint8_t expect_result,
whismanoid 10:b11ab5d7ac58 863 uint32_t expect_buffer)
whismanoid 10:b11ab5d7ac58 864 {
whismanoid 10:b11ab5d7ac58 865 uint8_t actual_result = functionUnderTest(arg_1, arg_2);
whismanoid 10:b11ab5d7ac58 866 uint32_t actual_buffer = *arg_2;
whismanoid 10:b11ab5d7ac58 867 if ((actual_result != expect_result) || (actual_buffer != expect_buffer))
whismanoid 10:b11ab5d7ac58 868 {
whismanoid 10:b11ab5d7ac58 869 FAIL();
whismanoid 10:b11ab5d7ac58 870 associatedCmdLine.serial().printf("%s(%d,buf)", nameOfFunctionUnderTest, arg_1);
whismanoid 10:b11ab5d7ac58 871 //associatedCmdLine.serial().print(nameOfFunctionUnderTest);
whismanoid 10:b11ab5d7ac58 872 //associatedCmdLine.serial().print("(");
whismanoid 10:b11ab5d7ac58 873 //associatedCmdLine.serial().print(arg_1);
whismanoid 10:b11ab5d7ac58 874 //associatedCmdLine.serial().print(F(",buf)"));
whismanoid 13:c294236d7465 875 associatedCmdLine.serial().printf(" expect %d buf=%ld", expect_result, expect_buffer);
whismanoid 10:b11ab5d7ac58 876 //associatedCmdLine.serial().print(F(" expect "));
whismanoid 10:b11ab5d7ac58 877 //associatedCmdLine.serial().print(expect_result);
whismanoid 10:b11ab5d7ac58 878 //associatedCmdLine.serial().print(F(" buf="));
whismanoid 10:b11ab5d7ac58 879 //associatedCmdLine.serial().print(expect_buffer);
whismanoid 13:c294236d7465 880 associatedCmdLine.serial().printf(" but got %d buf=%ld", actual_result, actual_buffer);
whismanoid 10:b11ab5d7ac58 881 //associatedCmdLine.serial().print(F(" but got "));
whismanoid 10:b11ab5d7ac58 882 //associatedCmdLine.serial().print(actual_result);
whismanoid 10:b11ab5d7ac58 883 //associatedCmdLine.serial().print(F(" buf="));
whismanoid 10:b11ab5d7ac58 884 //associatedCmdLine.serial().print(actual_buffer);
whismanoid 10:b11ab5d7ac58 885 return false;
whismanoid 10:b11ab5d7ac58 886 }
whismanoid 10:b11ab5d7ac58 887 else
whismanoid 10:b11ab5d7ac58 888 {
whismanoid 10:b11ab5d7ac58 889 PASS();
whismanoid 10:b11ab5d7ac58 890 associatedCmdLine.serial().printf("%s(%d,buf)", nameOfFunctionUnderTest, arg_1);
whismanoid 10:b11ab5d7ac58 891 //associatedCmdLine.serial().print(nameOfFunctionUnderTest);
whismanoid 10:b11ab5d7ac58 892 //associatedCmdLine.serial().print("(");
whismanoid 10:b11ab5d7ac58 893 //associatedCmdLine.serial().print(arg_1);
whismanoid 10:b11ab5d7ac58 894 //associatedCmdLine.serial().print(F(",buf)"));
whismanoid 13:c294236d7465 895 associatedCmdLine.serial().printf(" expect %d buf=%ld", expect_result, expect_buffer);
whismanoid 10:b11ab5d7ac58 896 //associatedCmdLine.serial().print(F(" expect "));
whismanoid 10:b11ab5d7ac58 897 //associatedCmdLine.serial().print(expect_result);
whismanoid 10:b11ab5d7ac58 898 //associatedCmdLine.serial().print(F(" buf="));
whismanoid 10:b11ab5d7ac58 899 //associatedCmdLine.serial().print(expect_buffer);
whismanoid 10:b11ab5d7ac58 900 return true;
whismanoid 10:b11ab5d7ac58 901 }
whismanoid 10:b11ab5d7ac58 902 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 10:b11ab5d7ac58 903 }
whismanoid 10:b11ab5d7ac58 904
whismanoid 7:5b40b6370f8a 905 /** Test a software function
whismanoid 7:5b40b6370f8a 906 *
whismanoid 7:5b40b6370f8a 907 * @param[in] nameOfFunctionUnderTest is the user-facing name of the function under test
whismanoid 7:5b40b6370f8a 908 *
whismanoid 7:5b40b6370f8a 909 * @param[in] functionUnderTest points to the function under test
whismanoid 7:5b40b6370f8a 910 *
whismanoid 7:5b40b6370f8a 911 * @param[in] arg_1 is a test argument given to the function under test
whismanoid 7:5b40b6370f8a 912 * @param[in] arg_2 is a test argument given to the function under test
whismanoid 7:5b40b6370f8a 913 * @param[in] arg_3 is a test argument given to the function under test
whismanoid 7:5b40b6370f8a 914 *
whismanoid 7:5b40b6370f8a 915 * @param[in] expect_result contains the expected result
whismanoid 7:5b40b6370f8a 916 *
whismanoid 7:5b40b6370f8a 917 * @post nPass and nFail counters are updated
whismanoid 7:5b40b6370f8a 918 *
whismanoid 7:5b40b6370f8a 919 * @return true if success, false if test failed
whismanoid 7:5b40b6370f8a 920 *
whismanoid 7:5b40b6370f8a 921 */
whismanoid 12:55db0f4a417d 922 bool MaximTinyTester::FunctionCall_su_su_su_su_Expect(const char *nameOfFunctionUnderTest,
whismanoid 7:5b40b6370f8a 923 Callback<uint8_t(uint8_t, uint8_t, uint8_t)> functionUnderTest,
whismanoid 7:5b40b6370f8a 924 uint8_t arg_1,
whismanoid 7:5b40b6370f8a 925 uint8_t arg_2,
whismanoid 7:5b40b6370f8a 926 uint8_t arg_3,
whismanoid 7:5b40b6370f8a 927 uint8_t expect_result)
whismanoid 7:5b40b6370f8a 928 {
whismanoid 7:5b40b6370f8a 929 uint8_t actual_result = functionUnderTest(arg_1, arg_2, arg_3);
whismanoid 17:65fb4afe4991 930 if ((uint8_t)(actual_result & mask) != (uint8_t)(expect_result & mask)) // FunctionCall_su_su_su_su_Expect
whismanoid 7:5b40b6370f8a 931 {
whismanoid 7:5b40b6370f8a 932 FAIL();
whismanoid 7:5b40b6370f8a 933 associatedCmdLine.serial().printf("%s(%d,%d,%d)", nameOfFunctionUnderTest, arg_1, arg_2, arg_3);
whismanoid 7:5b40b6370f8a 934 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 7:5b40b6370f8a 935 associatedCmdLine.serial().printf(" but got %d", actual_result);
whismanoid 7:5b40b6370f8a 936 return false;
whismanoid 7:5b40b6370f8a 937 }
whismanoid 7:5b40b6370f8a 938 else
whismanoid 7:5b40b6370f8a 939 {
whismanoid 7:5b40b6370f8a 940 PASS();
whismanoid 7:5b40b6370f8a 941 associatedCmdLine.serial().printf("%s(%d,%d,%d)", nameOfFunctionUnderTest, arg_1, arg_2, arg_3);
whismanoid 7:5b40b6370f8a 942 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 7:5b40b6370f8a 943 return true;
whismanoid 7:5b40b6370f8a 944 }
whismanoid 7:5b40b6370f8a 945 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 7:5b40b6370f8a 946 }
whismanoid 7:5b40b6370f8a 947
whismanoid 7:5b40b6370f8a 948 /** Test a software function
whismanoid 7:5b40b6370f8a 949 *
whismanoid 7:5b40b6370f8a 950 * @param[in] nameOfFunctionUnderTest is the user-facing name of the function under test
whismanoid 7:5b40b6370f8a 951 *
whismanoid 7:5b40b6370f8a 952 * @param[in] functionUnderTest points to the function under test
whismanoid 7:5b40b6370f8a 953 *
whismanoid 7:5b40b6370f8a 954 * @param[in] arg_1 is a test argument given to the function under test
whismanoid 7:5b40b6370f8a 955 * @param[in] arg_2 is a test argument given to the function under test
whismanoid 7:5b40b6370f8a 956 * @param[in] arg_3 is a test argument given to the function under test
whismanoid 7:5b40b6370f8a 957 * @param[in] arg_4 is a test argument given to the function under test
whismanoid 7:5b40b6370f8a 958 *
whismanoid 7:5b40b6370f8a 959 * @param[in] expect_result contains the expected result
whismanoid 7:5b40b6370f8a 960 *
whismanoid 7:5b40b6370f8a 961 * @post nPass and nFail counters are updated
whismanoid 7:5b40b6370f8a 962 *
whismanoid 7:5b40b6370f8a 963 * @return true if success, false if test failed
whismanoid 7:5b40b6370f8a 964 *
whismanoid 7:5b40b6370f8a 965 */
whismanoid 12:55db0f4a417d 966 bool MaximTinyTester::FunctionCall_su_su_su_su_su_Expect(const char *nameOfFunctionUnderTest,
whismanoid 7:5b40b6370f8a 967 Callback<uint8_t(uint8_t, uint8_t, uint8_t, uint8_t)> functionUnderTest,
whismanoid 7:5b40b6370f8a 968 uint8_t arg_1,
whismanoid 7:5b40b6370f8a 969 uint8_t arg_2,
whismanoid 7:5b40b6370f8a 970 uint8_t arg_3,
whismanoid 7:5b40b6370f8a 971 uint8_t arg_4,
whismanoid 7:5b40b6370f8a 972 uint8_t expect_result)
whismanoid 7:5b40b6370f8a 973 {
whismanoid 7:5b40b6370f8a 974 uint8_t actual_result = functionUnderTest(arg_1, arg_2, arg_3, arg_4);
whismanoid 17:65fb4afe4991 975 if ((uint8_t)(actual_result & mask) != (uint8_t)(expect_result & mask)) // FunctionCall_su_su_su_su_su_Expect
whismanoid 7:5b40b6370f8a 976 {
whismanoid 7:5b40b6370f8a 977 FAIL();
whismanoid 7:5b40b6370f8a 978 associatedCmdLine.serial().printf("%s(%d,%d,%d,%d)", nameOfFunctionUnderTest, arg_1, arg_2, arg_3, arg_4);
whismanoid 7:5b40b6370f8a 979 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 7:5b40b6370f8a 980 associatedCmdLine.serial().printf(" but got %d", actual_result);
whismanoid 7:5b40b6370f8a 981 return false;
whismanoid 7:5b40b6370f8a 982 }
whismanoid 7:5b40b6370f8a 983 else
whismanoid 7:5b40b6370f8a 984 {
whismanoid 7:5b40b6370f8a 985 PASS();
whismanoid 7:5b40b6370f8a 986 associatedCmdLine.serial().printf("%s(%d,%d,%d,%d)", nameOfFunctionUnderTest, arg_1, arg_2, arg_3, arg_4);
whismanoid 7:5b40b6370f8a 987 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 7:5b40b6370f8a 988 return true;
whismanoid 7:5b40b6370f8a 989 }
whismanoid 7:5b40b6370f8a 990 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 7:5b40b6370f8a 991 }
whismanoid 7:5b40b6370f8a 992
whismanoid 7:5b40b6370f8a 993 /** Test a software function
whismanoid 7:5b40b6370f8a 994 *
whismanoid 7:5b40b6370f8a 995 * @param[in] nameOfFunctionUnderTest is the user-facing name of the function under test
whismanoid 7:5b40b6370f8a 996 *
whismanoid 7:5b40b6370f8a 997 * @param[in] functionUnderTest points to the function under test
whismanoid 7:5b40b6370f8a 998 *
whismanoid 7:5b40b6370f8a 999 * @param[in] arg_1 is a test argument given to the function under test
whismanoid 7:5b40b6370f8a 1000 * @param[in] arg_2 is a test argument given to the function under test
whismanoid 7:5b40b6370f8a 1001 * @param[in] arg_3 is a test argument given to the function under test
whismanoid 7:5b40b6370f8a 1002 * @param[in] arg_4 is a test argument given to the function under test
whismanoid 7:5b40b6370f8a 1003 * @param[in] arg_5 is a test argument given to the function under test
whismanoid 7:5b40b6370f8a 1004 *
whismanoid 7:5b40b6370f8a 1005 * @param[in] expect_result contains the expected result
whismanoid 7:5b40b6370f8a 1006 *
whismanoid 7:5b40b6370f8a 1007 * @post nPass and nFail counters are updated
whismanoid 7:5b40b6370f8a 1008 *
whismanoid 7:5b40b6370f8a 1009 * @return true if success, false if test failed
whismanoid 7:5b40b6370f8a 1010 *
whismanoid 7:5b40b6370f8a 1011 */
whismanoid 12:55db0f4a417d 1012 bool MaximTinyTester::FunctionCall_su_su_su_su_su_su_Expect(const char *nameOfFunctionUnderTest,
whismanoid 7:5b40b6370f8a 1013 Callback<uint8_t(uint8_t, uint8_t, uint8_t, uint8_t, uint8_t)> functionUnderTest,
whismanoid 7:5b40b6370f8a 1014 uint8_t arg_1,
whismanoid 7:5b40b6370f8a 1015 uint8_t arg_2,
whismanoid 7:5b40b6370f8a 1016 uint8_t arg_3,
whismanoid 7:5b40b6370f8a 1017 uint8_t arg_4,
whismanoid 7:5b40b6370f8a 1018 uint8_t arg_5,
whismanoid 7:5b40b6370f8a 1019 uint8_t expect_result)
whismanoid 7:5b40b6370f8a 1020 {
whismanoid 7:5b40b6370f8a 1021 uint8_t actual_result = functionUnderTest(arg_1, arg_2, arg_3, arg_4, arg_5);
whismanoid 17:65fb4afe4991 1022 if ((uint8_t)(actual_result & mask) != (uint8_t)(expect_result & mask)) // FunctionCall_su_su_su_su_su_su_Expect
whismanoid 7:5b40b6370f8a 1023 {
whismanoid 7:5b40b6370f8a 1024 FAIL();
whismanoid 7:5b40b6370f8a 1025 associatedCmdLine.serial().printf("%s(%d,%d,%d,%d,%d)", nameOfFunctionUnderTest, arg_1, arg_2, arg_3, arg_4, arg_5);
whismanoid 7:5b40b6370f8a 1026 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 7:5b40b6370f8a 1027 associatedCmdLine.serial().printf(" but got %d", actual_result);
whismanoid 7:5b40b6370f8a 1028 return false;
whismanoid 7:5b40b6370f8a 1029 }
whismanoid 7:5b40b6370f8a 1030 else
whismanoid 7:5b40b6370f8a 1031 {
whismanoid 7:5b40b6370f8a 1032 PASS();
whismanoid 7:5b40b6370f8a 1033 associatedCmdLine.serial().printf("%s(%d,%d,%d,%d,%d)", nameOfFunctionUnderTest, arg_1, arg_2, arg_3, arg_4, arg_5);
whismanoid 7:5b40b6370f8a 1034 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 7:5b40b6370f8a 1035 return true;
whismanoid 7:5b40b6370f8a 1036 }
whismanoid 7:5b40b6370f8a 1037 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 7:5b40b6370f8a 1038 }
whismanoid 7:5b40b6370f8a 1039
whismanoid 7:5b40b6370f8a 1040 // TODO1 #167 support callback<uint8_t(uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t)>
whismanoid 7:5b40b6370f8a 1041 /** Test a software function
whismanoid 7:5b40b6370f8a 1042 *
whismanoid 7:5b40b6370f8a 1043 * @param[in] nameOfFunctionUnderTest is the user-facing name of the function under test
whismanoid 7:5b40b6370f8a 1044 *
whismanoid 7:5b40b6370f8a 1045 * @param[in] functionUnderTest points to the function under test
whismanoid 7:5b40b6370f8a 1046 *
whismanoid 7:5b40b6370f8a 1047 * @param[in] arg_1 is a test argument given to the function under test
whismanoid 7:5b40b6370f8a 1048 * @param[in] arg_2 is a test argument given to the function under test
whismanoid 7:5b40b6370f8a 1049 * @param[in] arg_3 is a test argument given to the function under test
whismanoid 7:5b40b6370f8a 1050 * @param[in] arg_4 is a test argument given to the function under test
whismanoid 7:5b40b6370f8a 1051 * @param[in] arg_5 is a test argument given to the function under test
whismanoid 7:5b40b6370f8a 1052 * @param[in] arg_6 is a test argument given to the function under test
whismanoid 7:5b40b6370f8a 1053 *
whismanoid 7:5b40b6370f8a 1054 * @param[in] expect_result contains the expected result
whismanoid 7:5b40b6370f8a 1055 *
whismanoid 7:5b40b6370f8a 1056 * @post nPass and nFail counters are updated
whismanoid 7:5b40b6370f8a 1057 *
whismanoid 7:5b40b6370f8a 1058 * @return true if success, false if test failed
whismanoid 7:5b40b6370f8a 1059 *
whismanoid 7:5b40b6370f8a 1060 */
whismanoid 12:55db0f4a417d 1061 //bool MaximTinyTester::FunctionCall_su_su_su_su_su_su_su_Expect(const char *nameOfFunctionUnderTest,
whismanoid 7:5b40b6370f8a 1062 // Callback<uint8_t(uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t)> functionUnderTest,
whismanoid 7:5b40b6370f8a 1063 // uint8_t arg_1,
whismanoid 7:5b40b6370f8a 1064 // uint8_t arg_2,
whismanoid 7:5b40b6370f8a 1065 // uint8_t arg_3,
whismanoid 7:5b40b6370f8a 1066 // uint8_t arg_4,
whismanoid 7:5b40b6370f8a 1067 // uint8_t arg_5,
whismanoid 7:5b40b6370f8a 1068 // uint8_t arg_6,
whismanoid 7:5b40b6370f8a 1069 // uint8_t expect_result)
whismanoid 7:5b40b6370f8a 1070 //{
whismanoid 7:5b40b6370f8a 1071 // uint8_t actual_result = functionUnderTest(arg_1, arg_2, arg_3, arg_4, arg_5, arg_6);
whismanoid 7:5b40b6370f8a 1072 // if (actual_result != expect_result)
whismanoid 7:5b40b6370f8a 1073 // {
whismanoid 7:5b40b6370f8a 1074 // FAIL();
whismanoid 7:5b40b6370f8a 1075 // 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 1076 // associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 7:5b40b6370f8a 1077 // associatedCmdLine.serial().printf(" but got %d", actual_result);
whismanoid 7:5b40b6370f8a 1078 // return false;
whismanoid 7:5b40b6370f8a 1079 // }
whismanoid 7:5b40b6370f8a 1080 // else
whismanoid 7:5b40b6370f8a 1081 // {
whismanoid 7:5b40b6370f8a 1082 // PASS();
whismanoid 7:5b40b6370f8a 1083 // 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 1084 // associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 7:5b40b6370f8a 1085 // return true;
whismanoid 7:5b40b6370f8a 1086 // }
whismanoid 7:5b40b6370f8a 1087 // //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 7:5b40b6370f8a 1088 //}
whismanoid 7:5b40b6370f8a 1089
whismanoid 0:93d4119d3f14 1090 /** Test an analog voltage input to the platform (output from the device under test)
whismanoid 0:93d4119d3f14 1091 *
whismanoid 0:93d4119d3f14 1092 * @param[in] expect_result contains the expected voltage
whismanoid 0:93d4119d3f14 1093 *
whismanoid 0:93d4119d3f14 1094 * @pre err_threshold determines how closely the result must match the expected value
whismanoid 0:93d4119d3f14 1095 *
whismanoid 0:93d4119d3f14 1096 * @post nPass and nFail counters are updated
whismanoid 0:93d4119d3f14 1097 *
whismanoid 0:93d4119d3f14 1098 * @return true if success, false if test failed
whismanoid 0:93d4119d3f14 1099 *
whismanoid 0:93d4119d3f14 1100 */
whismanoid 0:93d4119d3f14 1101 bool MaximTinyTester::AnalogIn0_Read_Expect_voltageV(double expect_result)
whismanoid 0:93d4119d3f14 1102 {
whismanoid 0:93d4119d3f14 1103 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[0];
whismanoid 2:9b20cadbfa15 1104 // skip if expect_result exceeds ADC full scale
whismanoid 2:9b20cadbfa15 1105 if (adc_full_scale_voltage < expect_result)
whismanoid 2:9b20cadbfa15 1106 {
whismanoid 2:9b20cadbfa15 1107 // print a warning message that we can't perform the measurement
whismanoid 2:9b20cadbfa15 1108 associatedCmdLine.serial().printf("\r\n..... AIN full scale %1.3fV < expect %6.6f cannot perform measurement",
whismanoid 2:9b20cadbfa15 1109 adc_full_scale_voltage, expect_result);
whismanoid 2:9b20cadbfa15 1110 return true; // ignore, test conditions are invalid; do not call PASS() or FAIL()
whismanoid 2:9b20cadbfa15 1111 }
whismanoid 0:93d4119d3f14 1112
whismanoid 0:93d4119d3f14 1113 // TODO: tinyTester.Analog_Input_Expect_V replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 0:93d4119d3f14 1114 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 1115 float normValue_0_1 = analogInPin0.read();
whismanoid 0:93d4119d3f14 1116 double actual_result = normValue_0_1 * adc_full_scale_voltage;
whismanoid 0:93d4119d3f14 1117 double err_result = (actual_result - expect_result);
whismanoid 0:93d4119d3f14 1118 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 0:93d4119d3f14 1119 {
whismanoid 0:93d4119d3f14 1120 PASS();
whismanoid 0:93d4119d3f14 1121 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 1122 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 1123 associatedCmdLine.serial().printf("AIN0 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 1124 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 1125 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 1126 );
whismanoid 0:93d4119d3f14 1127 //
whismanoid 0:93d4119d3f14 1128 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 1129 return true;
whismanoid 0:93d4119d3f14 1130 }
whismanoid 0:93d4119d3f14 1131 else
whismanoid 0:93d4119d3f14 1132 {
whismanoid 0:93d4119d3f14 1133 FAIL();
whismanoid 0:93d4119d3f14 1134 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 1135 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 1136 associatedCmdLine.serial().printf("AIN0 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 1137 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 1138 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 1139 );
whismanoid 0:93d4119d3f14 1140 //
whismanoid 0:93d4119d3f14 1141 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 1142 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 0:93d4119d3f14 1143 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 0:93d4119d3f14 1144 }
whismanoid 0:93d4119d3f14 1145 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 0:93d4119d3f14 1146 return false;
whismanoid 0:93d4119d3f14 1147 }
whismanoid 0:93d4119d3f14 1148
whismanoid 0:93d4119d3f14 1149 /** Test an analog voltage input to the platform (output from the device under test)
whismanoid 0:93d4119d3f14 1150 *
whismanoid 0:93d4119d3f14 1151 * @param[in] expect_result contains the expected voltage
whismanoid 0:93d4119d3f14 1152 *
whismanoid 0:93d4119d3f14 1153 * @pre err_threshold determines how closely the result must match the expected value
whismanoid 0:93d4119d3f14 1154 *
whismanoid 0:93d4119d3f14 1155 * @post nPass and nFail counters are updated
whismanoid 0:93d4119d3f14 1156 *
whismanoid 0:93d4119d3f14 1157 * @return true if success, false if test failed
whismanoid 0:93d4119d3f14 1158 *
whismanoid 0:93d4119d3f14 1159 */
whismanoid 0:93d4119d3f14 1160 bool MaximTinyTester::AnalogIn1_Read_Expect_voltageV(double expect_result)
whismanoid 0:93d4119d3f14 1161 {
whismanoid 0:93d4119d3f14 1162 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[1];
whismanoid 2:9b20cadbfa15 1163 // skip if expect_result exceeds ADC full scale
whismanoid 2:9b20cadbfa15 1164 if (adc_full_scale_voltage < expect_result)
whismanoid 2:9b20cadbfa15 1165 {
whismanoid 2:9b20cadbfa15 1166 // print a warning message that we can't perform the measurement
whismanoid 2:9b20cadbfa15 1167 associatedCmdLine.serial().printf("\r\n..... AIN full scale %1.3fV < expect %6.6f cannot perform measurement",
whismanoid 2:9b20cadbfa15 1168 adc_full_scale_voltage, expect_result);
whismanoid 2:9b20cadbfa15 1169 return true; // ignore, test conditions are invalid; do not call PASS() or FAIL()
whismanoid 2:9b20cadbfa15 1170 }
whismanoid 0:93d4119d3f14 1171
whismanoid 0:93d4119d3f14 1172 // TODO: tinyTester.Analog_Input_Expect_V replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 0:93d4119d3f14 1173 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 1174 float normValue_0_1 = analogInPin1.read();
whismanoid 0:93d4119d3f14 1175 double actual_result = normValue_0_1 * adc_full_scale_voltage;
whismanoid 0:93d4119d3f14 1176 double err_result = (actual_result - expect_result);
whismanoid 0:93d4119d3f14 1177 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 0:93d4119d3f14 1178 {
whismanoid 0:93d4119d3f14 1179 PASS();
whismanoid 0:93d4119d3f14 1180 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 1181 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 1182 associatedCmdLine.serial().printf("AIN1 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 1183 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 1184 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 1185 );
whismanoid 0:93d4119d3f14 1186 //
whismanoid 0:93d4119d3f14 1187 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 1188 return true;
whismanoid 0:93d4119d3f14 1189 }
whismanoid 0:93d4119d3f14 1190 else
whismanoid 0:93d4119d3f14 1191 {
whismanoid 0:93d4119d3f14 1192 FAIL();
whismanoid 0:93d4119d3f14 1193 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 1194 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 1195 associatedCmdLine.serial().printf("AIN1 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 1196 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 1197 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 1198 );
whismanoid 0:93d4119d3f14 1199 //
whismanoid 0:93d4119d3f14 1200 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 1201 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 0:93d4119d3f14 1202 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 0:93d4119d3f14 1203 }
whismanoid 0:93d4119d3f14 1204 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 0:93d4119d3f14 1205 return false;
whismanoid 0:93d4119d3f14 1206 }
whismanoid 0:93d4119d3f14 1207
whismanoid 0:93d4119d3f14 1208 /** Test an analog voltage input to the platform (output from the device under test)
whismanoid 0:93d4119d3f14 1209 *
whismanoid 0:93d4119d3f14 1210 * @param[in] expect_result contains the expected voltage
whismanoid 0:93d4119d3f14 1211 *
whismanoid 0:93d4119d3f14 1212 * @pre err_threshold determines how closely the result must match the expected value
whismanoid 0:93d4119d3f14 1213 *
whismanoid 0:93d4119d3f14 1214 * @post nPass and nFail counters are updated
whismanoid 0:93d4119d3f14 1215 *
whismanoid 0:93d4119d3f14 1216 * @return true if success, false if test failed
whismanoid 0:93d4119d3f14 1217 *
whismanoid 0:93d4119d3f14 1218 */
whismanoid 0:93d4119d3f14 1219 bool MaximTinyTester::AnalogIn2_Read_Expect_voltageV(double expect_result)
whismanoid 0:93d4119d3f14 1220 {
whismanoid 0:93d4119d3f14 1221 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[2];
whismanoid 2:9b20cadbfa15 1222 // skip if expect_result exceeds ADC full scale
whismanoid 2:9b20cadbfa15 1223 if (adc_full_scale_voltage < expect_result)
whismanoid 2:9b20cadbfa15 1224 {
whismanoid 2:9b20cadbfa15 1225 // print a warning message that we can't perform the measurement
whismanoid 2:9b20cadbfa15 1226 associatedCmdLine.serial().printf("\r\n..... AIN full scale %1.3fV < expect %6.6f cannot perform measurement",
whismanoid 2:9b20cadbfa15 1227 adc_full_scale_voltage, expect_result);
whismanoid 2:9b20cadbfa15 1228 return true; // ignore, test conditions are invalid; do not call PASS() or FAIL()
whismanoid 2:9b20cadbfa15 1229 }
whismanoid 0:93d4119d3f14 1230
whismanoid 0:93d4119d3f14 1231 // TODO: tinyTester.Analog_Input_Expect_V replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 0:93d4119d3f14 1232 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 1233 float normValue_0_1 = analogInPin2.read();
whismanoid 0:93d4119d3f14 1234 double actual_result = normValue_0_1 * adc_full_scale_voltage;
whismanoid 0:93d4119d3f14 1235 double err_result = (actual_result - expect_result);
whismanoid 0:93d4119d3f14 1236 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 0:93d4119d3f14 1237 {
whismanoid 0:93d4119d3f14 1238 PASS();
whismanoid 0:93d4119d3f14 1239 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 1240 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 1241 associatedCmdLine.serial().printf("AIN2 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 1242 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 1243 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 1244 );
whismanoid 0:93d4119d3f14 1245 //
whismanoid 0:93d4119d3f14 1246 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 1247 return true;
whismanoid 0:93d4119d3f14 1248 }
whismanoid 0:93d4119d3f14 1249 else
whismanoid 0:93d4119d3f14 1250 {
whismanoid 0:93d4119d3f14 1251 FAIL();
whismanoid 0:93d4119d3f14 1252 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 1253 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 1254 associatedCmdLine.serial().printf("AIN2 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 1255 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 1256 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 1257 );
whismanoid 0:93d4119d3f14 1258 //
whismanoid 0:93d4119d3f14 1259 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 1260 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 0:93d4119d3f14 1261 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 0:93d4119d3f14 1262 }
whismanoid 0:93d4119d3f14 1263 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 0:93d4119d3f14 1264 return false;
whismanoid 0:93d4119d3f14 1265 }
whismanoid 0:93d4119d3f14 1266
whismanoid 0:93d4119d3f14 1267 /** Test an analog voltage input to the platform (output from the device under test)
whismanoid 0:93d4119d3f14 1268 *
whismanoid 0:93d4119d3f14 1269 * @param[in] expect_result contains the expected voltage
whismanoid 0:93d4119d3f14 1270 *
whismanoid 0:93d4119d3f14 1271 * @pre err_threshold determines how closely the result must match the expected value
whismanoid 0:93d4119d3f14 1272 *
whismanoid 0:93d4119d3f14 1273 * @post nPass and nFail counters are updated
whismanoid 0:93d4119d3f14 1274 *
whismanoid 0:93d4119d3f14 1275 * @return true if success, false if test failed
whismanoid 0:93d4119d3f14 1276 *
whismanoid 0:93d4119d3f14 1277 */
whismanoid 0:93d4119d3f14 1278 bool MaximTinyTester::AnalogIn3_Read_Expect_voltageV(double expect_result)
whismanoid 0:93d4119d3f14 1279 {
whismanoid 0:93d4119d3f14 1280 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[3];
whismanoid 2:9b20cadbfa15 1281 // skip if expect_result exceeds ADC full scale
whismanoid 2:9b20cadbfa15 1282 if (adc_full_scale_voltage < expect_result)
whismanoid 2:9b20cadbfa15 1283 {
whismanoid 2:9b20cadbfa15 1284 // print a warning message that we can't perform the measurement
whismanoid 2:9b20cadbfa15 1285 associatedCmdLine.serial().printf("\r\n..... AIN full scale %1.3fV < expect %6.6f cannot perform measurement",
whismanoid 2:9b20cadbfa15 1286 adc_full_scale_voltage, expect_result);
whismanoid 2:9b20cadbfa15 1287 return true; // ignore, test conditions are invalid; do not call PASS() or FAIL()
whismanoid 2:9b20cadbfa15 1288 }
whismanoid 0:93d4119d3f14 1289
whismanoid 0:93d4119d3f14 1290 // TODO: tinyTester.Analog_Input_Expect_V replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 0:93d4119d3f14 1291 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 1292 float normValue_0_1 = analogInPin3.read();
whismanoid 0:93d4119d3f14 1293 double actual_result = normValue_0_1 * adc_full_scale_voltage;
whismanoid 0:93d4119d3f14 1294 double err_result = (actual_result - expect_result);
whismanoid 0:93d4119d3f14 1295 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 0:93d4119d3f14 1296 {
whismanoid 0:93d4119d3f14 1297 PASS();
whismanoid 0:93d4119d3f14 1298 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 1299 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 1300 associatedCmdLine.serial().printf("AIN3 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 1301 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 1302 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 1303 );
whismanoid 0:93d4119d3f14 1304 //
whismanoid 0:93d4119d3f14 1305 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 1306 return true;
whismanoid 0:93d4119d3f14 1307 }
whismanoid 0:93d4119d3f14 1308 else
whismanoid 0:93d4119d3f14 1309 {
whismanoid 0:93d4119d3f14 1310 FAIL();
whismanoid 0:93d4119d3f14 1311 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 1312 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 1313 associatedCmdLine.serial().printf("AIN3 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 1314 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 1315 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 1316 );
whismanoid 0:93d4119d3f14 1317 //
whismanoid 0:93d4119d3f14 1318 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 1319 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 0:93d4119d3f14 1320 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 0:93d4119d3f14 1321 }
whismanoid 0:93d4119d3f14 1322 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 0:93d4119d3f14 1323 return false;
whismanoid 0:93d4119d3f14 1324 }
whismanoid 0:93d4119d3f14 1325
whismanoid 0:93d4119d3f14 1326 /** Test an analog voltage input to the platform (output from the device under test)
whismanoid 0:93d4119d3f14 1327 *
whismanoid 0:93d4119d3f14 1328 * @param[in] expect_result contains the expected voltage
whismanoid 0:93d4119d3f14 1329 *
whismanoid 0:93d4119d3f14 1330 * @pre err_threshold determines how closely the result must match the expected value
whismanoid 0:93d4119d3f14 1331 *
whismanoid 0:93d4119d3f14 1332 * @post nPass and nFail counters are updated
whismanoid 0:93d4119d3f14 1333 *
whismanoid 0:93d4119d3f14 1334 * @return true if success, false if test failed
whismanoid 0:93d4119d3f14 1335 *
whismanoid 0:93d4119d3f14 1336 */
whismanoid 0:93d4119d3f14 1337 bool MaximTinyTester::AnalogIn4_Read_Expect_voltageV(double expect_result)
whismanoid 0:93d4119d3f14 1338 {
whismanoid 0:93d4119d3f14 1339 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[4];
whismanoid 2:9b20cadbfa15 1340 // skip if expect_result exceeds ADC full scale
whismanoid 2:9b20cadbfa15 1341 if (adc_full_scale_voltage < expect_result)
whismanoid 2:9b20cadbfa15 1342 {
whismanoid 2:9b20cadbfa15 1343 // print a warning message that we can't perform the measurement
whismanoid 2:9b20cadbfa15 1344 associatedCmdLine.serial().printf("\r\n..... AIN full scale %1.3fV < expect %6.6f cannot perform measurement",
whismanoid 2:9b20cadbfa15 1345 adc_full_scale_voltage, expect_result);
whismanoid 2:9b20cadbfa15 1346 return true; // ignore, test conditions are invalid; do not call PASS() or FAIL()
whismanoid 2:9b20cadbfa15 1347 }
whismanoid 0:93d4119d3f14 1348
whismanoid 0:93d4119d3f14 1349 // TODO: tinyTester.Analog_Input_Expect_V replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 0:93d4119d3f14 1350 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 1351 float normValue_0_1 = analogInPin4.read();
whismanoid 0:93d4119d3f14 1352 double actual_result = normValue_0_1 * adc_full_scale_voltage;
whismanoid 0:93d4119d3f14 1353 double err_result = (actual_result - expect_result);
whismanoid 0:93d4119d3f14 1354 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 0:93d4119d3f14 1355 {
whismanoid 0:93d4119d3f14 1356 PASS();
whismanoid 0:93d4119d3f14 1357 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 1358 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 1359 associatedCmdLine.serial().printf("AIN4 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 1360 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 1361 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 1362 );
whismanoid 0:93d4119d3f14 1363 //
whismanoid 0:93d4119d3f14 1364 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 1365 return true;
whismanoid 0:93d4119d3f14 1366 }
whismanoid 0:93d4119d3f14 1367 else
whismanoid 0:93d4119d3f14 1368 {
whismanoid 0:93d4119d3f14 1369 FAIL();
whismanoid 0:93d4119d3f14 1370 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 1371 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 1372 associatedCmdLine.serial().printf("AIN4 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 1373 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 1374 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 1375 );
whismanoid 0:93d4119d3f14 1376 //
whismanoid 0:93d4119d3f14 1377 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 1378 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 0:93d4119d3f14 1379 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 0:93d4119d3f14 1380 }
whismanoid 0:93d4119d3f14 1381 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 0:93d4119d3f14 1382 return false;
whismanoid 0:93d4119d3f14 1383 }
whismanoid 0:93d4119d3f14 1384
whismanoid 0:93d4119d3f14 1385 /** Test an analog voltage input to the platform (output from the device under test)
whismanoid 0:93d4119d3f14 1386 *
whismanoid 0:93d4119d3f14 1387 * @param[in] expect_result contains the expected voltage
whismanoid 0:93d4119d3f14 1388 *
whismanoid 0:93d4119d3f14 1389 * @pre err_threshold determines how closely the result must match the expected value
whismanoid 0:93d4119d3f14 1390 *
whismanoid 0:93d4119d3f14 1391 * @post nPass and nFail counters are updated
whismanoid 0:93d4119d3f14 1392 *
whismanoid 0:93d4119d3f14 1393 * @return true if success, false if test failed
whismanoid 0:93d4119d3f14 1394 *
whismanoid 0:93d4119d3f14 1395 */
whismanoid 0:93d4119d3f14 1396 bool MaximTinyTester::AnalogIn5_Read_Expect_voltageV(double expect_result)
whismanoid 0:93d4119d3f14 1397 {
whismanoid 0:93d4119d3f14 1398 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[5];
whismanoid 2:9b20cadbfa15 1399 // skip if expect_result exceeds ADC full scale
whismanoid 2:9b20cadbfa15 1400 if (adc_full_scale_voltage < expect_result)
whismanoid 2:9b20cadbfa15 1401 {
whismanoid 2:9b20cadbfa15 1402 // print a warning message that we can't perform the measurement
whismanoid 2:9b20cadbfa15 1403 associatedCmdLine.serial().printf("\r\n..... AIN full scale %1.3fV < expect %6.6f cannot perform measurement",
whismanoid 2:9b20cadbfa15 1404 adc_full_scale_voltage, expect_result);
whismanoid 2:9b20cadbfa15 1405 return true; // ignore, test conditions are invalid; do not call PASS() or FAIL()
whismanoid 2:9b20cadbfa15 1406 }
whismanoid 0:93d4119d3f14 1407
whismanoid 0:93d4119d3f14 1408 // TODO: tinyTester.Analog_Input_Expect_V replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 0:93d4119d3f14 1409 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 1410 float normValue_0_1 = analogInPin5.read();
whismanoid 0:93d4119d3f14 1411 double actual_result = normValue_0_1 * adc_full_scale_voltage;
whismanoid 0:93d4119d3f14 1412 double err_result = (actual_result - expect_result);
whismanoid 0:93d4119d3f14 1413 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 0:93d4119d3f14 1414 {
whismanoid 0:93d4119d3f14 1415 PASS();
whismanoid 0:93d4119d3f14 1416 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 1417 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 1418 associatedCmdLine.serial().printf("AIN5 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 1419 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 1420 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 1421 );
whismanoid 0:93d4119d3f14 1422 //
whismanoid 0:93d4119d3f14 1423 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 1424 return true;
whismanoid 0:93d4119d3f14 1425 }
whismanoid 0:93d4119d3f14 1426 else
whismanoid 0:93d4119d3f14 1427 {
whismanoid 0:93d4119d3f14 1428 FAIL();
whismanoid 0:93d4119d3f14 1429 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 1430 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 1431 associatedCmdLine.serial().printf("AIN5 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 1432 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 1433 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 1434 );
whismanoid 0:93d4119d3f14 1435 //
whismanoid 0:93d4119d3f14 1436 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 1437 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 0:93d4119d3f14 1438 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 0:93d4119d3f14 1439 }
whismanoid 0:93d4119d3f14 1440 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 0:93d4119d3f14 1441 return false;
whismanoid 0:93d4119d3f14 1442 }
whismanoid 0:93d4119d3f14 1443
whismanoid 0:93d4119d3f14 1444 bool MaximTinyTester::AnalogIn_Read_Expect_voltageV(AnalogIn& analogInPin, double expect_result)
whismanoid 0:93d4119d3f14 1445 {
whismanoid 0:93d4119d3f14 1446 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[0];
whismanoid 2:9b20cadbfa15 1447 // skip if expect_result exceeds ADC full scale
whismanoid 2:9b20cadbfa15 1448 if (adc_full_scale_voltage < expect_result)
whismanoid 2:9b20cadbfa15 1449 {
whismanoid 2:9b20cadbfa15 1450 // print a warning message that we can't perform the measurement
whismanoid 2:9b20cadbfa15 1451 associatedCmdLine.serial().printf("\r\n..... AIN full scale %1.3fV < expect %6.6f cannot perform measurement",
whismanoid 2:9b20cadbfa15 1452 adc_full_scale_voltage, expect_result);
whismanoid 2:9b20cadbfa15 1453 return true; // ignore, test conditions are invalid; do not call PASS() or FAIL()
whismanoid 2:9b20cadbfa15 1454 }
whismanoid 0:93d4119d3f14 1455
whismanoid 0:93d4119d3f14 1456 // TODO: tinyTester.Analog_Input_Expect_V replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 0:93d4119d3f14 1457 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 1458 float normValue_0_1 = analogInPin.read();
whismanoid 0:93d4119d3f14 1459 double actual_result = normValue_0_1 * adc_full_scale_voltage;
whismanoid 0:93d4119d3f14 1460 double err_result = (actual_result - expect_result);
whismanoid 0:93d4119d3f14 1461 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 0:93d4119d3f14 1462 {
whismanoid 0:93d4119d3f14 1463 PASS();
whismanoid 0:93d4119d3f14 1464 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 1465 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 1466 associatedCmdLine.serial().printf("AIN0 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 1467 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 1468 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 1469 );
whismanoid 0:93d4119d3f14 1470 //
whismanoid 0:93d4119d3f14 1471 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 1472 return true;
whismanoid 0:93d4119d3f14 1473 }
whismanoid 0:93d4119d3f14 1474 else
whismanoid 0:93d4119d3f14 1475 {
whismanoid 0:93d4119d3f14 1476 FAIL();
whismanoid 0:93d4119d3f14 1477 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 1478 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 1479 associatedCmdLine.serial().printf("AIN0 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 1480 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 1481 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 1482 );
whismanoid 0:93d4119d3f14 1483 //
whismanoid 0:93d4119d3f14 1484 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 1485 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 0:93d4119d3f14 1486 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 0:93d4119d3f14 1487 }
whismanoid 0:93d4119d3f14 1488 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 0:93d4119d3f14 1489 return false;
whismanoid 0:93d4119d3f14 1490 }
whismanoid 0:93d4119d3f14 1491
whismanoid 18:9874cd1e6cb0 1492
whismanoid 18:9874cd1e6cb0 1493 /** Test an analog voltage input to the platform (output from the device under test)
whismanoid 18:9874cd1e6cb0 1494 * and report the measured value to the test log.
whismanoid 18:9874cd1e6cb0 1495 * Information only; does not pass or fail.
whismanoid 18:9874cd1e6cb0 1496 *
whismanoid 18:9874cd1e6cb0 1497 * @return voltage in Volts
whismanoid 18:9874cd1e6cb0 1498 *
whismanoid 18:9874cd1e6cb0 1499 */
whismanoid 18:9874cd1e6cb0 1500 double MaximTinyTester::AnalogIn0_Read_Report_voltageV()
whismanoid 18:9874cd1e6cb0 1501 {
whismanoid 18:9874cd1e6cb0 1502 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[0];
whismanoid 18:9874cd1e6cb0 1503
whismanoid 18:9874cd1e6cb0 1504 // Platform board uses simple analog inputs
whismanoid 18:9874cd1e6cb0 1505 float normValue_0_1 = analogInPin0.read();
whismanoid 18:9874cd1e6cb0 1506 double actual_result = normValue_0_1 * adc_full_scale_voltage;
whismanoid 18:9874cd1e6cb0 1507 // Platform board uses simple analog inputs
whismanoid 18:9874cd1e6cb0 1508 associatedCmdLine.serial().printf("\r\n AIN0 = %7.3f%% = %1.3fV ",
whismanoid 18:9874cd1e6cb0 1509 normValue_0_1 * 100.0,
whismanoid 18:9874cd1e6cb0 1510 normValue_0_1 * adc_full_scale_voltage
whismanoid 18:9874cd1e6cb0 1511 );
whismanoid 18:9874cd1e6cb0 1512 //
whismanoid 18:9874cd1e6cb0 1513 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 18:9874cd1e6cb0 1514 return actual_result;
whismanoid 18:9874cd1e6cb0 1515 }
whismanoid 18:9874cd1e6cb0 1516
whismanoid 18:9874cd1e6cb0 1517 /** Test an analog voltage input to the platform (output from the device under test)
whismanoid 18:9874cd1e6cb0 1518 * and report the measured value to the test log.
whismanoid 18:9874cd1e6cb0 1519 * Information only; does not pass or fail.
whismanoid 18:9874cd1e6cb0 1520 *
whismanoid 18:9874cd1e6cb0 1521 * @return voltage in Volts
whismanoid 18:9874cd1e6cb0 1522 *
whismanoid 18:9874cd1e6cb0 1523 */
whismanoid 18:9874cd1e6cb0 1524 double MaximTinyTester::AnalogIn1_Read_Report_voltageV()
whismanoid 18:9874cd1e6cb0 1525 {
whismanoid 18:9874cd1e6cb0 1526 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[1];
whismanoid 18:9874cd1e6cb0 1527
whismanoid 18:9874cd1e6cb0 1528 // Platform board uses simple analog inputs
whismanoid 18:9874cd1e6cb0 1529 float normValue_0_1 = analogInPin1.read();
whismanoid 18:9874cd1e6cb0 1530 double actual_result = normValue_0_1 * adc_full_scale_voltage;
whismanoid 18:9874cd1e6cb0 1531 // Platform board uses simple analog inputs
whismanoid 18:9874cd1e6cb0 1532 associatedCmdLine.serial().printf("\r\n AIN1 = %7.3f%% = %1.3fV ",
whismanoid 18:9874cd1e6cb0 1533 normValue_0_1 * 100.0,
whismanoid 18:9874cd1e6cb0 1534 normValue_0_1 * adc_full_scale_voltage
whismanoid 18:9874cd1e6cb0 1535 );
whismanoid 18:9874cd1e6cb0 1536 //
whismanoid 18:9874cd1e6cb0 1537 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 18:9874cd1e6cb0 1538 return actual_result;
whismanoid 18:9874cd1e6cb0 1539 }
whismanoid 18:9874cd1e6cb0 1540
whismanoid 18:9874cd1e6cb0 1541 /** Test an analog voltage input to the platform (output from the device under test)
whismanoid 18:9874cd1e6cb0 1542 * and report the measured value to the test log.
whismanoid 18:9874cd1e6cb0 1543 * Information only; does not pass or fail.
whismanoid 18:9874cd1e6cb0 1544 *
whismanoid 18:9874cd1e6cb0 1545 * @return voltage in Volts
whismanoid 18:9874cd1e6cb0 1546 *
whismanoid 18:9874cd1e6cb0 1547 */
whismanoid 18:9874cd1e6cb0 1548 double MaximTinyTester::AnalogIn2_Read_Report_voltageV()
whismanoid 18:9874cd1e6cb0 1549 {
whismanoid 18:9874cd1e6cb0 1550 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[2];
whismanoid 18:9874cd1e6cb0 1551
whismanoid 18:9874cd1e6cb0 1552 // Platform board uses simple analog inputs
whismanoid 18:9874cd1e6cb0 1553 float normValue_0_1 = analogInPin2.read();
whismanoid 18:9874cd1e6cb0 1554 double actual_result = normValue_0_1 * adc_full_scale_voltage;
whismanoid 18:9874cd1e6cb0 1555 // Platform board uses simple analog inputs
whismanoid 18:9874cd1e6cb0 1556 associatedCmdLine.serial().printf("\r\n AIN2 = %7.3f%% = %1.3fV ",
whismanoid 18:9874cd1e6cb0 1557 normValue_0_1 * 100.0,
whismanoid 18:9874cd1e6cb0 1558 normValue_0_1 * adc_full_scale_voltage
whismanoid 18:9874cd1e6cb0 1559 );
whismanoid 18:9874cd1e6cb0 1560 //
whismanoid 18:9874cd1e6cb0 1561 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 18:9874cd1e6cb0 1562 return actual_result;
whismanoid 18:9874cd1e6cb0 1563 }
whismanoid 18:9874cd1e6cb0 1564
whismanoid 18:9874cd1e6cb0 1565 /** Test an analog voltage input to the platform (output from the device under test)
whismanoid 18:9874cd1e6cb0 1566 * and report the measured value to the test log.
whismanoid 18:9874cd1e6cb0 1567 * Information only; does not pass or fail.
whismanoid 18:9874cd1e6cb0 1568 *
whismanoid 18:9874cd1e6cb0 1569 * @return voltage in Volts
whismanoid 18:9874cd1e6cb0 1570 *
whismanoid 18:9874cd1e6cb0 1571 */
whismanoid 18:9874cd1e6cb0 1572 double MaximTinyTester::AnalogIn3_Read_Report_voltageV()
whismanoid 18:9874cd1e6cb0 1573 {
whismanoid 18:9874cd1e6cb0 1574 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[3];
whismanoid 18:9874cd1e6cb0 1575
whismanoid 18:9874cd1e6cb0 1576 // Platform board uses simple analog inputs
whismanoid 18:9874cd1e6cb0 1577 float normValue_0_1 = analogInPin3.read();
whismanoid 18:9874cd1e6cb0 1578 double actual_result = normValue_0_1 * adc_full_scale_voltage;
whismanoid 18:9874cd1e6cb0 1579 // Platform board uses simple analog inputs
whismanoid 18:9874cd1e6cb0 1580 associatedCmdLine.serial().printf("\r\n AIN3 = %7.3f%% = %1.3fV ",
whismanoid 18:9874cd1e6cb0 1581 normValue_0_1 * 100.0,
whismanoid 18:9874cd1e6cb0 1582 normValue_0_1 * adc_full_scale_voltage
whismanoid 18:9874cd1e6cb0 1583 );
whismanoid 18:9874cd1e6cb0 1584 //
whismanoid 18:9874cd1e6cb0 1585 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 18:9874cd1e6cb0 1586 return actual_result;
whismanoid 18:9874cd1e6cb0 1587 }
whismanoid 18:9874cd1e6cb0 1588
whismanoid 18:9874cd1e6cb0 1589 /** Test an analog voltage input to the platform (output from the device under test)
whismanoid 18:9874cd1e6cb0 1590 * and report the measured value to the test log.
whismanoid 18:9874cd1e6cb0 1591 * Information only; does not pass or fail.
whismanoid 18:9874cd1e6cb0 1592 *
whismanoid 18:9874cd1e6cb0 1593 * @return voltage in Volts
whismanoid 18:9874cd1e6cb0 1594 *
whismanoid 18:9874cd1e6cb0 1595 */
whismanoid 18:9874cd1e6cb0 1596 double MaximTinyTester::AnalogIn4_Read_Report_voltageV()
whismanoid 18:9874cd1e6cb0 1597 {
whismanoid 18:9874cd1e6cb0 1598 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[4];
whismanoid 18:9874cd1e6cb0 1599
whismanoid 18:9874cd1e6cb0 1600 // Platform board uses simple analog inputs
whismanoid 18:9874cd1e6cb0 1601 float normValue_0_1 = analogInPin4.read();
whismanoid 18:9874cd1e6cb0 1602 double actual_result = normValue_0_1 * adc_full_scale_voltage;
whismanoid 18:9874cd1e6cb0 1603 // Platform board uses simple analog inputs
whismanoid 18:9874cd1e6cb0 1604 associatedCmdLine.serial().printf("\r\n AIN4 = %7.3f%% = %1.3fV ",
whismanoid 18:9874cd1e6cb0 1605 normValue_0_1 * 100.0,
whismanoid 18:9874cd1e6cb0 1606 normValue_0_1 * adc_full_scale_voltage
whismanoid 18:9874cd1e6cb0 1607 );
whismanoid 18:9874cd1e6cb0 1608 //
whismanoid 18:9874cd1e6cb0 1609 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 18:9874cd1e6cb0 1610 return actual_result;
whismanoid 18:9874cd1e6cb0 1611 }
whismanoid 18:9874cd1e6cb0 1612
whismanoid 18:9874cd1e6cb0 1613 /** Test an analog voltage input to the platform (output from the device under test)
whismanoid 18:9874cd1e6cb0 1614 * and report the measured value to the test log.
whismanoid 18:9874cd1e6cb0 1615 * Information only; does not pass or fail.
whismanoid 18:9874cd1e6cb0 1616 *
whismanoid 18:9874cd1e6cb0 1617 * @return voltage in Volts
whismanoid 18:9874cd1e6cb0 1618 *
whismanoid 18:9874cd1e6cb0 1619 */
whismanoid 18:9874cd1e6cb0 1620 double MaximTinyTester::AnalogIn5_Read_Report_voltageV()
whismanoid 18:9874cd1e6cb0 1621 {
whismanoid 18:9874cd1e6cb0 1622 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[5];
whismanoid 18:9874cd1e6cb0 1623
whismanoid 18:9874cd1e6cb0 1624 // Platform board uses simple analog inputs
whismanoid 18:9874cd1e6cb0 1625 float normValue_0_1 = analogInPin5.read();
whismanoid 18:9874cd1e6cb0 1626 double actual_result = normValue_0_1 * adc_full_scale_voltage;
whismanoid 18:9874cd1e6cb0 1627 // Platform board uses simple analog inputs
whismanoid 18:9874cd1e6cb0 1628 associatedCmdLine.serial().printf("\r\n AIN5 = %7.3f%% = %1.3fV ",
whismanoid 18:9874cd1e6cb0 1629 normValue_0_1 * 100.0,
whismanoid 18:9874cd1e6cb0 1630 normValue_0_1 * adc_full_scale_voltage
whismanoid 18:9874cd1e6cb0 1631 );
whismanoid 18:9874cd1e6cb0 1632 //
whismanoid 18:9874cd1e6cb0 1633 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 18:9874cd1e6cb0 1634 return actual_result;
whismanoid 18:9874cd1e6cb0 1635 }
whismanoid 18:9874cd1e6cb0 1636
whismanoid 0:93d4119d3f14 1637 bool MaximTinyTester::DigitalIn_Read_Expect_WarnOnly(DigitalIn& digitalInPin, const char* pinName, int expect_result, const char *expect_description)
whismanoid 0:93d4119d3f14 1638 {
whismanoid 0:93d4119d3f14 1639 int actual_UPO_value = -1;
whismanoid 0:93d4119d3f14 1640 for (int retry_count = 0; retry_count < 10; retry_count++) {
whismanoid 0:93d4119d3f14 1641 actual_UPO_value = digitalInPin.read(); // g_MAX5171_device.UPOinputValue();
whismanoid 17:65fb4afe4991 1642 if (actual_UPO_value == expect_result) // DigitalIn_Read_Expect_WarnOnly
whismanoid 17:65fb4afe4991 1643 {
whismanoid 0:93d4119d3f14 1644 PASS();
whismanoid 0:93d4119d3f14 1645 associatedCmdLine.serial().printf("%s signal=%d %s", pinName, expect_result, expect_description);
whismanoid 0:93d4119d3f14 1646 return true;
whismanoid 0:93d4119d3f14 1647 }
whismanoid 0:93d4119d3f14 1648 // UPO condition not met, retry for a while until give up
whismanoid 0:93d4119d3f14 1649 wait_ms(input_timeout_time_msec / 10); // delay
whismanoid 0:93d4119d3f14 1650 }
whismanoid 0:93d4119d3f14 1651 associatedCmdLine.serial().printf("\r\n!WARN "); // SelfTest_FAIL(cmdLine);
whismanoid 0:93d4119d3f14 1652 associatedCmdLine.serial().printf("expected %s signal=%d %s", pinName, expect_result, expect_description);
whismanoid 0:93d4119d3f14 1653 associatedCmdLine.serial().printf(", but got actual %s=%d", pinName, actual_UPO_value);
whismanoid 0:93d4119d3f14 1654 associatedCmdLine.serial().printf(", missing %s connections?", pinName);
whismanoid 0:93d4119d3f14 1655 return false;
whismanoid 0:93d4119d3f14 1656 }
whismanoid 0:93d4119d3f14 1657
whismanoid 0:93d4119d3f14 1658 void MaximTinyTester::Wait_Output_Settling()
whismanoid 0:93d4119d3f14 1659 {
whismanoid 0:93d4119d3f14 1660 wait_ms(settle_time_msec); // delay
whismanoid 0:93d4119d3f14 1661 }
whismanoid 0:93d4119d3f14 1662
whismanoid 0:93d4119d3f14 1663
whismanoid 0:93d4119d3f14 1664 // End of file