convertNumber.cpp 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. // ArduinoJson - https://arduinojson.org
  2. // Copyright Benoit Blanchon 2014-2021
  3. // MIT License
  4. #include <stdint.h>
  5. #include <ArduinoJson.hpp>
  6. #include <catch.hpp>
  7. using namespace ARDUINOJSON_NAMESPACE;
  8. TEST_CASE("canConvertNumber<TOut, TIn>()") {
  9. SECTION("int8_t -> int8_t") {
  10. CHECK((canConvertNumber<int8_t, int8_t>(0)) == true);
  11. CHECK((canConvertNumber<int8_t, int8_t>(127)) == true);
  12. CHECK((canConvertNumber<int8_t, int8_t>(-128)) == true);
  13. }
  14. SECTION("int8_t -> int16_t") {
  15. CHECK((canConvertNumber<int16_t, int8_t>(0)) == true);
  16. CHECK((canConvertNumber<int16_t, int8_t>(127)) == true);
  17. CHECK((canConvertNumber<int16_t, int8_t>(-128)) == true);
  18. }
  19. SECTION("int8_t -> uint8_t") {
  20. CHECK((canConvertNumber<uint8_t, int8_t>(0)) == true);
  21. CHECK((canConvertNumber<uint8_t, int8_t>(127)) == true);
  22. CHECK((canConvertNumber<uint8_t, int8_t>(-128)) == false);
  23. }
  24. SECTION("int8_t -> uint16_t") {
  25. CHECK((canConvertNumber<uint16_t, int8_t>(0)) == true);
  26. CHECK((canConvertNumber<uint16_t, int8_t>(127)) == true);
  27. CHECK((canConvertNumber<uint16_t, int8_t>(-128)) == false);
  28. }
  29. SECTION("int16_t -> int8_t") {
  30. CHECK((canConvertNumber<int8_t, int16_t>(0)) == true);
  31. CHECK((canConvertNumber<int8_t, int16_t>(127)) == true);
  32. CHECK((canConvertNumber<int8_t, int16_t>(128)) == false);
  33. CHECK((canConvertNumber<int8_t, int16_t>(-128)) == true);
  34. CHECK((canConvertNumber<int8_t, int16_t>(-129)) == false);
  35. }
  36. SECTION("int16_t -> uint8_t") {
  37. CHECK((canConvertNumber<uint8_t, int16_t>(0)) == true);
  38. CHECK((canConvertNumber<uint8_t, int16_t>(255)) == true);
  39. CHECK((canConvertNumber<uint8_t, int16_t>(256)) == false);
  40. CHECK((canConvertNumber<uint8_t, int16_t>(-1)) == false);
  41. }
  42. SECTION("uint8_t -> int8_t") {
  43. CHECK((canConvertNumber<int8_t, uint8_t>(0)) == true);
  44. CHECK((canConvertNumber<int8_t, uint8_t>(127)) == true);
  45. CHECK((canConvertNumber<int8_t, uint8_t>(128)) == false);
  46. CHECK((canConvertNumber<int8_t, uint8_t>(255)) == false);
  47. }
  48. SECTION("uint8_t -> int16_t") {
  49. CHECK((canConvertNumber<int16_t, uint8_t>(0)) == true);
  50. CHECK((canConvertNumber<int16_t, uint8_t>(127)) == true);
  51. CHECK((canConvertNumber<int16_t, uint8_t>(128)) == true);
  52. CHECK((canConvertNumber<int16_t, uint8_t>(255)) == true);
  53. }
  54. SECTION("uint8_t -> uint8_t") {
  55. CHECK((canConvertNumber<uint8_t, uint8_t>(0)) == true);
  56. CHECK((canConvertNumber<uint8_t, uint8_t>(127)) == true);
  57. CHECK((canConvertNumber<uint8_t, uint8_t>(128)) == true);
  58. CHECK((canConvertNumber<uint8_t, uint8_t>(255)) == true);
  59. }
  60. SECTION("uint8_t -> uint16_t") {
  61. CHECK((canConvertNumber<uint16_t, uint8_t>(0)) == true);
  62. CHECK((canConvertNumber<uint16_t, uint8_t>(127)) == true);
  63. CHECK((canConvertNumber<uint16_t, uint8_t>(128)) == true);
  64. CHECK((canConvertNumber<uint16_t, uint8_t>(255)) == true);
  65. }
  66. }