Skip to content

Commit

Permalink
use jest
Browse files Browse the repository at this point in the history
  • Loading branch information
silverwind committed May 6, 2020
1 parent 5cea875 commit 9b859ba
Show file tree
Hide file tree
Showing 3 changed files with 58 additions and 50 deletions.
4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
test:
yarn -s run eslint .
node --trace-deprecation --throw-deprecation --trace-warnings test.js
yarn -s run eslint --color .
yarn -s run jest --color

publish:
git push -u --tags origin master
Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
"devDependencies": {
"eslint": "6.8.0",
"eslint-config-silverwind": "11.0.4",
"jest": "26.0.1",
"updates": "10.2.10",
"versions": "8.2.7"
}
Expand Down
103 changes: 55 additions & 48 deletions test.js
Original file line number Diff line number Diff line change
@@ -1,53 +1,60 @@
"use strict";

const m = require(".");
const assert = require("assert");
const cidrTools = require(".");
const {test, expect} = global;

async function main() {
assert.deepStrictEqual(await m.merge(["1.0.0.0", "1.0.0.1"]), ["1.0.0.0/31"]);
assert.deepStrictEqual(await m.merge(["1.0.0.0/24", "1.0.1.0/24"]), ["1.0.0.0/23"]);
assert.deepStrictEqual(await m.merge(["1.0.0.0/24", "1.0.0.0"]), ["1.0.0.0/24"]);
assert.deepStrictEqual(await m.merge(["1.0.0.0/24", "1.0.0.0/12"]), ["1.0.0.0/12"]);
assert.deepStrictEqual(await m.merge(["0.0.0.0/8", "1.0.0.0/8"]), ["0.0.0.0/7"]);
assert.deepStrictEqual(await m.merge(["4.0.0.0/8", "4.0.0.0/12", "4.0.0.0/16"]), ["4.0.0.0/8"]);
assert.deepStrictEqual(await m.merge(["::0/128", "::1/128"]), ["::/127"]);
assert.deepStrictEqual(await m.merge(["::0", "::1"]), ["::/127"]);
assert.deepStrictEqual(await m.merge(["::0/128", "1.2.3.4/24", "::2/125"]), ["1.2.3.0/24", "::/125"]);
assert.deepStrictEqual(await m.merge(["6620:0:1ff2::/70"]), ["6620:0:1ff2::/70"]);
assert.deepStrictEqual(await m.merge(["0.0.0.1/32", "0.0.0.2/32"]), ["0.0.0.1/32", "0.0.0.2/32"]);
assert.deepStrictEqual(await m.merge(["0.0.1.0/24", "0.0.2.0/24", "0.0.3.0/24", "0.0.4.0/24"]), ["0.0.1.0/24", "0.0.2.0/23", "0.0.4.0/24"]);
assert.deepStrictEqual(await m.merge(["0.0.175.0/24", "0.0.176.0/21", "0.0.184.0/21", "0.0.192.0/24"]), ["0.0.175.0/24", "0.0.176.0/20", "0.0.192.0/24"]);
assert.deepStrictEqual(await m.merge(["0.0.176.0/21", "0.0.184.0/21", "0.0.192.0/24"]), ["0.0.176.0/20", "0.0.192.0/24"]);
assert.deepStrictEqual(await m.exclude(["1.0.0.0/23"], ["1.0.1.0/24"]), ["1.0.0.0/24"]);
assert.deepStrictEqual(await m.exclude(["1.0.0.0/24"], ["1.0.0.0/16"]), []);
assert.deepStrictEqual(await m.exclude(["::/127"], ["::1/128"]), ["::/128"]);
assert.deepStrictEqual(await m.exclude(["::/120"], ["::1/112"]), []);
assert.deepStrictEqual(await m.exclude(["::0/127", "1.2.3.0/24"], ["::/128"]), ["1.2.3.0/24", "::1/128"]);
assert.deepStrictEqual(await m.exclude(["::0/127", "1.2.3.0/24"], ["::/0", "0.0.0.0/0"]), []);
assert.deepStrictEqual(await m.exclude(["1.0.0.0/24"], ["1.0.0.0"]), ["1.0.0.1/32", "1.0.0.2/31", "1.0.0.4/30", "1.0.0.8/29", "1.0.0.16/28", "1.0.0.32/27", "1.0.0.64/26", "1.0.0.128/25"]);
assert.deepStrictEqual(await m.exclude(["10.11.0.0/16"], ["10.11.70.0/24"]), ["10.11.0.0/18", "10.11.64.0/22", "10.11.68.0/23", "10.11.71.0/24", "10.11.72.0/21", "10.11.80.0/20", "10.11.96.0/19", "10.11.128.0/17"]);
assert.deepStrictEqual(await m.exclude("0.0.0.0/30", ["0.0.0.1/32", "0.0.0.2/32"]), ["0.0.0.0/32", "0.0.0.3/32"]);
assert.deepStrictEqual(await m.expand(["1.2.3.0/31"]), ["1.2.3.0", "1.2.3.1"]);
assert.deepStrictEqual(await m.expand(["1::/126"]), ["1::", "1::1", "1::2", "1::3"]);
assert.deepStrictEqual(await m.expand(["2008:db1::/127"]), ["2008:db1::", "2008:db1::1"]);
assert.deepStrictEqual(await m.expand("2008:db1::/127"), ["2008:db1::", "2008:db1::1"]);
assert.deepStrictEqual(await m.overlap("1.0.0.0/24", "1.0.0.0/30"), true);
assert.deepStrictEqual(await m.overlap("2::/8", "1::/8"), true);
assert.deepStrictEqual(await m.overlap("1.0.0.0/25", "1.0.0.128/25"), false);
assert.deepStrictEqual(await m.overlap("0.0.0.0/0", "::0/0"), false);
assert.deepStrictEqual(await m.overlap("2::/64", "1::/64"), false);
assert.deepStrictEqual(await m.overlap(["1.0.0.0/24"], ["1.0.0.0/30"]), true);
assert.deepStrictEqual(await m.overlap(["1.0.0.0", "2.0.0.0"], ["0.0.0.0/6"]), true);
assert.deepStrictEqual(await m.overlap("::1", "0.0.0.1"), false);
assert.deepStrictEqual(await m.overlap("fe80:1:0:0:0:0:0:0", "fe80::/10"), true);
assert.deepStrictEqual(await m.overlap("::1", ["0.0.0.1", "0.0.0.2"]), false);
assert.deepStrictEqual(await m.normalize("0:0:0:0:0:0:0:0"), "::");
assert.deepStrictEqual(await m.normalize("0:0:0:0:0:0:0:0/0"), "::/0");
}
test("merge", () => {
expect(cidrTools.merge(["1.0.0.0", "1.0.0.1"])).toEqual(["1.0.0.0/31"]);
expect(cidrTools.merge(["1.0.0.0/24", "1.0.1.0/24"])).toEqual(["1.0.0.0/23"]);
expect(cidrTools.merge(["1.0.0.0/24", "1.0.0.0"])).toEqual(["1.0.0.0/24"]);
expect(cidrTools.merge(["1.0.0.0/24", "1.0.0.0/12"])).toEqual(["1.0.0.0/12"]);
expect(cidrTools.merge(["0.0.0.0/8", "1.0.0.0/8"])).toEqual(["0.0.0.0/7"]);
expect(cidrTools.merge(["4.0.0.0/8", "4.0.0.0/12", "4.0.0.0/16"])).toEqual(["4.0.0.0/8"]);
expect(cidrTools.merge(["::0/128", "::1/128"])).toEqual(["::/127"]);
expect(cidrTools.merge(["::0", "::1"])).toEqual(["::/127"]);
expect(cidrTools.merge(["::0/128", "1.2.3.4/24", "::2/125"])).toEqual(["1.2.3.0/24", "::/125"]);
expect(cidrTools.merge(["6620:0:1ff2::/70"])).toEqual(["6620:0:1ff2::/70"]);
expect(cidrTools.merge(["0.0.0.1/32", "0.0.0.2/32"])).toEqual(["0.0.0.1/32", "0.0.0.2/32"]);
expect(cidrTools.merge(["0.0.1.0/24", "0.0.2.0/24", "0.0.3.0/24", "0.0.4.0/24"])).toEqual(["0.0.1.0/24", "0.0.2.0/23", "0.0.4.0/24"]);
expect(cidrTools.merge(["0.0.175.0/24", "0.0.176.0/21", "0.0.184.0/21", "0.0.192.0/24"])).toEqual(["0.0.175.0/24", "0.0.176.0/20", "0.0.192.0/24"]);
expect(cidrTools.merge(["0.0.176.0/21", "0.0.184.0/21", "0.0.192.0/24"])).toEqual(["0.0.176.0/20", "0.0.192.0/24"]);
});

function exit(err) {
if (err) console.info(err);
process.exit(err ? 1 : 0);
}
test("exclude", () => {
expect(cidrTools.exclude(["1.0.0.0/23"], ["1.0.1.0/24"])).toEqual(["1.0.0.0/24"]);
expect(cidrTools.exclude(["1.0.0.0/24"], ["1.0.0.0/16"])).toEqual([]);
expect(cidrTools.exclude(["::/127"], ["::1/128"])).toEqual(["::/128"]);
expect(cidrTools.exclude(["::/120"], ["::1/112"])).toEqual([]);
expect(cidrTools.exclude(["::0/127", "1.2.3.0/24"], ["::/128"])).toEqual(["1.2.3.0/24", "::1/128"]);
expect(cidrTools.exclude(["::0/127", "1.2.3.0/24"], ["::/0", "0.0.0.0/0"])).toEqual([]);
expect(cidrTools.exclude(["1.0.0.0/24"], ["1.0.0.0"])).toEqual(["1.0.0.1/32", "1.0.0.2/31", "1.0.0.4/30", "1.0.0.8/29", "1.0.0.16/28", "1.0.0.32/27", "1.0.0.64/26", "1.0.0.128/25"]);
expect(cidrTools.exclude(["10.11.0.0/16"], ["10.11.70.0/24"])).toEqual(["10.11.0.0/18", "10.11.64.0/22", "10.11.68.0/23", "10.11.71.0/24", "10.11.72.0/21", "10.11.80.0/20", "10.11.96.0/19", "10.11.128.0/17"]);
expect(cidrTools.exclude("0.0.0.0/30", ["0.0.0.1/32", "0.0.0.2/32"])).toEqual(["0.0.0.0/32", "0.0.0.3/32"]);
});

main().then(exit).catch(exit);
test("expand", () => {
expect(cidrTools.expand(["1.2.3.0/31"])).toEqual(["1.2.3.0", "1.2.3.1"]);
expect(cidrTools.expand(["1::/126"])).toEqual(["1::", "1::1", "1::2", "1::3"]);
expect(cidrTools.expand(["2008:db1::/127"])).toEqual(["2008:db1::", "2008:db1::1"]);
expect(cidrTools.expand("2008:db1::/127")).toEqual(["2008:db1::", "2008:db1::1"]);
});

test("overlap", () => {
expect(cidrTools.overlap("1.0.0.0/24", "1.0.0.0/30")).toEqual(true);
expect(cidrTools.overlap("2::/8", "1::/8")).toEqual(true);
expect(cidrTools.overlap("1.0.0.0/25", "1.0.0.128/25")).toEqual(false);
expect(cidrTools.overlap("0.0.0.0/0", "::0/0")).toEqual(false);
expect(cidrTools.overlap("2::/64", "1::/64")).toEqual(false);
expect(cidrTools.overlap(["1.0.0.0/24"], ["1.0.0.0/30"])).toEqual(true);
expect(cidrTools.overlap(["1.0.0.0", "2.0.0.0"], ["0.0.0.0/6"])).toEqual(true);
expect(cidrTools.overlap("::1", "0.0.0.1")).toEqual(false);
expect(cidrTools.overlap("fe80:1:0:0:0:0:0:0", "fe80::/10")).toEqual(true);
expect(cidrTools.overlap("::1", ["0.0.0.1", "0.0.0.2"])).toEqual(false);
});

test("normalize", () => {
expect(cidrTools.normalize("0:0:0:0:0:0:0:0")).toEqual("::");
expect(cidrTools.normalize("0:0:0:0:0:0:0:0/0")).toEqual("::/0");
expect(cidrTools.normalize("1.2.3.4")).toEqual("1.2.3.4");
expect(cidrTools.normalize("1.2.3.4/0")).toEqual("1.2.3.4/0");
});

0 comments on commit 9b859ba

Please sign in to comment.