/ tests / lib / pkg.c
pkg.c
 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  }