Skip to content

Commit

Permalink
libc: string.h: add cmp functions tests
Browse files Browse the repository at this point in the history
JIRA: CI-231
  • Loading branch information
maska989 committed Apr 28, 2023
1 parent b5f81b2 commit 17631ea
Show file tree
Hide file tree
Showing 2 changed files with 128 additions and 0 deletions.
1 change: 1 addition & 0 deletions libc/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ void runner(void)
RUN_TEST_GROUP(stdio_scanf_squareBrackets);
RUN_TEST_GROUP(stdio_scanf_rest);
RUN_TEST_GROUP(string_chr);
RUN_TEST_GROUP(string_cmp);
}


Expand Down
127 changes: 127 additions & 0 deletions libc/string_cmp.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
/*
* Phoenix-RTOS
*
* POSIX.1-2017 standard library functions tests
* HEADER:
* - string.h
* TESTED:
* - memcmp()
* - strcmp()
* - strncmp()
* - strcoll()
*
* Copyright 2023 Phoenix Systems
* Author: Damian Modzelewski
*
* This file is part of Phoenix-RTOS.
*
* %LICENSE%
*/


#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <limits.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <unistd.h>
#include <limits.h>
#include <unity_fixture.h>


#define BUFF_SIZE 128


TEST_GROUP(string_cmp);


TEST_SETUP(string_cmp)
{
}


TEST_TEAR_DOWN(string_cmp)
{
}


TEST(string_cmp, cmp_test)
{
char asciiSet[BUFF_SIZE] = { 0 },
nonZeroAsciiSet[BUFF_SIZE] = { 0 },
empty[BUFF_SIZE] = { 0 };
int i;

for (i = 1; i < BUFF_SIZE; i++) {
nonZeroAsciiSet[i - 1] = i;
asciiSet[i] = i;
}
errno = 0;

TEST_ASSERT_EQUAL_INT(0, memcmp(asciiSet, asciiSet, BUFF_SIZE));
TEST_ASSERT_EQUAL_INT(0, strncmp(asciiSet, asciiSet, BUFF_SIZE));
TEST_ASSERT_EQUAL_INT(0, strcmp(asciiSet, asciiSet));
TEST_ASSERT_EQUAL_INT(0, strcoll(asciiSet, asciiSet));
TEST_ASSERT_EQUAL_INT(0, errno);

TEST_ASSERT_LESS_THAN_INT(0, memcmp(asciiSet, nonZeroAsciiSet, BUFF_SIZE));
TEST_ASSERT_LESS_THAN_INT(0, strncmp(asciiSet, nonZeroAsciiSet, BUFF_SIZE));
TEST_ASSERT_LESS_THAN_INT(0, strcmp(asciiSet, nonZeroAsciiSet));
TEST_ASSERT_LESS_THAN_INT(0, strcoll(asciiSet, nonZeroAsciiSet));
TEST_ASSERT_EQUAL_INT(0, errno);

TEST_ASSERT_GREATER_THAN_INT(0, memcmp(nonZeroAsciiSet, asciiSet, BUFF_SIZE));
TEST_ASSERT_GREATER_THAN_INT(0, strncmp(nonZeroAsciiSet, asciiSet, BUFF_SIZE));
TEST_ASSERT_GREATER_THAN_INT(0, strcmp(nonZeroAsciiSet, asciiSet));
TEST_ASSERT_GREATER_THAN_INT(0, strcoll(nonZeroAsciiSet, asciiSet));
TEST_ASSERT_EQUAL_INT(0, errno);

TEST_ASSERT_LESS_THAN_INT(0, memcmp(empty, asciiSet, BUFF_SIZE));
TEST_ASSERT_EQUAL_INT(0, strncmp(empty, asciiSet, BUFF_SIZE));
TEST_ASSERT_EQUAL_INT(0, strcmp(empty, asciiSet));
TEST_ASSERT_EQUAL_INT(0, strcoll(empty, asciiSet));
TEST_ASSERT_EQUAL_INT(0, errno);

TEST_ASSERT_LESS_THAN_INT(0, memcmp(empty, nonZeroAsciiSet, BUFF_SIZE));
TEST_ASSERT_LESS_THAN_INT(0, strncmp(empty, nonZeroAsciiSet, BUFF_SIZE));
TEST_ASSERT_LESS_THAN_INT(0, strcmp(empty, nonZeroAsciiSet));
TEST_ASSERT_LESS_THAN_INT(0, strcoll(empty, nonZeroAsciiSet));
TEST_ASSERT_EQUAL_INT(0, errno);

TEST_ASSERT_GREATER_THAN_INT(0, memcmp(asciiSet, empty, BUFF_SIZE));
TEST_ASSERT_EQUAL_INT(0, strncmp(asciiSet, empty, BUFF_SIZE));
TEST_ASSERT_EQUAL_INT(0, strcmp(asciiSet, empty));
TEST_ASSERT_EQUAL_INT(0, strcoll(asciiSet, empty));
TEST_ASSERT_EQUAL_INT(0, errno);

TEST_ASSERT_EQUAL_INT(0, memcmp(empty, empty, BUFF_SIZE));
TEST_ASSERT_EQUAL_INT(0, strncmp(empty, empty, BUFF_SIZE));
TEST_ASSERT_EQUAL_INT(0, strcmp(empty, empty));
TEST_ASSERT_EQUAL_INT(0, strcoll(empty, empty));
TEST_ASSERT_EQUAL_INT(0, errno);

TEST_ASSERT_LESS_THAN_INT(0, memcmp(&asciiSet[BUFF_SIZE / 2], &nonZeroAsciiSet[BUFF_SIZE / 2], BUFF_SIZE / 2));
TEST_ASSERT_LESS_THAN_INT(0, strncmp(&asciiSet[BUFF_SIZE / 2], &nonZeroAsciiSet[BUFF_SIZE / 2], BUFF_SIZE / 2));
TEST_ASSERT_LESS_THAN_INT(0, strcmp(&asciiSet[BUFF_SIZE / 2], &nonZeroAsciiSet[BUFF_SIZE / 2]));
TEST_ASSERT_LESS_THAN_INT(0, strcoll(&asciiSet[BUFF_SIZE / 2], &nonZeroAsciiSet[BUFF_SIZE / 2]));
TEST_ASSERT_EQUAL_INT(0, errno);

TEST_ASSERT_GREATER_THAN_INT(0, memcmp(&asciiSet[sizeof(asciiSet) - 1], &nonZeroAsciiSet[sizeof(nonZeroAsciiSet) - 1], 1));
TEST_ASSERT_GREATER_THAN_INT(0, strncmp(&asciiSet[sizeof(asciiSet) - 1], &nonZeroAsciiSet[sizeof(nonZeroAsciiSet) - 1], 1));
TEST_ASSERT_GREATER_THAN_INT(0, strcmp(&asciiSet[sizeof(asciiSet) - 1], &nonZeroAsciiSet[sizeof(nonZeroAsciiSet) - 1]));
TEST_ASSERT_GREATER_THAN_INT(0, strcoll(&asciiSet[sizeof(asciiSet) - 1], &nonZeroAsciiSet[sizeof(nonZeroAsciiSet) - 1]));
TEST_ASSERT_EQUAL_INT(0, errno);

TEST_ASSERT_LESS_THAN_INT(0, memcmp(&nonZeroAsciiSet[BUFF_SIZE - 1], &asciiSet[BUFF_SIZE - 1], 1));
TEST_ASSERT_LESS_THAN_INT(0, strncmp(&nonZeroAsciiSet[BUFF_SIZE - 1], &asciiSet[BUFF_SIZE - 1], 1));

TEST_ASSERT_EQUAL_INT(0, memcmp(&nonZeroAsciiSet[sizeof(nonZeroAsciiSet) - 1], &nonZeroAsciiSet[sizeof(nonZeroAsciiSet) - 1], BUFF_SIZE - 1));
TEST_ASSERT_EQUAL_INT(0, strncmp(&nonZeroAsciiSet[sizeof(nonZeroAsciiSet) - 1], &nonZeroAsciiSet[sizeof(nonZeroAsciiSet) - 1], BUFF_SIZE - 1));
}


TEST_GROUP_RUNNER(string_cmp)
{
RUN_TEST_CASE(string_cmp, cmp_test);
}

0 comments on commit 17631ea

Please sign in to comment.