Fix bug with copyLowercase and add a test

Former-commit-id: 87946b9fecd8b3e75a5995f38311053ae54b0424
This commit is contained in:
Jarred Sumner
2021-08-23 02:30:52 -07:00
parent afb6684782
commit 945cd08931

View File

@@ -124,7 +124,7 @@ pub fn copyLowercase(in: string, out: []u8) string {
switch (c) {
'A'...'Z' => {
@setRuntimeSafety(false);
@memcpy(out.ptr, in_slice.ptr, i);
@memcpy(out_slice.ptr, in_slice.ptr, i);
out_slice[i] = std.ascii.toLower(c);
const end = i + 1;
if (end >= out_slice.len) break :begin;
@@ -143,6 +143,22 @@ pub fn copyLowercase(in: string, out: []u8) string {
return out[0..in.len];
}
test "copyLowercase" {
{
var in = "Hello, World!";
var out = std.mem.zeroes([in.len]u8);
var out_ = copyLowercase(in, &out);
try std.testing.expectEqualStrings(out_, "hello, world!");
}
{
var in = "_ListCache";
var out = std.mem.zeroes([in.len]u8);
var out_ = copyLowercase(in, &out);
try std.testing.expectEqualStrings(out_, "_listcache");
}
}
test "StringOrTinyString" {
const correct: string = "helloooooooo";
const big = "wawaweewaverylargeihaveachairwawaweewaverylargeihaveachairwawaweewaverylargeihaveachairwawaweewaverylargeihaveachair";