Example #1
0
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);
}
Example #2
0
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;
}