static void brigade_flatten_leftover(void **state) { char buf[80]; char bufcmp[80]; char buf2[2]; char bufcmp2[2]; size_t len = sizeof(buf); size_t len2 = sizeof(buf2); sln_brigade_t *bb; sln_bucket_t *e1; sln_bucket_t *e2; SLN_ERR(sln_brigade_create(&bb)); SLN_ERR(sln_bucket_create_empty(&e1, 40)); memset(e1->data, 'A', e1->size); SLN_BRIGADE_INSERT_TAIL(bb, e1); SLN_ERR(sln_bucket_create_empty(&e2, 42)); memset(e2->data, 'B', e2->size); SLN_BRIGADE_INSERT_TAIL(bb, e2); SLN_ERR(sln_brigade_flatten(bb, &buf[0], &len)); assert_int_equal(len, 80); assert_int_equal(sln_brigade_size(bb), 2); SLN_ERR(sln_brigade_flatten(bb, &buf2[0], &len2)); assert_int_equal(len2, 2); sln_brigade_destroy(bb); memset(&bufcmp[0], 'A', 40); memset(&bufcmp[0]+40, 'B', 40); assert_memory_equal(buf, bufcmp, 80); memset(&bufcmp2[0], 'B', 2); assert_memory_equal(buf2, bufcmp2, 2); }
static selene_error_t* tok_copy_brigade_cb(sln_tok_value_t *v, void *baton_) { baton_t *baton = (baton_t *)baton_; if (baton->count == 0) { v->next = TOK_COPY_BRIGADE; v->wantlen = 4; } if (baton->count == 1) { char buf[4]; size_t len = sizeof(buf); v->next = TOK_DONE; SLN_ERR(sln_brigade_flatten(v->v.bb, &buf[0], &len)); assert_memory_equal(buf, "AAAA", 4); } baton->count++; return SELENE_SUCCESS; }