void test_spellbooks(CuTest * tc) { spell *sp; spellbook *herp, *derp; spellbook_entry *entry; const char * sname = "herpderp"; test_cleanup(); herp = get_spellbook("herp"); derp = get_spellbook("derp"); CuAssertPtrNotNull(tc, herp); CuAssertPtrNotNull(tc, derp); CuAssertTrue(tc, derp!=herp); CuAssertStrEquals(tc, "herp", herp->name); CuAssertStrEquals(tc, "derp", derp->name); sp = create_spell(sname, 0); spellbook_add(herp, sp, 1); CuAssertPtrNotNull(tc, sp); entry = spellbook_get(herp, sp); CuAssertPtrNotNull(tc, entry); CuAssertPtrEquals(tc, sp, entry->sp); /* CuAssertPtrEquals(tc, 0, spellbook_get(derp, sname)); */ test_cleanup(); herp = get_spellbook("herp"); CuAssertPtrNotNull(tc, herp); /* CuAssertPtrEquals(tc, 0, spellbook_get(herp, sname)); */ }
void spellbook_add(spellbook *sb, struct spell * sp, int level) { spellbook_entry * sbe; assert(sb && sp && level>0); #ifndef NDEBUG if (spellbook_get(sb, sp)) { log_error("duplicate spell in spellbook '%s': '%s'\n", sb->name, sp->sname); } #endif sbe = (spellbook_entry *)malloc(sizeof(spellbook_entry)); sbe->sp = sp; sbe->level = level; ql_push(&sb->spells, sbe); }
void test_updatespells(CuTest * tc) { faction * f; spell * sp; spellbook *book = 0; test_cleanup(); f = test_create_faction(0); sp = create_spell("testspell", 0); CuAssertPtrNotNull(tc, sp); book = create_spellbook("spells"); CuAssertPtrNotNull(tc, book); spellbook_add(book, sp, 1); CuAssertPtrEquals(tc, 0, f->spellbook); pick_random_spells(f, 1, book, 1); CuAssertPtrNotNull(tc, f->spellbook); CuAssertIntEquals(tc, 1, ql_length(f->spellbook->spells)); CuAssertPtrNotNull(tc, spellbook_get(f->spellbook, sp)); }
void test_named_spellbooks(CuTest * tc) { spell *sp; spellbook *sb; spellbook_entry *sbe; int counter = 0; sb = create_spellbook(0); CuAssertPtrNotNull(tc, sb); CuAssertPtrEquals(tc, NULL, sb->name); spellbook_clear(sb); free(sb); sb = create_spellbook("spells"); CuAssertPtrNotNull(tc, sb); CuAssertStrEquals(tc, "spells", sb->name); sp = create_spell("testspell"); spellbook_add(sb, sp, 1); CuAssertPtrNotNull(tc, sb->spells); sbe = spellbook_get(sb, sp); CuAssertPtrNotNull(tc, sbe); CuAssertIntEquals(tc, 1, sbe->level); CuAssertPtrEquals(tc, sp, spellref_get(&sbe->spref)); spellbook_foreach(sb, count_spell_cb, &counter); CuAssertIntEquals(tc, 1, counter); #ifdef TODO /* try adding the same spell twice. that should fail */ spellbook_add(sb, sp, 1); spellbook_foreach(sb, count_spell_cb, &counter); CuAssertIntEquals(tc, 1, counter); #endif spellbook_clear(sb); free(sb); }