Ditch that symbol table hack. It's not portable.
[beanstalkd.git] / tests / test_job.c
blobdf2c3980429781980ec8edc4349a84ebd0311fa0
1 #include <stdlib.h>
2 #include <stdio.h>
4 #include "../cut.h"
5 #include "../tube.h"
6 #include "../job.h"
7 #include "../util.h"
8 #include "../pq.h"
10 static tube default_tube;
12 void
13 __CUT_BRINGUP__job()
15 job_init();
16 TUBE_ASSIGN(default_tube, make_tube("default"));
19 void
20 __CUT__job_test_creation()
22 job j;
24 j = make_job(1, 0, 1, 0, default_tube);
25 ASSERT(j->pri == 1, "priority should match");
28 void
29 __CUT__job_test_cmp_pris()
31 job a, b;
33 a = make_job(1, 0, 1, 0, default_tube);
34 b = make_job(1 << 27, 0, 1, 0, default_tube);
36 ASSERT(job_pri_cmp(a, b) < 0, "should be a < b");
39 void
40 __CUT__job_test_cmp_ids()
42 job a, b;
44 a = make_job(1, 0, 1, 0, default_tube);
45 b = make_job(1, 0, 1, 0, default_tube);
47 b->id <<= 49;
48 ASSERT(job_pri_cmp(a, b) < 0, "should be a < b");
52 void
53 __CUT__job_test_large_pris()
55 job a, b;
57 a = make_job(1, 0, 1, 0, default_tube);
58 b = make_job(-5, 0, 1, 0, default_tube);
60 ASSERT(job_pri_cmp(a, b) < 0, "should be a < b");
62 a = make_job(-5, 0, 1, 0, default_tube);
63 b = make_job(1, 0, 1, 0, default_tube);
65 ASSERT(job_pri_cmp(a, b) > 0, "should be a > b");
68 void
69 __CUT__job_test_hash_free()
71 job j;
72 unsigned long long int jid = 83;
74 j = make_job_with_id(0, 0, 1, 0, default_tube, jid);
75 job_free(j);
77 ASSERT(!job_find(jid), "job should be missing");
80 void
81 __CUT__job_test_hash_free_next()
83 job a, b;
84 unsigned long long int aid = 97, bid = 12386;
86 b = make_job_with_id(0, 0, 1, 0, default_tube, bid);
87 a = make_job_with_id(0, 0, 1, 0, default_tube, aid);
89 ASSERT(a->ht_next == b, "b should be chained to a");
91 job_free(b);
93 ASSERT(a->ht_next == NULL, "job should be missing");
96 void
97 __CUT__job_test_all_jobs_used()
99 job j, x;
101 j = make_job(0, 0, 1, 0, default_tube);
102 ASSERT(get_all_jobs_used() == 1, "should match");
104 x = allocate_job(10);
105 ASSERT(get_all_jobs_used() == 1, "should match");
107 job_free(x);
108 ASSERT(get_all_jobs_used() == 1, "should match");
110 job_free(j);
111 ASSERT(get_all_jobs_used() == 0, "should match");
114 void
115 __CUT_TAKEDOWN__job()