void test_parse_prerelerease_metadata() { test_start("parse_prerelease_metadata"); char buf[] = "1.2.12-alpha.1+20130313144700"; semver_t ver = {}; int error = semver_parse(buf, &ver); assert(error == 0); assert(ver.major == 1); assert(ver.minor == 2); assert(ver.patch == 12); assert(strcmp(ver.prerelease, "alpha.1") == 0); assert(strcmp(ver.metadata, "20130313144700") == 0); semver_free(&ver); test_end(); }
int main() { // // Major.Minor.Patch // Semver* semver100 = semver_new(1, 0, 0); Semver* semver100b = semver_new(1, 0, 0); Semver* semver200 = semver_new(2, 0, 0); Semver* semver210 = semver_new(2, 1, 0); Semver* semver211 = semver_new(2, 1, 1); assert(semver_cmp(semver100, semver200) == -1); assert(semver_cmp(semver200, semver210) == -1); assert(semver_cmp(semver210, semver211) == -1); assert(semver_cmp(semver100, semver100b) == 0); assert(semver_cmp(semver211, semver210) == 1); assert(semver_cmp(semver210, semver200) == 1); assert(semver_cmp(semver200, semver100) == 1); // // With pre-release strings // Semver* semver100alpha = semver_new_pre_release(1, 0, 0, "alpha"); Semver* semver100alpha1 = semver_new_pre_release(1, 0, 0, "alpha.1"); Semver* semver100alphabeta = semver_new_pre_release(1, 0, 0, "alpha.beta"); Semver* semver100beta = semver_new_pre_release(1, 0, 0, "beta"); Semver* semver100beta2 = semver_new_pre_release(1, 0, 0, "beta.2"); Semver* semver100beta11 = semver_new_pre_release(1, 0, 0, "beta.11"); Semver* semver100rc1 = semver_new_pre_release(1, 0, 0, "rc.1"); assert(semver_cmp(semver100alpha, semver100alpha1) < 0); assert(semver_cmp(semver100alpha1, semver100alphabeta) < 0); assert(semver_cmp(semver100alphabeta, semver100beta) < 0); assert(semver_cmp(semver100beta, semver100beta2) < 0); assert(semver_cmp(semver100beta2, semver100beta11) < 0); assert(semver_cmp(semver100beta11, semver100rc1) < 0); assert(semver_cmp(semver100rc1, semver100) < 0); assert(semver_cmp(semver100, semver100rc1) > 0); assert(semver_cmp(semver100rc1, semver100beta11) > 0); assert(semver_cmp(semver100beta11, semver100beta2) > 0); assert(semver_cmp(semver100beta2, semver100beta) > 0); assert(semver_cmp(semver100beta, semver100alphabeta) > 0); assert(semver_cmp(semver100alphabeta, semver100alpha1) > 0); assert(semver_cmp(semver100alpha1, semver100alpha) > 0); semver_free(semver100); semver_free(semver100b); semver_free(semver200); semver_free(semver210); semver_free(semver211); semver_free(semver100alpha); semver_free(semver100alpha1); semver_free(semver100alphabeta); semver_free(semver100beta); semver_free(semver100beta2); semver_free(semver100beta11); semver_free(semver100rc1); }
void test_satisfies() { test_start("semver_satisfies"); struct test_case_match cases[] = { {"1", "0", ">=", 1}, {"1", "3", ">=", 0}, {"1", "1", ">=", 1}, {"1.5", "0.8", ">=", 1}, {"1.2", "2.2", ">=", 0}, {"3.0", "1.5", ">=", 1}, {"1.0", "1.0", ">=", 1}, {"1.0.9", "1.0.0", ">=", 1}, {"1.1.5", "1.1.9", ">=", 0}, {"1.2.2", "1.2.9", ">=", 0}, {"1.0.0", "1.0.0", ">=", 1}, {"1", "0", "<=", 0}, {"1", "3", "<=", 1}, {"1", "1", "<=", 1}, {"1.5", "0.8", "<=", 0}, {"1.2", "2.2", "<=", 1}, {"3.0", "1.5", "<=", 0}, {"1.0", "1.0", "<=", 1}, {"1.0.9", "1.0.0", "<=", 0}, {"1.1.5", "1.1.9", "<=", 1}, {"1.2.2", "1.2.9", "<=", 1}, {"1.0.0", "1.0.0", "<=", 1}, {"1", "0", "=", 0}, {"1", "3", "=", 0}, {"1", "1", "=", 1}, {"1.5", "0.8", "=", 0}, {"1.2", "2.2", "=", 0}, {"3.0", "1.5", "=", 0}, {"1.0", "1.0", "=", 1}, {"1.0.9", "1.0.0", "=", 0}, {"1.1.5", "1.1.9", "=", 0}, {"1.2.2", "1.2.9", "=", 0}, {"1.0.0", "1.0.0", "=", 1}, {"1", "0", ">", 1}, {"1", "3", ">", 0}, {"1", "1", ">", 0}, {"1.5", "0.8", ">", 1}, {"1.2", "2.2", ">", 0}, {"3.0", "1.5", ">", 1}, {"1.0", "1.0", ">", 0}, {"1.0.9", "1.0.0", ">", 1}, {"1.1.5", "1.1.9", ">", 0}, {"1.2.2", "1.2.9", ">", 0}, {"1.0.0", "1.0.0", ">", 0}, {"1", "0", "<", 0}, {"1", "3", "<", 1}, {"1", "1", "<", 0}, {"1.5", "0.8", "<", 0}, {"1.2", "2.2", "<", 1}, {"3.0", "1.5", "<", 0}, {"1.0", "1.0", "<", 0}, {"1.0.9", "1.0.0", "<", 0}, {"1.1.5", "1.1.9", "<", 1}, {"1.2.2", "1.2.9", "<", 1}, {"1.0.0", "1.0.0", "<", 0}, {"1", "0", "^", 0}, {"1", "3", "^", 0}, {"1", "1", "^", 1}, {"1.5", "0.8", "^", 0}, {"1.2", "2.2", "^", 0}, {"3.0", "1.5", "^", 0}, {"1.0", "1.0", "^", 1}, {"1.0.9", "1.0.0", "^", 1}, {"1.1.5", "1.1.9", "^", 1}, {"1.3.2", "1.1.9", "^", 1}, {"1.1.2", "1.5.9", "^", 1}, {"0.1.2", "1.5.9", "^", 0}, {"0.1.2", "0.2.9", "^", 0}, {"1.2.2", "1.2.9", "^", 1}, {"1.0.0", "1.0.0", "^", 1}, {"1", "0", "~", 0}, {"1", "3", "~", 0}, {"1", "1", "~", 1}, {"1.5", "0.8", "~", 0}, {"1.2", "2.2", "~", 0}, {"3.0", "1.5", "~", 0}, {"1.0", "1.0", "~", 1}, {"1.0.9", "1.0.0", "~", 1}, {"1.1.5", "1.1.9", "~", 1}, {"1.1.9", "1.1.3", "~", 1}, {"1.2.2", "1.3.9", "~", 0}, {"1.0.0", "1.0.0", "~", 1}, }; for (int i = 0; i < 82; i++) { struct test_case_match args = cases[i]; semver_t verX = {}; semver_t verY = {}; semver_parse(args.x, &verX); semver_parse(args.y, &verY); int resolution = semver_satisfies(verX, verY, args.op); assert(resolution == args.expected); semver_free(&verX); semver_free(&verY); } test_end(); }