mirror of
https://github.com/textmate/textmate.git
synced 2026-04-28 03:00:34 -04:00
65 lines
1.9 KiB
C++
65 lines
1.9 KiB
C++
#include <version/version.h>
|
|
#include <text/format.h>
|
|
|
|
using version::less;
|
|
using version::less_or_equal;
|
|
using version::equal;
|
|
using version::greater;
|
|
|
|
void test_trailing_zero ()
|
|
{
|
|
OAK_ASSERT( less("2-beta", "2.0"));
|
|
OAK_ASSERT( less("2.0-beta", "2.0"));
|
|
OAK_ASSERT( less("2.0.0-beta", "2.0"));
|
|
OAK_ASSERT( equal("2", "2.0"));
|
|
OAK_ASSERT( equal("2", "2.0+git.hash"));
|
|
OAK_ASSERT( equal("2+git.hash", "2.0"));
|
|
OAK_ASSERT(greater("2.0.1-beta", "2.0"));
|
|
OAK_ASSERT(greater("2.1-beta", "2.0"));
|
|
}
|
|
|
|
void test_null_string ()
|
|
{
|
|
OAK_ASSERT( less(NULL_STR, "2.0"));
|
|
OAK_ASSERT( !equal(NULL_STR, "2.0"));
|
|
OAK_ASSERT(greater("2.0", NULL_STR));
|
|
}
|
|
|
|
void test_exhaustive ()
|
|
{
|
|
std::string const numbers[] = { "1", "1.01", "1.1.1", "1.1.2", "1.2", "1.2.1", "1.10", "2", "2.1", "2.1.1", "2.2" };
|
|
std::vector<std::string> versions;
|
|
|
|
for(auto number : numbers)
|
|
{
|
|
versions.push_back(number + "-alpha");
|
|
versions.push_back(number + "-alpha.1");
|
|
versions.push_back(number + "-alpha.2");
|
|
versions.push_back(number + "-alpha.3+debug");
|
|
versions.push_back(number + "-beta");
|
|
versions.push_back(number + "-beta.1");
|
|
versions.push_back(number + "-beta.2");
|
|
versions.push_back(number + "-rc.1");
|
|
versions.push_back(number);
|
|
}
|
|
|
|
for(size_t i = 0; i < versions.size(); ++i)
|
|
{
|
|
for(size_t j = i; j < versions.size(); ++j)
|
|
{
|
|
for(auto lhs : { versions[i], versions[i] + "+git.c0de" })
|
|
{
|
|
for(auto rhs : { versions[j], versions[j] + "+git.b337" })
|
|
{
|
|
auto msg = text::format("%s %c %s", lhs.c_str(), i < j ? '<' : (i == j ? '=' : '>'), rhs.c_str());
|
|
if(i < j) { OAK_MASSERT(msg, less(lhs, rhs)); }
|
|
if(i < j) { OAK_MASSERT(msg, less_or_equal(lhs, rhs)); }
|
|
if(i == j) { OAK_MASSERT(msg, less_or_equal(lhs, rhs)); }
|
|
if(i == j) { OAK_MASSERT(msg, equal(lhs, rhs)); }
|
|
if(i > j) { OAK_MASSERT(msg, greater(lhs, rhs)); }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|