Pass test for decodeChunksVectored
This commit is contained in:
parent
dc1c6d6d66
commit
b4444d04c3
24
src/root.zig
24
src/root.zig
@ -116,12 +116,13 @@ pub const b64Alphabet = struct {
|
|||||||
var numvec: @Vector(4, u24) = @splat(0);
|
var numvec: @Vector(4, u24) = @splat(0);
|
||||||
const shlvec: @Vector(4, usize) = @splat(6);
|
const shlvec: @Vector(4, usize) = @splat(6);
|
||||||
for (0..4) |i| {
|
for (0..4) |i| {
|
||||||
|
const idx: u8 = @truncate(i);
|
||||||
numvec <<= shlvec;
|
numvec <<= shlvec;
|
||||||
var inarr: [4]u6 = undefined;
|
var inarr: [4]u6 = undefined;
|
||||||
inarr[0] = try self.getIdx(i);
|
inarr[0] = try self.getIdx(in[idx]);
|
||||||
inarr[1] = try self.getIdx(in[i + 4]);
|
inarr[1] = try self.getIdx(in[idx + 4]);
|
||||||
inarr[2] = try self.getIdx(in[i + 8]);
|
inarr[2] = try self.getIdx(in[idx + 8]);
|
||||||
inarr[3] = try self.getIdx(in[i + 12]);
|
inarr[3] = try self.getIdx(in[idx + 12]);
|
||||||
const invec: @Vector(4, u6) = inarr;
|
const invec: @Vector(4, u6) = inarr;
|
||||||
numvec |= invec;
|
numvec |= invec;
|
||||||
}
|
}
|
||||||
@ -133,10 +134,10 @@ pub const b64Alphabet = struct {
|
|||||||
numvec >>= shrvec;
|
numvec >>= shrvec;
|
||||||
}) {
|
}) {
|
||||||
const cvec = numvec & maskvec;
|
const cvec = numvec & maskvec;
|
||||||
outbuf[idx - 1] = cvec[0];
|
outbuf[idx - 1] = @truncate(cvec[0]);
|
||||||
outbuf[idx + 2] = cvec[1];
|
outbuf[idx + 2] = @truncate(cvec[1]);
|
||||||
outbuf[idx + 5] = cvec[2];
|
outbuf[idx + 5] = @truncate(cvec[2]);
|
||||||
outbuf[idx + 8] = cvec[3];
|
outbuf[idx + 8] = @truncate(cvec[3]);
|
||||||
}
|
}
|
||||||
return outbuf;
|
return outbuf;
|
||||||
}
|
}
|
||||||
@ -177,6 +178,13 @@ test "encode chunks vectored" {
|
|||||||
try testing.expect(std.mem.eql(u8, obuf[0..], "SGVsbG8sIFdvcmxk"));
|
try testing.expect(std.mem.eql(u8, obuf[0..], "SGVsbG8sIFdvcmxk"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
test "decode chunks vectored" {
|
||||||
|
const chunk = [16]u8{ 'S', 'G', 'V', 's', 'b', 'G', '8', 's', 'I', 'F', 'd', 'v', 'c', 'm', 'x', 'k' };
|
||||||
|
var out: [12]u8 = undefined;
|
||||||
|
const obuf = try rfc4648B64Alphabet.decodeChunksVectored(chunk, &out);
|
||||||
|
try testing.expect(std.mem.eql(u8, obuf[0..], "Hello, World"));
|
||||||
|
}
|
||||||
|
|
||||||
test "decode chunk" {
|
test "decode chunk" {
|
||||||
const chunk = [4]u8{ 'S', 'G', 'V', 's' };
|
const chunk = [4]u8{ 'S', 'G', 'V', 's' };
|
||||||
var out: [3]u8 = undefined;
|
var out: [3]u8 = undefined;
|
||||||
|
Loading…
Reference in New Issue
Block a user