embox

Форк
0
/
msg_buff_test.c 
70 строк · 1.7 Кб
1
/**
2
 * @file
3
 * @brief
4
 *
5
 * @author Aleksey Zhmulin
6
 * @date 18.07.23
7
 */
8
#include <stddef.h>
9

10
#include <embox/test.h>
11
#include <lib/libds/msg_buff.h>
12

13
EMBOX_TEST_SUITE("tests for msg_buff");
14

15
#define MAX_MSG_SIZE  16
16
#define MSG_BUFF_SIZE (32 + (4 * sizeof(size_t)))
17

18
TEST_CASE("Write/read messages") {
19
	char storage[MSG_BUFF_SIZE];
20
	char message[MAX_MSG_SIZE + 1];
21
	struct msg_buff buf;
22
	size_t msg_len;
23
	size_t space;
24

25
	msg_buff_init(&buf, storage, sizeof(storage));
26

27
	test_assert_true(msg_buff_empty(&buf));
28

29
	msg_len = msg_buff_dequeue(&buf, message, MSG_BUFF_SIZE);
30

31
	test_assert_equal(msg_len, 0);
32

33
	msg_len = msg_buff_enqueue(&buf, "abcd", 4);
34
	test_assert_equal(msg_len, 4);
35

36
	msg_len = msg_buff_enqueue(&buf, "ef", 2);
37
	test_assert_equal(msg_len, 2);
38

39
	msg_len = msg_buff_enqueue(&buf, "hello", 5);
40
	test_assert_equal(msg_len, 5);
41

42
	msg_len = msg_buff_enqueue(&buf, "--------------------------", 26);
43
	test_assert_equal(msg_len, 0);
44

45
	space = msg_buff_space(&buf);
46
	test_assert_equal(space, 20);
47

48
	msg_len = msg_buff_enqueue(&buf, "---------------!----", 20);
49
	test_assert_equal(msg_len, 20);
50

51
	msg_len = msg_buff_dequeue(&buf, message, MAX_MSG_SIZE);
52
	test_assert_equal(msg_len, 4);
53
	message[msg_len] = '\0';
54
	test_assert_str_equal("abcd", message);
55

56
	msg_len = msg_buff_dequeue(&buf, message, MAX_MSG_SIZE);
57
	test_assert_equal(msg_len, 2);
58
	message[msg_len] = '\0';
59
	test_assert_str_equal("ef", message);
60

61
	msg_len = msg_buff_dequeue(&buf, message, MAX_MSG_SIZE);
62
	test_assert_equal(msg_len, 5);
63
	message[msg_len] = '\0';
64
	test_assert_str_equal("hello", message);
65

66
	msg_len = msg_buff_dequeue(&buf, message, MAX_MSG_SIZE);
67
	test_assert_equal(msg_len, 0);
68
	message[MAX_MSG_SIZE] = '\0';
69
	test_assert_str_equal("---------------!", message);
70
}
71

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.