forked from github/server
Test, sorting units by skill and level
This commit is contained in:
parent
a93d8fd56b
commit
9bd439e2e1
2 changed files with 24 additions and 3 deletions
|
@ -40,8 +40,12 @@ int autostudy_init(student students[], int max_students, region *r)
|
||||||
init_order(u->thisorder, u->faction->locale);
|
init_order(u->thisorder, u->faction->locale);
|
||||||
st->sk = getskill(u->faction->locale);
|
st->sk = getskill(u->faction->locale);
|
||||||
st->level = effskill_study(u, st->sk);
|
st->level = effskill_study(u, st->sk);
|
||||||
|
st->learn = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (nstudents > 0) {
|
||||||
|
qsort(students, nstudents, sizeof(student), cmp_students);
|
||||||
|
}
|
||||||
return nstudents;
|
return nstudents;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -55,7 +59,6 @@ void do_autostudy(region *r) {
|
||||||
int i;
|
int i;
|
||||||
skill_t sk = NOSKILL;
|
skill_t sk = NOSKILL;
|
||||||
|
|
||||||
qsort(students, nstudents, sizeof(student), cmp_students);
|
|
||||||
for (i = 0; i != nstudents; ++i) {
|
for (i = 0; i != nstudents; ++i) {
|
||||||
if (students[i].u) {
|
if (students[i].u) {
|
||||||
if (sk == NOSKILL) {
|
if (sk == NOSKILL) {
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
|
|
||||||
static void test_autostudy(CuTest *tc) {
|
static void test_autostudy(CuTest *tc) {
|
||||||
student students[4];
|
student students[4];
|
||||||
unit *u1, *u2;
|
unit *u1, *u2, *u3;
|
||||||
faction *f;
|
faction *f;
|
||||||
region *r;
|
region *r;
|
||||||
|
|
||||||
|
@ -24,9 +24,27 @@ static void test_autostudy(CuTest *tc) {
|
||||||
f = test_create_faction(NULL);
|
f = test_create_faction(NULL);
|
||||||
u1 = test_create_unit(f, r);
|
u1 = test_create_unit(f, r);
|
||||||
u1->thisorder = create_order(K_AUTOSTUDY, f->locale, skillnames[SK_ENTERTAINMENT]);
|
u1->thisorder = create_order(K_AUTOSTUDY, f->locale, skillnames[SK_ENTERTAINMENT]);
|
||||||
|
test_create_unit(f, r);
|
||||||
u2 = test_create_unit(f, r);
|
u2 = test_create_unit(f, r);
|
||||||
u2->thisorder = create_order(K_AUTOSTUDY, f->locale, skillnames[SK_ENTERTAINMENT]);
|
u2->thisorder = create_order(K_AUTOSTUDY, f->locale, skillnames[SK_ENTERTAINMENT]);
|
||||||
CuAssertIntEquals(tc, 2, autostudy_init(students, 4, r));
|
set_level(u2, SK_ENTERTAINMENT, 2);
|
||||||
|
u3 = test_create_unit(f, r);
|
||||||
|
u3->thisorder = create_order(K_AUTOSTUDY, f->locale, skillnames[SK_PERCEPTION]);
|
||||||
|
students[3].u = NULL;
|
||||||
|
CuAssertIntEquals(tc, 3, autostudy_init(students, 4, r));
|
||||||
|
CuAssertPtrEquals(tc, u2, students[0].u);
|
||||||
|
CuAssertIntEquals(tc, 2, students[0].level);
|
||||||
|
CuAssertIntEquals(tc, 0, students[0].learn);
|
||||||
|
CuAssertIntEquals(tc, SK_ENTERTAINMENT, students[0].sk);
|
||||||
|
CuAssertPtrEquals(tc, u1, students[1].u);
|
||||||
|
CuAssertIntEquals(tc, 0, students[1].level);
|
||||||
|
CuAssertIntEquals(tc, 0, students[1].learn);
|
||||||
|
CuAssertIntEquals(tc, SK_ENTERTAINMENT, students[1].sk);
|
||||||
|
CuAssertPtrEquals(tc, u3, students[2].u);
|
||||||
|
CuAssertIntEquals(tc, 0, students[2].level);
|
||||||
|
CuAssertIntEquals(tc, 0, students[2].learn);
|
||||||
|
CuAssertIntEquals(tc, SK_PERCEPTION, students[2].sk);
|
||||||
|
CuAssertPtrEquals(tc, NULL, students[3].u);
|
||||||
test_teardown();
|
test_teardown();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue