void gt_condenseq_delete(GtCondenseq *condenseq) { if (condenseq != NULL) { GtUword i; for (i = 0; i < condenseq->ldb_nelems; i++) { gt_editscript_delete(condenseq->links[i].editscript); } for (i = 0; i < condenseq->udb_nelems; i++) { GT_FREEARRAY(&(condenseq->uniques[i].links), uint32_t); } gt_alphabet_delete(condenseq->alphabet); gt_encseq_delete(condenseq->unique_es); gt_free(condenseq->buffer); gt_free(condenseq->filename); gt_free(condenseq->links); gt_free(condenseq->orig_ids); gt_free(condenseq->ubuffer); gt_free(condenseq->uniques); gt_intset_delete(condenseq->sdstab); gt_intset_delete(condenseq->ssptab); gt_free(condenseq); } }
int gt_intset_16_unit_test(GtError *err) { int had_err = 0; GtIntset *is; GtUword num_of_elems = gt_rand_max(((GtUword) 1) << 10) + 1, *arr = gt_malloc(sizeof (*arr) * num_of_elems), stepsize = GT_DIV2(num_of_elems <<4 / num_of_elems), idx; size_t is_size; gt_error_check(err); arr[0] = gt_rand_max(stepsize) + 1; for (idx = (GtUword) 1; idx < num_of_elems; ++idx) { arr[idx] = arr[idx - 1] + gt_rand_max(stepsize) + 1; } is_size = gt_intset_16_size_of_rep(arr[num_of_elems - 1], num_of_elems); if (!had_err) { if (is_size < (size_t) UINT_MAX) { is = gt_intset_16_new(arr[num_of_elems - 1], num_of_elems); for (idx = 0; idx < num_of_elems; idx++) { gt_intset_16_add(is, arr[idx]); gt_ensure(idx + 1 == gt_intset_16_size(is)); if (idx < num_of_elems - 1) gt_ensure(gt_intset_16_get_idx_smallest_geq(is, arr[idx] + 1) == num_of_elems); } gt_ensure(gt_intset_16_elems_is_valid(is)); gt_ensure(gt_intset_16_secstart_is_valid(is)); for (idx = 0; !had_err && idx < num_of_elems; idx++) { if (arr[idx] != 0 && arr[idx - 1] != (arr[idx] - 1)) { gt_ensure( gt_intset_16_get_idx_smallest_geq_test(is, arr[idx] - 1) == idx); gt_ensure( gt_intset_16_get_idx_smallest_geq(is, arr[idx] - 1) == idx); } gt_ensure(gt_intset_16_get_test(is, idx) == arr[idx]); gt_ensure(gt_intset_16_get(is, idx) == arr[idx]); gt_ensure( gt_intset_16_get_idx_smallest_geq_test(is, arr[idx] + 1) == idx + 1); gt_ensure( gt_intset_16_get_idx_smallest_geq(is, arr[idx] + 1) == idx + 1); } if (!had_err) had_err = gt_intset_unit_test_notinset(is, 0, arr[0] - 1, err); if (!had_err) had_err = gt_intset_unit_test_check_seqnum(is, 0, arr[0] - 1, 0, err); for (idx = (GtUword) 1; !had_err && idx < num_of_elems; idx++) { had_err = gt_intset_unit_test_notinset(is, arr[idx - 1] + 1, arr[idx] - 1, err); if (!had_err) had_err = gt_intset_unit_test_check_seqnum(is, arr[idx - 1] + 1, arr[idx] - 1, idx, err); } gt_intset_delete(is); } } gt_free(arr); return had_err; }