arp-parse
Version:
A streaming, cross-platform ARP table parser.
59 lines (51 loc) • 1.36 kB
JavaScript
var run = require('tape').test
var parse = require('../')
var fs = require('fs')
var concat = require('concat-stream')
var filter = require('stream-filter')
var list = function(data) {
var results = data.map(function(device) {
return device.ip
})
results.sort(function(a, b) {
return (
+a.substr(a.lastIndexOf('.') + 1) >
+b.substr(b.lastIndexOf('.') + 1)
)
})
return results
}
var check = function(table, callback) {
table
.pipe(parse())
.pipe(filter(function(device) {
return !!device.mac
}))
.pipe(concat(function(data) {
callback(list(data))
}))
}
run('determines availability', function(test) {
var linux = fs.createReadStream(__dirname + '/linux.txt')
var osx = fs.createReadStream(__dirname + '/osx.txt')
var windows = fs.createReadStream(__dirname + '/windows.txt')
test.plan(3)
check(linux, function(results) {
var expected = [
'192.168.0.1', '192.168.0.9',
'192.168.0.11', '192.168.0.15'
]
test.deepEqual(results, expected, 'on linux')
})
check(osx, function(results) {
var expected = [
'192.168.0.1', '192.168.0.2',
'192.168.0.14'
]
test.deepEqual(results, expected, 'on osx')
})
check(windows, function(results) {
var expected = ['192.168.1.1']
test.deepEqual(results, expected, 'on windows')
})
})