From 062ffc5890c245bcd273f6063a8f9bdb16280b1c Mon Sep 17 00:00:00 2001 From: rusefi Date: Thu, 30 Mar 2017 15:04:20 -0400 Subject: [PATCH] manual pre-merge - should be safe, functional test of rusEfi custom %..1000f formatting --- .../simulator/rusEfiFunctionalTest.cpp | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/win32_functional_tests/simulator/rusEfiFunctionalTest.cpp b/win32_functional_tests/simulator/rusEfiFunctionalTest.cpp index 3c8eb6f76c..7e6b5b7e6c 100644 --- a/win32_functional_tests/simulator/rusEfiFunctionalTest.cpp +++ b/win32_functional_tests/simulator/rusEfiFunctionalTest.cpp @@ -29,6 +29,8 @@ #include "trigger_emulator.h" #include "engine_controller.h" #include "map_averaging.h" +#include "memstreams.h" +#include #define DEFAULT_SIM_RPM 1200 #define DEFAULT_SNIFFER_THR 2500 @@ -53,6 +55,23 @@ float getMap(void) { return getRawMap(); } +static void runChprintfTess() { + static MemoryStream testStream; + static char testBuffer[200]; + msObjectInit(&testStream, (uint8_t *) testBuffer, sizeof(testBuffer), 0); + + +// it's a very, very long and mostly forgotten story how this became our %f precision format + testStream.eos = 0; // reset + chprintf((BaseSequentialStream*)&testStream, "%f/%..10000f/%..10000f", 0.239f, 239.932, 0.1234); + testStream.buffer[testStream.eos] = 0; + +#define FLOAT_STRING_EXPECTED "0.23/239.9320/0.1234" + if (strcmp(FLOAT_STRING_EXPECTED, testBuffer) != 0) { + firmwareError(OBD_PCM_Processor_Fault, "chprintf test: got %s while %s", testBuffer, FLOAT_STRING_EXPECTED); + } +} + void rusEfiFunctionalTest(void) { printToWin32Console("Running version:"); printToWin32Console("TODO"); @@ -94,6 +113,8 @@ void rusEfiFunctionalTest(void) { startStatusThreads(engine); + runChprintfTess(); + initPeriodicEvents(PASS_ENGINE_PARAMETER_F); setTriggerEmulatorRPM(DEFAULT_SIM_RPM, engine);