mirror of
https://github.com/denoland/deno.git
synced 2024-12-26 09:10:40 -05:00
[bytes] fix bytesFindIndex and bytesFindLastIndex (#381)
This commit is contained in:
parent
0f00676e8f
commit
8714252916
2 changed files with 22 additions and 7 deletions
|
@ -6,10 +6,11 @@ export function bytesFindIndex(a: Uint8Array, pat: Uint8Array): number {
|
||||||
for (let i = 0; i < a.length; i++) {
|
for (let i = 0; i < a.length; i++) {
|
||||||
if (a[i] !== s) continue;
|
if (a[i] !== s) continue;
|
||||||
const pin = i;
|
const pin = i;
|
||||||
let matched = 1;
|
let matched = 1,
|
||||||
|
j = i;
|
||||||
while (matched < pat.length) {
|
while (matched < pat.length) {
|
||||||
i++;
|
j++;
|
||||||
if (a[i] !== pat[i - pin]) {
|
if (a[j] !== pat[j - pin]) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
matched++;
|
matched++;
|
||||||
|
@ -27,10 +28,11 @@ export function bytesFindLastIndex(a: Uint8Array, pat: Uint8Array): number {
|
||||||
for (let i = a.length - 1; i >= 0; i--) {
|
for (let i = a.length - 1; i >= 0; i--) {
|
||||||
if (a[i] !== e) continue;
|
if (a[i] !== e) continue;
|
||||||
const pin = i;
|
const pin = i;
|
||||||
let matched = 1;
|
let matched = 1,
|
||||||
|
j = i;
|
||||||
while (matched < pat.length) {
|
while (matched < pat.length) {
|
||||||
i--;
|
j--;
|
||||||
if (a[i] !== pat[pat.length - 1 - (pin - i)]) {
|
if (a[j] !== pat[pat.length - 1 - (pin - j)]) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
matched++;
|
matched++;
|
||||||
|
|
|
@ -7,7 +7,7 @@ import {
|
||||||
import { test } from "../testing/mod.ts";
|
import { test } from "../testing/mod.ts";
|
||||||
import { assertEquals } from "../testing/asserts.ts";
|
import { assertEquals } from "../testing/asserts.ts";
|
||||||
|
|
||||||
test(function bytesBytesFindIndex(): void {
|
test(function bytesBytesFindIndex1(): void {
|
||||||
const i = bytesFindIndex(
|
const i = bytesFindIndex(
|
||||||
new Uint8Array([1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 3]),
|
new Uint8Array([1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 3]),
|
||||||
new Uint8Array([0, 1, 2])
|
new Uint8Array([0, 1, 2])
|
||||||
|
@ -15,6 +15,11 @@ test(function bytesBytesFindIndex(): void {
|
||||||
assertEquals(i, 2);
|
assertEquals(i, 2);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test(function bytesBytesFindIndex2(): void {
|
||||||
|
const i = bytesFindIndex(new Uint8Array([0, 0, 1]), new Uint8Array([0, 1]));
|
||||||
|
assertEquals(i, 1);
|
||||||
|
});
|
||||||
|
|
||||||
test(function bytesBytesFindLastIndex1(): void {
|
test(function bytesBytesFindLastIndex1(): void {
|
||||||
const i = bytesFindLastIndex(
|
const i = bytesFindLastIndex(
|
||||||
new Uint8Array([0, 1, 2, 0, 1, 2, 0, 1, 3]),
|
new Uint8Array([0, 1, 2, 0, 1, 2, 0, 1, 3]),
|
||||||
|
@ -23,6 +28,14 @@ test(function bytesBytesFindLastIndex1(): void {
|
||||||
assertEquals(i, 3);
|
assertEquals(i, 3);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test(function bytesBytesFindLastIndex2(): void {
|
||||||
|
const i = bytesFindLastIndex(
|
||||||
|
new Uint8Array([0, 1, 1]),
|
||||||
|
new Uint8Array([0, 1])
|
||||||
|
);
|
||||||
|
assertEquals(i, 0);
|
||||||
|
});
|
||||||
|
|
||||||
test(function bytesBytesBytesEqual(): void {
|
test(function bytesBytesBytesEqual(): void {
|
||||||
const v = bytesEqual(
|
const v = bytesEqual(
|
||||||
new Uint8Array([0, 1, 2, 3]),
|
new Uint8Array([0, 1, 2, 3]),
|
||||||
|
|
Loading…
Reference in a new issue