Add strnlen test
This commit is contained in:
parent
d62eb6c791
commit
0a46feb162
11
tests/Test.h
11
tests/Test.h
@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef __TEST_H_
|
||||||
|
#define __TEST_H_
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
||||||
int printf(const char*, ...);
|
int printf(const char*, ...);
|
||||||
@ -13,15 +14,15 @@ int printf(const char*, ...);
|
|||||||
return true; \
|
return true; \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define TEST_FAIL() \
|
#define TEST_FAIL(expr) \
|
||||||
do { \
|
do { \
|
||||||
printf("no\n"); \
|
printf("no (%s)\n", #expr); \
|
||||||
return false; \
|
return false; \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define EXPECT(expr) \
|
#define EXPECT(expr) \
|
||||||
do { \
|
do { \
|
||||||
if (!(expr)) { TEST_FAIL(); } \
|
if (!(expr)) { TEST_FAIL(expr); } \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define EXPECT_EQ(a, b) EXPECT((a) == (b))
|
#define EXPECT_EQ(a, b) EXPECT((a) == (b))
|
||||||
@ -34,3 +35,5 @@ int printf(const char*, ...);
|
|||||||
do { \
|
do { \
|
||||||
if (!test_##name()) return 1; \
|
if (!test_##name()) return 1; \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
|
#endif
|
@ -4,7 +4,7 @@ DESTDIR := $(LUNA_ROOT)/initrd/bin
|
|||||||
build:
|
build:
|
||||||
@mkdir -p $(TESTDIR)/bin
|
@mkdir -p $(TESTDIR)/bin
|
||||||
$(LUNA_ROOT)/tools/sync-libc.sh
|
$(LUNA_ROOT)/tools/sync-libc.sh
|
||||||
$(CC) $(TESTDIR)/string.c $(TESTDIR)/Test.c -I$(LUNA_ROOT)/tests -o $(TESTDIR)/bin/test-libc
|
$(CC) $(TESTDIR)/string.c $(TESTDIR)/Test.c -I$(LUNA_ROOT)/tests -o $(TESTDIR)/bin/test-libc -Wall -Wextra -Wno-stringop-overread -Werror
|
||||||
|
|
||||||
install:
|
install:
|
||||||
$(LUNA_ROOT)/tools/clean.sh
|
$(LUNA_ROOT)/tools/clean.sh
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
#include "Test.h"
|
#include "Test.h"
|
||||||
|
|
||||||
DEFINE_TEST(strlen);
|
DEFINE_TEST(strlen);
|
||||||
|
DEFINE_TEST(strnlen);
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
START_TEST_CASE(string.h);
|
START_TEST_CASE(string.h);
|
||||||
RUN_TEST(strlen);
|
RUN_TEST(strlen);
|
||||||
|
RUN_TEST(strnlen);
|
||||||
}
|
}
|
@ -19,3 +19,26 @@ DEFINE_TEST(strlen)
|
|||||||
|
|
||||||
TEST_SUCCESS();
|
TEST_SUCCESS();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DEFINE_TEST(strnlen)
|
||||||
|
{
|
||||||
|
START_TEST(strnlen);
|
||||||
|
|
||||||
|
const char* str = "What is going on?";
|
||||||
|
|
||||||
|
size_t len = strnlen(str, 20);
|
||||||
|
|
||||||
|
EXPECT_EQ(len, 17);
|
||||||
|
|
||||||
|
len = strnlen(str, 15);
|
||||||
|
|
||||||
|
EXPECT_EQ(len, 15);
|
||||||
|
|
||||||
|
char buf[] = {'H', 'e', 'l', 'l', 'o'};
|
||||||
|
|
||||||
|
len = strnlen(buf, sizeof(buf));
|
||||||
|
|
||||||
|
EXPECT_EQ(len, sizeof(buf));
|
||||||
|
|
||||||
|
TEST_SUCCESS();
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user