-
Notifications
You must be signed in to change notification settings - Fork 43
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
adds CREDITS, plus mocha tests for transpiled node
- Loading branch information
Showing
5 changed files
with
142 additions
and
25 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,3 @@ | ||
node_modules/ | ||
package-lock.json | ||
lib/netmask.js |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
Credits | ||
======= | ||
|
||
These credits refer to the contributors to this repository: | ||
|
||
[@rs](https://github.com/rs) - maintainer | ||
|
||
[@ryanrolds](https://github.com/ryanrolds) - Now with 0.4.x support. #2 | ||
|
||
[@palmerabollo](https://github.com/palmerabollo) - Expressions "1.2.3.4/" are not valid #6 | ||
|
||
[@steve-jansen](https://github.com/steve-jansen) - fixes typo in readme.md #7 | ||
|
||
[@jksdua](https://github.com/jksdua) - Added forEach helper to allow looping through usable IP addresses #9 | ||
|
||
[@gmiroshnykov](https://github.com/gmiroshnykov) - Tiny typo fix #10 | ||
|
||
[@TooTallNate](https://github.com/TooTallNate) - package: move "coffee-script" to devDependencies #11, README: fix small typo #12 | ||
|
||
[@yorkie](https://github.com/yorkie) - more rigid check for Netmask.constructor #13 | ||
|
||
[@runk](https://github.com/runk) - fix contains method for netmasks #18 | ||
|
||
[@yvesago](https://github.com/yvesago) - a patch with mocha test to fix /31 and /32 block.contains #20 | ||
|
||
[@meteormatt](https://github.com/meteormatt) - The comment in README.md is wrong #22 | ||
|
||
[@dschenkelman](https://github.com/dschenkelman) - Avoid large memory allocations when doing forEach in case netmask is large (e.g. /8) #34 | ||
|
||
[@sickcodes](https://github.com/sickcodes), [@kaoudis](https://github.com/kaoudis), [@Koroeskohr](https://github.com/Koroeskohr), [@nicksahler](https://github.com/nicksahler) - harden error handling, add a few more tests, and include CREDITS.md #36 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,24 +1,103 @@ | ||
/* some troubles with vows | ||
here is some mocha test | ||
npm install | ||
mocha tests/netmask.js | ||
*/ | ||
var assert = require('assert'); | ||
|
||
var Netmask = require('../').Netmask; | ||
|
||
var block = new Netmask('10.1.2.0/24'); | ||
var b1 = new Netmask('10.1.2.10/29'); | ||
var b2 = new Netmask('10.1.2.10/31'); | ||
var b3 = new Netmask('10.1.2.20/32'); | ||
|
||
console.log('first : '+b2.base); | ||
console.log('broadcast : '+b2.broadcast); | ||
console.log('last : ' + b2.last); | ||
|
||
describe("Netmask contains bug", function() { | ||
assert.equal(block.contains(b1),true); | ||
assert.equal(block.contains(b2),true); | ||
assert.equal(block.contains(b3),true); | ||
}); | ||
/* It is important to test our Javascript output as well as our coffeescript, | ||
* since code that is transpiled may be slightly different in effect from the | ||
* original. | ||
* | ||
* Run these tests (against lib/netmask.js, not lib/netmask.coffee directly) | ||
* using mocha, after re-generating lib/netmask.js including your changes: | ||
* | ||
* mocha tests/netmask.js | ||
*/ | ||
|
||
const assert = require('assert'); | ||
const Netmask = require('../').Netmask; | ||
|
||
describe('Netmask', () => { | ||
describe('can build a block', () => { | ||
let block = new Netmask('10.1.2.0/24'); | ||
|
||
it('should contain a sub-block', () => { | ||
let block1 = new Netmask('10.1.2.10/29'); | ||
assert(block.contains(block1)); | ||
}); | ||
|
||
it('should contain another sub-block', () => { | ||
let block2 = new Netmask('10.1.2.10/31'); | ||
assert(block.contains(block2)); | ||
}); | ||
|
||
it('should contain a third sub-block', () => { | ||
let block3 = new Netmask('10.1.2.20/32'); | ||
assert(block.contains(block3)); | ||
}); | ||
}); | ||
|
||
describe('when presented with an octet which is not a number', () => { | ||
let block = new Netmask('192.168.0.0/29') | ||
|
||
it('should throw', () => { | ||
assert.throws(() => block.contains('192.168.~.4'), Error); | ||
}); | ||
}); | ||
|
||
describe('can handle hexadecimal, octal, & decimal octets in input IP', () => { | ||
let block1 = new Netmask('31.0.0.0/19'); | ||
let block2 = new Netmask('127.0.0.0/8'); | ||
let block3 = new Netmask('255.0.0.1/12'); | ||
let block4 = new Netmask('10.0.0.1/8'); | ||
let block5 = new Netmask('1.0.0.1/4'); | ||
|
||
describe('octal', () => { | ||
it('block 31.0.0.0/19 does not contain 031.0.5.5', () => { | ||
assert(!block1.contains('031.0.5.5')); | ||
}); | ||
it('block 127.0.0.0/8 contains 0177.0.0.2 (127.0.0.2)', () => { | ||
assert(block2.contains('0177.0.0.2')); | ||
}); | ||
it('block 255.0.0.1/12 does not contain 0255.0.0.2 (173.0.0.2)', () => { | ||
assert(!block3.contains('0255.0.0.2')); | ||
}); | ||
it('block 10.0.0.1/8 contains 012.0.0.255 (10.0.0.255)', () => { | ||
assert(block4.contains('012.0.0.255')); | ||
}); | ||
it('block 1.0.0.1/4 contains 01.02.03.04', () => { | ||
assert(block5.contains('01.02.03.04')); | ||
}); | ||
}); | ||
|
||
describe('hexadecimal', () => { | ||
it('block 31.0.0.0/19 does not contain 0x31.0.5.5', () => { | ||
assert(!block1.contains('0x31.0.5.5')); | ||
}); | ||
it('block 127.0.0.0/8 contains 0x7f.0.0.0x2 (127.0.0.2)', () => { | ||
assert(block2.contains('0x7f.0.0.0x2')); | ||
}); | ||
it('block 255.0.0.1/12 contains 0xff.0.0.2', () => { | ||
assert(block3.contains('0xff.0.0.2')); | ||
}); | ||
it('block 10.0.0.1/8 does not contain 0x10.0.0.255', () => { | ||
assert(!block4.contains('0x10.0.0.255')); | ||
}); | ||
it('block 1.0.0.1/4 contains 0x1.0x2.0x3.0x4', () => { | ||
assert(block5.contains('0x1.0x2.0x3.0x4')); | ||
}); | ||
}); | ||
|
||
describe('decimal', () => { | ||
it('block 31.0.0.0/19 contains 31.0.5.5', () => { | ||
assert(block1.contains('31.0.5.5')); | ||
}); | ||
it('block 127.0.0.0/8 does not contain 128.0.0.2', () =>{ | ||
assert(!block2.contains('128.0.0.2')); | ||
}); | ||
it('block 255.0.0.1/12 contains 255.0.0.2', () => { | ||
assert(block3.contains('255.0.0.2')); | ||
}); | ||
it('block 10.0.0.1/8 contains 10.0.0.255', () => { | ||
assert(block4.contains('10.0.0.255')); | ||
}); | ||
it('block 1.0.0.1/4 contains 1.2.3.4', () => { | ||
assert(block5.contains('1.2.3.4')); | ||
}); | ||
}); | ||
}); | ||
}); |