reapack

Package manager for REAPER
Log | Files | Refs | Submodules | README | LICENSE

api.cpp (930B)


      1 #include "helper.hpp"
      2 
      3 #include <cstring>
      4 
      5 #include <api.hpp>
      6 
      7 static const char *M = "[api]";
      8 
      9 TEST_CASE("CompareVersions", M) {
     10   const auto CompareVersions = (int (*)(const char *, const char *,
     11     char *, int))API::CompareVersions.cImpl;
     12 
     13   char error[255] = {};
     14 
     15   SECTION("equal") {
     16     REQUIRE(CompareVersions("1.0", "1.0", error, sizeof(error)) == 0);
     17     REQUIRE(strcmp(error, "") == 0);
     18   }
     19 
     20   SECTION("lower") {
     21     REQUIRE(CompareVersions("1.0", "2.0", error, sizeof(error)) < 0);
     22     REQUIRE(strcmp(error, "") == 0);
     23   }
     24 
     25   SECTION("higher") {
     26     REQUIRE(CompareVersions("2.0", "1.0", error, sizeof(error)) > 0);
     27     REQUIRE(strcmp(error, "") == 0);
     28   }
     29 
     30   SECTION("invalid") {
     31     REQUIRE(CompareVersions("abc", "def", error, sizeof(error)) == 0);
     32     REQUIRE(strcmp(error, "invalid version name 'abc'") == 0);
     33   }
     34 
     35   SECTION("invalid no error buffer")
     36     CompareVersions("abc", "def", nullptr, 0); // no crash
     37 }