Skip to content

Commit

Permalink
LibC: Implement wctrans
Browse files Browse the repository at this point in the history
  • Loading branch information
timschumi authored and bgianfo committed Sep 17, 2021
1 parent 7b17230 commit ff0ab8b
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 3 deletions.
11 changes: 11 additions & 0 deletions Tests/LibC/TestWctype.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,14 @@ TEST_CASE(wctype)
EXPECT(wctype("") == 0);
EXPECT(wctype("abc") == 0);
}

TEST_CASE(wctrans)
{
// Test that existing character mappings return non-zero wctrans values.
EXPECT(wctrans("tolower") != 0);
EXPECT(wctrans("toupper") != 0);

// Test that invalid character mappings return the "invalid" wctrans value (0).
EXPECT(wctrans("") == 0);
EXPECT(wctrans("abc") == 0);
}
17 changes: 14 additions & 3 deletions Userland/Libraries/LibC/wctype.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,12 @@ enum {
WCTYPE_XDIGIT,
};

enum {
WCTRANS_INVALID = 0,
WCTRANS_TOLOWER,
WCTRANS_TOUPPER,
};

extern "C" {

int iswalnum(wint_t wc)
Expand Down Expand Up @@ -149,9 +155,14 @@ wint_t towctrans(wint_t, wctrans_t)
TODO();
}

wctrans_t wctrans(const char*)
wctrans_t wctrans(const char* charclass)
{
dbgln("FIXME: Implement wctrans()");
TODO();
if (strcmp(charclass, "tolower") == 0)
return WCTRANS_TOLOWER;

if (strcmp(charclass, "toupper") == 0)
return WCTRANS_TOUPPER;

return WCTRANS_INVALID;
}
}

0 comments on commit ff0ab8b

Please sign in to comment.