Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/pkg
Path: blob/main/tests/lib/pkg.c
2065 views
1
#include <atf-c.h>
2
#include <private/pkg.h>
3
4
ATF_TC_WITHOUT_HEAD(pkgs_insert_sorted);
5
ATF_TC_BODY(pkgs_insert_sorted, tc)
6
{
7
pkgs_t pkgs = vec_init();
8
9
ATF_REQUIRE_EQ_MSG(pkgs.d, NULL, "vec_init failed");
10
ATF_REQUIRE_EQ_MSG(pkgs.cap, 0, "vec_init failed");
11
ATF_REQUIRE_EQ_MSG(pkgs.len, 0, "vec_init failed");
12
13
struct pkg *p;
14
15
ATF_REQUIRE_EQ(EPKG_OK, pkg_new(&p, PKG_FILE));
16
ATF_REQUIRE(p != NULL);
17
p->name = xstrdup("name1");
18
ATF_REQUIRE_EQ(pkgs_insert_sorted(&pkgs, p), NULL);
19
ATF_REQUIRE_EQ_MSG(pkgs.len, 1, "Fail to insert");
20
21
p = NULL;
22
ATF_REQUIRE_EQ(EPKG_OK, pkg_new(&p, PKG_FILE));
23
p->name = xstrdup("name1");
24
ATF_REQUIRE_MSG(pkgs_insert_sorted(&pkgs, p) != NULL, "Collision not detected");
25
26
free(p->name);
27
p->name = xstrdup("aname1");
28
29
ATF_REQUIRE_EQ(pkgs_insert_sorted(&pkgs, p), NULL);
30
ATF_REQUIRE_EQ_MSG(pkgs.len, 2, "Fail to insert");
31
32
ATF_REQUIRE_STREQ(pkgs.d[0]->name, "aname1");
33
ATF_REQUIRE_STREQ(pkgs.d[1]->name, "name1");
34
}
35
36
ATF_TP_ADD_TCS(tp)
37
{
38
ATF_TP_ADD_TC(tp, pkgs_insert_sorted);
39
40
return (atf_no_error());
41
}
42
43