blob: 9a851dc097b512cc1788384083da41638efe5439 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
/* Copyright (c) 2017-2018 Dovecot authors, see the included COPYING file */
#include "test-lib.h"
#include "buffer.h"
#include "memarea.h"
static bool test_callback_called = FALSE;
static void test_callback(buffer_t *buf)
{
test_assert(!test_callback_called);
test_callback_called = TRUE;
buffer_free(&buf);
}
void test_memarea(void)
{
struct memarea *area, *area2;
buffer_t *buf;
size_t size;
test_begin("memarea");
buf = buffer_create_dynamic(default_pool, 128);
buffer_append(buf, "123", 3);
area = memarea_init(buf->data, buf->used, test_callback, buf);
test_assert(memarea_get_refcount(area) == 1);
test_assert(memarea_get(area, &size) == buf->data && size == buf->used);
area2 = area;
memarea_ref(area2);
test_assert(memarea_get_refcount(area2) == 2);
test_assert(memarea_get(area2, &size) == buf->data && size == buf->used);
memarea_unref(&area2);
test_assert(area2 == NULL);
test_assert(!test_callback_called);
memarea_unref(&area);
test_assert(test_callback_called);
test_end();
}
|