Exemplo n.º 1
0
void test_different_name(void)
{
    EvalContext *ctx = EvalContextNew();
    PromiseResult result;

    PackageItem pi = {
        .name = "pkgone",
        .version = "1",
        .arch = "arch"
    };
    Attributes attr = {
        .packages = {
            .package_select = PACKAGE_VERSION_COMPARATOR_EQ
        }
    };

    assert_int_equal(ComparePackages(ctx, "pkgtwo", "1", "arch", &pi, attr, NULL, "test", &result), VERCMP_NO_MATCH);

    EvalContextDestroy(ctx);
}

void test_wildcard_arch(void)
{
    EvalContext *ctx = EvalContextNew();
    PromiseResult result;

    PackageItem pi = {
        .name = "foobar",
        .version = "1",
        .arch = "arch"
    };
    Attributes attr = {
        .packages = {
            .package_select = PACKAGE_VERSION_COMPARATOR_EQ
        }
    };

    assert_int_equal(ComparePackages(ctx, "foobar", "1", "*", &pi, attr, NULL, "test", &result), VERCMP_MATCH);

    EvalContextDestroy(ctx);
}

void test_non_matching_arch(void)
{
    EvalContext *ctx = EvalContextNew();
    PromiseResult result;

    PackageItem pi = {
        .name = "foobar",
        .version = "1",
        .arch = "s390x"
    };
    Attributes attr = {
        .packages = {
            .package_select = PACKAGE_VERSION_COMPARATOR_EQ
        }
    };

    assert_int_equal(ComparePackages(ctx, "foobar", "1", "s390", &pi, attr, NULL, "test", &result), VERCMP_NO_MATCH);

    EvalContextDestroy(ctx);
}

VersionCmpResult DoCompare(const char *lhs, const char *rhs, PackageVersionComparator cmp)
{
    EvalContext *ctx = EvalContextNew();
    PromiseResult result;

    PackageItem pi = {
        .name = "foobar",
        .version = (char*)lhs,
        .arch = "somearch"
    };
    Attributes a = {
        .packages = {
            .package_select = cmp,
        }
    };

    VersionCmpResult cmp_result = ComparePackages(ctx, "foobar", rhs, "somearch", &pi, a, NULL, "test", &result);

    EvalContextDestroy(ctx);

    return cmp_result;
}

void test_wildcard_version(void)
{
    assert_int_equal(DoCompare("1.0-1", "*", PACKAGE_VERSION_COMPARATOR_EQ), VERCMP_MATCH);
}
#include <setjmp.h>
#include <cmockery.h>
#include <stdarg.h>

int ComparePackages(const char *n, const char *v, const char *a, PackageItem * pi, enum version_cmp cmp);

void test_different_name(void **context)
{
    PackageItem pi = {
        .name = "pkgone",
        .version = "1",
        .arch = "arch"
    };

    assert_int_equal(ComparePackages("pkgtwo", "1", "arch", &pi, cfa_eq), false);
}

void test_wildcard_arch(void **context)
{
    PackageItem pi = {
        .name = "foobar",
        .version = "1",
        .arch = "arch"
    };

    assert_int_equal(ComparePackages("foobar", "1", "*", &pi, cfa_eq), true);
}

void test_non_matching_arch(void **context)
{