// These tests do not rely on RTC hardware at all //#include // must be included here so that Arduino library object file references work #include void PrintPassFail(bool passed) { if (passed) { Serial.print("passed"); } else { Serial.print("failed"); } } void ComparePrintlnPassFail(RtcTemperature& rtcTemp, float compare) { Serial.print(rtcTemp.AsFloatDegC()); Serial.print("C "); PrintPassFail(rtcTemp.AsFloatDegC() == compare); Serial.println(); } void ConstructorTests() { // RTC constructors Serial.println("Constructors:"); { RtcTemperature temp075Below(0b11111111, 0b01000000); // -0.75 ComparePrintlnPassFail(temp075Below, -0.75f); RtcTemperature temp050Below(0b11111111, 0b10000000); // -0.5 ComparePrintlnPassFail(temp050Below, -0.50f); RtcTemperature temp025Below(0b11111111, 0b11000000); // -0.25 ComparePrintlnPassFail(temp025Below, -0.25f); RtcTemperature tempZero(0b00000000, 0b00000000); // 0.0 ComparePrintlnPassFail(tempZero, -0.0f); RtcTemperature temp025Above(0b00000000, 0b01000000); // 0.25 ComparePrintlnPassFail(temp025Above, 0.25f); RtcTemperature temp050Above(0b00000000, 0b10000000); // 0.5 ComparePrintlnPassFail(temp050Above, 0.5f); RtcTemperature temp075Above(0b00000000, 0b11000000); // 0.75 ComparePrintlnPassFail(temp075Above, 0.75f); RtcTemperature temp25Above(0b00011001, 0b00000000); // 25.0 ComparePrintlnPassFail(temp25Above, 25.0f); RtcTemperature temp25Below(0b11100111, 0b00000000); // -25.0 ComparePrintlnPassFail(temp25Below, -25.0f); } Serial.println(); // SameType { Serial.print("same type "); RtcTemperature temp25Below(0b11100111, 0b00000000); // -25.0 RtcTemperature test = temp25Below; ComparePrintlnPassFail(test, -25.0f); } // CentiDegrees { Serial.print("centi degrees "); RtcTemperature temp025Below(-25); // -0.25 ComparePrintlnPassFail(temp025Below, -0.25f); Serial.print("centi degrees "); RtcTemperature temp025Above(25); // 0.25 ComparePrintlnPassFail(temp025Above, 0.25f); Serial.print("centi degrees "); RtcTemperature temp25Below(-2500); // -25.0 ComparePrintlnPassFail(temp25Below, -25.0f); Serial.print("centi degrees "); RtcTemperature temp25Above(2500); // 25.0 ComparePrintlnPassFail(temp25Above, 25.0f); } Serial.println(); } void PrintlnExpected(RtcTemperature& temp, uint16_t digits) { Serial.print(" = "); Serial.print(temp.AsFloatDegC(), digits); Serial.println(); } void PrintTests() { Serial.println("Prints:"); RtcTemperature temp25Above(2500); temp25Above.Print(Serial); PrintlnExpected(temp25Above, 2); RtcTemperature temp25Below(-2500); temp25Below.Print(Serial); PrintlnExpected(temp25Below, 2); RtcTemperature temp025Above(25); temp025Above.Print(Serial); PrintlnExpected(temp025Above, 2); temp025Above.Print(Serial, 1); PrintlnExpected(temp025Above, 1); RtcTemperature temp025Below(-25); temp025Below.Print(Serial); PrintlnExpected(temp025Below, 2); temp025Below.Print(Serial, 1); PrintlnExpected(temp025Below, 1); RtcTemperature temp050Above(50); temp050Above.Print(Serial); PrintlnExpected(temp050Above, 2); temp050Above.Print(Serial, 0); PrintlnExpected(temp050Above, 0); RtcTemperature temp050Below(-50); temp050Below.Print(Serial); PrintlnExpected(temp050Below, 2); temp050Below.Print(Serial, 0); PrintlnExpected(temp050Below, 0); temp050Below.Print(Serial, 2, ','); Serial.println(" == -0,50"); Serial.println(); } void MathmaticalOperatorTests() { Serial.println("Mathmaticals:"); RtcTemperature temp050Below(-50); RtcTemperature temp050Above(50); RtcTemperature temp050Diff(100); RtcTemperature temp050Same(-50); RtcTemperature tempResult; Serial.print("equality "); PrintPassFail(temp050Below == temp050Same); Serial.println(); Serial.print("inequality "); PrintPassFail(temp050Below != temp050Above); Serial.println(); Serial.print("less than "); PrintPassFail(temp050Below < temp050Above); Serial.println(); Serial.print("greater than "); PrintPassFail(temp050Above > temp050Below); Serial.println(); Serial.print("less than "); PrintPassFail(temp050Below <= temp050Above); Serial.print(" or equal "); PrintPassFail(temp050Below <= temp050Same); Serial.println(); Serial.print("greater than "); PrintPassFail(temp050Above >= temp050Below); Serial.print(" or equal "); PrintPassFail(temp050Below >= temp050Same); Serial.println(); tempResult = temp050Above - temp050Below; Serial.print("subtraction "); PrintPassFail(tempResult == temp050Diff); Serial.println(); tempResult = temp050Above + temp050Above; Serial.print("addition "); PrintPassFail(tempResult == temp050Diff); Serial.println(); Serial.println(); } void setup () { Serial.begin(115200); while (!Serial); Serial.println(); ConstructorTests(); PrintTests(); MathmaticalOperatorTests(); } void loop () { delay(500); }