GtSeqIterator* gt_seq_iterator_sequence_buffer_new_with_buffer( GtSequenceBuffer *buffer) { GtSeqIterator *si; GtSeqIteratorSequenceBuffer *seqit; si = gt_seq_iterator_create(gt_seq_iterator_sequence_buffer_class()); seqit = gt_seq_iterator_sequence_buffer_cast(si); GT_INITARRAY(&seqit->sequencebuffer, GtUchar); seqit->descptr = gt_desc_buffer_new(); seqit->fb = gt_sequence_buffer_ref(buffer); gt_sequence_buffer_set_desc_buffer(seqit->fb, seqit->descptr); seqit->exhausted = false; seqit->unitnum = 0; seqit->withsequence = true; seqit->currentread = 0; seqit->maxread = 0; return si; }
int gt_desc_buffer_unit_test(GtError *err) { GtDescBuffer *s; static char *strs[] = { "foo", "bar", "baz"}; const char *ret; int had_err = 0; GtUword i, j; gt_error_check(err); s = gt_desc_buffer_new(); ret = gt_desc_buffer_get_next(s); gt_ensure(strcmp(ret, "") == 0); gt_ensure(ret == s->buf); gt_ensure(gt_desc_buffer_length(s) == 0); gt_desc_buffer_delete(s); s = gt_desc_buffer_new(); for (i = 0; i < strlen(strs[0]); i++) { gt_desc_buffer_append_char(s, strs[0][i]); } gt_desc_buffer_finish(s); ret = gt_desc_buffer_get_next(s); gt_ensure(strcmp(ret, strs[0]) == 0); gt_ensure(ret == s->buf); gt_ensure(gt_desc_buffer_length(s) == 4); gt_desc_buffer_delete(s); s = gt_desc_buffer_new(); for (j = 0; j < 2; j++) { for (i = 0; i < strlen(strs[j]); i++) { gt_desc_buffer_append_char(s, strs[j][i]); } gt_desc_buffer_finish(s); } ret = gt_desc_buffer_get_next(s); gt_ensure(strcmp(ret, strs[0]) == 0); gt_ensure(ret == s->buf); ret = gt_desc_buffer_get_next(s); gt_ensure(strcmp(ret, strs[1]) == 0); gt_ensure(ret == s->buf+4); gt_ensure(gt_desc_buffer_length(s) == 8); gt_desc_buffer_delete(s); s = gt_desc_buffer_new(); for (j = 0; j < 3; j++) { for (i = 0; i < strlen(strs[j]); i++) { gt_desc_buffer_append_char(s, strs[j][i]); } gt_desc_buffer_finish(s); } ret = gt_desc_buffer_get_next(s); gt_ensure(strcmp(ret, strs[0]) == 0); gt_ensure(ret == s->buf); ret = gt_desc_buffer_get_next(s); gt_ensure(strcmp(ret, strs[1]) == 0); gt_ensure(ret == s->buf+4); ret = gt_desc_buffer_get_next(s); gt_ensure(strcmp(ret, strs[2]) == 0); gt_ensure(ret == s->buf+8); gt_ensure(gt_desc_buffer_length(s) == 12); gt_desc_buffer_delete(s); return had_err; }