valia
Version:
A runtime data validator in TypeScript with advanced type inference, built-in validation functions, and seamless integration for server and client environments.
48 lines (41 loc) • 1.89 kB
JavaScript
import { describe, it } from "node:test";
import assert from "node:assert";
import { isIp } from "../../dist/index.js";
describe("Testers string 'isIp' function", () => {
it("basic", () => {
assert.strictEqual(isIp(""), false);
assert.strictEqual(isIp("a"), false);
// IPV4
assert.strictEqual(isIp("0.0.0."), false);
assert.strictEqual(isIp("0.0.0"), false);
assert.strictEqual(isIp("0.0.0.01"), false);
assert.strictEqual(isIp("01.0.0.0"), false);
assert.strictEqual(isIp("256.0.0.0"), false);
assert.strictEqual(isIp("0.0.0.256"), false);
assert.strictEqual(isIp("2555.0.0.0"), false);
assert.strictEqual(isIp("0.0.0.2555"), false);
assert.strictEqual(isIp("0.0.0.0"), true);
assert.strictEqual(isIp("1.0.0.1"), true);
assert.strictEqual(isIp("255.255.255.255"), true);
// IPV6
assert.strictEqual(isIp("0000:0000:0000:0000:0000:0000:0000:00001"), false);
assert.strictEqual(isIp("10000:0000:0000:0000:0000:0000:0000:0000"), false);
assert.strictEqual(isIp("0000:0000:0000:0000:10000:0000:0000:0000"), false);
assert.strictEqual(isIp("0000::0000::0000"), false);
assert.strictEqual(isIp("::G"), false);
assert.strictEqual(isIp(":0.0.0.0"), false);
assert.strictEqual(isIp("0000:0000:0000:0000:0000:0000:0000:0000"), true);
assert.strictEqual(isIp("ABCD:EF00::0000"), true);
assert.strictEqual(isIp("::F"), true);
assert.strictEqual(isIp("::0.0.0.0"), true);
assert.strictEqual(isIp("::"), true);
});
it("'prefix' parameter", () => {
assert.strictEqual(isIp("::/129", { prefix: true }), false);
assert.strictEqual(isIp("0.0.0.0/33", { prefix: true }), false);
assert.strictEqual(isIp("::/128", { prefix: true }), true);
assert.strictEqual(isIp("::/0", { prefix: true }), true);
assert.strictEqual(isIp("0.0.0.0/32", { prefix: true }), true);
assert.strictEqual(isIp("0.0.0.0/0", { prefix: true }), true);
});
});