Esempio n. 1
0
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();
}
Esempio n. 2
0
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);
}
Esempio n. 3
0
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();
}