2017-03-19 15:23:06 +01:00
|
|
|
// Copyright Benoit Blanchon 2014-2017
|
|
|
|
// MIT License
|
|
|
|
//
|
|
|
|
// Arduino JSON library
|
2017-03-25 22:05:06 +01:00
|
|
|
// https://bblanchon.github.io/ArduinoJson/
|
2017-03-19 15:23:06 +01:00
|
|
|
// If you like this project, please add a star!
|
|
|
|
|
|
|
|
#include <ArduinoJson/Polyfills/isFloat.hpp>
|
2017-04-18 18:22:24 +02:00
|
|
|
#include <catch.hpp>
|
2017-03-19 15:23:06 +01:00
|
|
|
|
|
|
|
using namespace ArduinoJson::Polyfills;
|
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
TEST_CASE("isFloat()") {
|
|
|
|
SECTION("Input is NULL") {
|
|
|
|
REQUIRE(isFloat(NULL) == false);
|
2017-03-19 15:23:06 +01:00
|
|
|
}
|
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
SECTION("NoExponent") {
|
|
|
|
REQUIRE(isFloat("3.14"));
|
|
|
|
REQUIRE(isFloat("-3.14"));
|
|
|
|
REQUIRE(isFloat("+3.14"));
|
|
|
|
}
|
2017-03-19 15:23:06 +01:00
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
SECTION("IntegralPartMissing") {
|
|
|
|
REQUIRE(isFloat(".14"));
|
|
|
|
REQUIRE(isFloat("-.14"));
|
|
|
|
REQUIRE(isFloat("+.14"));
|
|
|
|
}
|
2017-03-19 15:23:06 +01:00
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
SECTION("FractionalPartMissing") {
|
|
|
|
REQUIRE(isFloat("3."));
|
|
|
|
REQUIRE(isFloat("-3.e14"));
|
|
|
|
REQUIRE(isFloat("+3.e-14"));
|
|
|
|
}
|
2017-03-19 15:23:06 +01:00
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
SECTION("NoDot") {
|
|
|
|
REQUIRE(isFloat("3e14"));
|
|
|
|
REQUIRE(isFloat("3e-14"));
|
|
|
|
REQUIRE(isFloat("3e+14"));
|
|
|
|
}
|
2017-03-19 15:23:06 +01:00
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
SECTION("Integer") {
|
2017-05-20 09:06:53 +02:00
|
|
|
REQUIRE(isFloat("14"));
|
|
|
|
REQUIRE(isFloat("-14"));
|
|
|
|
REQUIRE(isFloat("+14"));
|
2017-04-18 18:22:24 +02:00
|
|
|
}
|
2017-03-19 15:23:06 +01:00
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
SECTION("ExponentMissing") {
|
|
|
|
REQUIRE_FALSE(isFloat("3.14e"));
|
|
|
|
REQUIRE_FALSE(isFloat("3.14e-"));
|
|
|
|
REQUIRE_FALSE(isFloat("3.14e+"));
|
|
|
|
}
|
2017-03-19 15:23:06 +01:00
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
SECTION("JustASign") {
|
|
|
|
REQUIRE_FALSE(isFloat("-"));
|
|
|
|
REQUIRE_FALSE(isFloat("+"));
|
|
|
|
}
|
2017-03-19 15:23:06 +01:00
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
SECTION("Empty") {
|
|
|
|
REQUIRE_FALSE(isFloat(""));
|
|
|
|
}
|
2017-03-19 15:23:06 +01:00
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
SECTION("NaN") {
|
|
|
|
REQUIRE(isFloat("NaN"));
|
|
|
|
REQUIRE_FALSE(isFloat("n"));
|
|
|
|
REQUIRE_FALSE(isFloat("N"));
|
|
|
|
REQUIRE_FALSE(isFloat("nan"));
|
|
|
|
REQUIRE_FALSE(isFloat("-NaN"));
|
|
|
|
REQUIRE_FALSE(isFloat("+NaN"));
|
|
|
|
}
|
2017-03-19 15:23:06 +01:00
|
|
|
|
2017-04-18 18:22:24 +02:00
|
|
|
SECTION("Infinity") {
|
|
|
|
REQUIRE(isFloat("Infinity"));
|
|
|
|
REQUIRE(isFloat("+Infinity"));
|
|
|
|
REQUIRE(isFloat("-Infinity"));
|
|
|
|
REQUIRE_FALSE(isFloat("infinity"));
|
|
|
|
REQUIRE_FALSE(isFloat("Inf"));
|
|
|
|
}
|
2017-03-19 15:23:06 +01:00
|
|
|
}
|