1//===-- Unittests for isdigit----------------------------------------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#include "src/__support/CPP/span.h"
10#include "src/ctype/isdigit.h"
11
12#include "test/UnitTest/Test.h"
13
14namespace {
15
16// TODO: Merge the ctype tests using this framework.
17constexpr char DIGIT_ARRAY[] = {
18 '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
19};
20
21bool in_span(int ch, LIBC_NAMESPACE::cpp::span<const char> arr) {
22 for (size_t i = 0; i < arr.size(); ++i)
23 if (static_cast<int>(arr[i]) == ch)
24 return true;
25 return false;
26}
27
28} // namespace
29
30TEST(LlvmLibcIsDigit, SimpleTest) {
31 EXPECT_NE(LIBC_NAMESPACE::isdigit('3'), 0);
32
33 EXPECT_EQ(LIBC_NAMESPACE::isdigit('a'), 0);
34 EXPECT_EQ(LIBC_NAMESPACE::isdigit('B'), 0);
35 EXPECT_EQ(LIBC_NAMESPACE::isdigit(' '), 0);
36 EXPECT_EQ(LIBC_NAMESPACE::isdigit('?'), 0);
37 EXPECT_EQ(LIBC_NAMESPACE::isdigit('\0'), 0);
38 EXPECT_EQ(LIBC_NAMESPACE::isdigit(-1), 0);
39}
40
41TEST(LlvmLibcIsDigit, DefaultLocale) {
42 // Loops through all characters, verifying that numbers and letters
43 // return non-zero integer and everything else returns a zero.
44 for (int ch = -255; ch < 255; ++ch) {
45 if (in_span(ch, DIGIT_ARRAY))
46 EXPECT_NE(LIBC_NAMESPACE::isdigit(ch), 0);
47 else
48 EXPECT_EQ(LIBC_NAMESPACE::isdigit(ch), 0);
49 }
50}
51

Provided by KDAB

Privacy Policy
Improve your Profiling and Debugging skills
Find out more

source code of libc/test/src/ctype/isdigit_test.cpp