HelenOS sources
This source file includes following definitions.
- PCUT_TEST
- PCUT_TEST
- PCUT_TEST
- PCUT_TEST
- PCUT_TEST
- PCUT_TEST
#include "pcut/asserts.h"
#include <stdio.h>
#include <str.h>
#include <pcut/pcut.h>
#define BUFFER_SIZE 256
#define SET_BUFFER(str) snprintf(buffer, BUFFER_SIZE, "%s", str)
#define EQ(expected, value) PCUT_ASSERT_STR_EQUALS(expected, value)
PCUT_INIT;
PCUT_TEST_SUITE(str);
static char buffer[BUFFER_SIZE];
PCUT_TEST_BEFORE
{
memset(buffer, 0, BUFFER_SIZE);
}
PCUT_TEST(rtrim)
{
SET_BUFFER("foobar");
str_rtrim(buffer, ' ');
EQ("foobar", buffer);
SET_BUFFER(" foobar ");
str_rtrim(buffer, ' ');
EQ(" foobar", buffer);
SET_BUFFER(" ššš ");
str_rtrim(buffer, ' ');
EQ(" ššš", buffer);
SET_BUFFER("ššAAAšš");
str_rtrim(buffer, L'š');
EQ("ššAAA", buffer);
}
PCUT_TEST(ltrim)
{
SET_BUFFER("foobar");
str_ltrim(buffer, ' ');
EQ("foobar", buffer);
SET_BUFFER(" foobar ");
str_ltrim(buffer, ' ');
EQ("foobar ", buffer);
SET_BUFFER(" ššš ");
str_ltrim(buffer, ' ');
EQ("ššš ", buffer);
SET_BUFFER("ššAAAšš");
str_ltrim(buffer, L'š');
EQ("AAAšš", buffer);
}
PCUT_TEST(str_str_found)
{
const char *hs = "abracadabra";
const char *n = "raca";
char *p;
p = str_str(hs, n);
PCUT_ASSERT_TRUE((const char *)p == hs + 2);
}
PCUT_TEST(str_str_not_found)
{
const char *hs = "abracadabra";
const char *n = "racab";
char *p;
p = str_str(hs, n);
PCUT_ASSERT_TRUE(p == NULL);
}
PCUT_TEST(str_str_empty_n)
{
const char *hs = "abracadabra";
const char *n = "";
char *p;
p = str_str(hs, n);
PCUT_ASSERT_TRUE((const char *)p == hs);
}
PCUT_TEST(str_non_shortest)
{
const char overlong1[] = { 0b11000000, 0b10000000, 0 };
const char overlong2[] = { 0b11100000, 0b10000000, 0 };
const char overlong3[] = { 0b11110000, 0b10000000, 0 };
const char overlong4[] = { 0b11000001, 0b10111111, 0 };
const char overlong5[] = { 0b11100000, 0b10011111, 0b10111111, 0 };
const char overlong6[] = { 0b11110000, 0b10001111, 0b10111111, 0b10111111, 0 };
size_t offset = 0;
PCUT_ASSERT_INT_EQUALS(U_SPECIAL, str_decode(overlong1, &offset, sizeof(overlong1)));
offset = 0;
PCUT_ASSERT_INT_EQUALS(U_SPECIAL, str_decode(overlong2, &offset, sizeof(overlong2)));
offset = 0;
PCUT_ASSERT_INT_EQUALS(U_SPECIAL, str_decode(overlong3, &offset, sizeof(overlong3)));
offset = 0;
PCUT_ASSERT_INT_EQUALS(U_SPECIAL, str_decode(overlong4, &offset, sizeof(overlong4)));
offset = 0;
PCUT_ASSERT_INT_EQUALS(U_SPECIAL, str_decode(overlong5, &offset, sizeof(overlong5)));
offset = 0;
PCUT_ASSERT_INT_EQUALS(U_SPECIAL, str_decode(overlong6, &offset, sizeof(overlong6)));
char sanitized[sizeof(overlong6)];
str_cpy(sanitized, STR_NO_LIMIT, overlong1);
PCUT_ASSERT_INT_EQUALS(U_SPECIAL, sanitized[0]);
str_cpy(sanitized, STR_NO_LIMIT, overlong2);
PCUT_ASSERT_INT_EQUALS(U_SPECIAL, sanitized[0]);
str_cpy(sanitized, STR_NO_LIMIT, overlong3);
PCUT_ASSERT_INT_EQUALS(U_SPECIAL, sanitized[0]);
str_cpy(sanitized, STR_NO_LIMIT, overlong4);
PCUT_ASSERT_INT_EQUALS(U_SPECIAL, sanitized[0]);
str_cpy(sanitized, STR_NO_LIMIT, overlong5);
PCUT_ASSERT_INT_EQUALS(U_SPECIAL, sanitized[0]);
str_cpy(sanitized, STR_NO_LIMIT, overlong6);
PCUT_ASSERT_INT_EQUALS(U_SPECIAL, sanitized[0]);
}
PCUT_EXPORT(str);
HelenOS homepage, sources at GitHub