Showing
6 changed files
with
160 additions
and
10 deletions
@@ -39,7 +39,7 @@ class Connector extends events.EventEmitter { | @@ -39,7 +39,7 @@ class Connector extends events.EventEmitter { | ||
39 | client.connect(config.port, config.host, function() { | 39 | client.connect(config.port, config.host, function() { |
40 | that.connected = true; | 40 | that.connected = true; |
41 | log.info(config.host + ':' + config.port + ':读写器连接成功!'); | 41 | log.info(config.host + ':' + config.port + ':读写器连接成功!'); |
42 | - send(); | 42 | + send(that); |
43 | }); | 43 | }); |
44 | 44 | ||
45 | 45 |
@@ -26,7 +26,7 @@ export let log = loger; | @@ -26,7 +26,7 @@ export let log = loger; | ||
26 | * @param {Number} number 十进制数 | 26 | * @param {Number} number 十进制数 |
27 | * @return {Number} 16进制数字 | 27 | * @return {Number} 16进制数字 |
28 | */ | 28 | */ |
29 | -export let tenToHex = function (number) { | 29 | +export let tenToHex = function(number) { |
30 | return (parseInt(number, 10) >>> 0).toString(16); | 30 | return (parseInt(number, 10) >>> 0).toString(16); |
31 | }; | 31 | }; |
32 | 32 | ||
@@ -37,7 +37,7 @@ export let tenToHex = function (number) { | @@ -37,7 +37,7 @@ export let tenToHex = function (number) { | ||
37 | * @param {Boolean} minus true表示负数,false表示正数 | 37 | * @param {Boolean} minus true表示负数,false表示正数 |
38 | * @return {Number} 十进制数字 | 38 | * @return {Number} 十进制数字 |
39 | */ | 39 | */ |
40 | -export let hexToTen = function (number, minus) { | 40 | +export let hexToTen = function(number, minus) { |
41 | if (minus) { | 41 | if (minus) { |
42 | return parseInt('FFFF' + number, 16) >> 0; | 42 | return parseInt('FFFF' + number, 16) >> 0; |
43 | } else { | 43 | } else { |
@@ -52,7 +52,7 @@ export let hexToTen = function (number, minus) { | @@ -52,7 +52,7 @@ export let hexToTen = function (number, minus) { | ||
52 | * @param {Buff} data 返回数据流 | 52 | * @param {Buff} data 返回数据流 |
53 | * @return {Array} 转成16进制的数组 | 53 | * @return {Array} 转成16进制的数组 |
54 | */ | 54 | */ |
55 | -export let toHex = function (data) { | 55 | +export let toHex = function(data) { |
56 | let arr = []; | 56 | let arr = []; |
57 | for (let i = 0; i < data.length; i++) { | 57 | for (let i = 0; i < data.length; i++) { |
58 | arr[i] = tenToHex(data.readUIntLE(i)); | 58 | arr[i] = tenToHex(data.readUIntLE(i)); |
@@ -69,7 +69,7 @@ export let toHex = function (data) { | @@ -69,7 +69,7 @@ export let toHex = function (data) { | ||
69 | * @param {Object} output 标准输出的规格对象 | 69 | * @param {Object} output 标准输出的规格对象 |
70 | * @return {object} 标准输出 | 70 | * @return {object} 标准输出 |
71 | */ | 71 | */ |
72 | -export let returnProc = function (data, ip, output) { | 72 | +export let returnProc = function(data, ip, output) { |
73 | if (!_.isArray(data) || _.size(data) < 1) { | 73 | if (!_.isArray(data) || _.size(data) < 1) { |
74 | return false; | 74 | return false; |
75 | } | 75 | } |
@@ -78,7 +78,7 @@ export let returnProc = function (data, ip, output) { | @@ -78,7 +78,7 @@ export let returnProc = function (data, ip, output) { | ||
78 | if (!output[ret]) { | 78 | if (!output[ret]) { |
79 | return false; | 79 | return false; |
80 | } | 80 | } |
81 | - //log.info("读写器(" + ip + ")返回:" + output[ret].message + " 返回码:" + ret); | 81 | + log.info("读写器(" + ip + ")返回:" + output[ret].message + " 返回码:" + ret); |
82 | output[ret].hex = data; | 82 | output[ret].hex = data; |
83 | return output[ret]; | 83 | return output[ret]; |
84 | }; | 84 | }; |
@@ -90,7 +90,7 @@ export let returnProc = function (data, ip, output) { | @@ -90,7 +90,7 @@ export let returnProc = function (data, ip, output) { | ||
90 | * @param {String} data 得到的指令数据结果集 | 90 | * @param {String} data 得到的指令数据结果集 |
91 | * @return {Object} 返回拆分结果和拆分依据的指令头 | 91 | * @return {Object} 返回拆分结果和拆分依据的指令头 |
92 | */ | 92 | */ |
93 | -export let spliteRet = function (mq, data) { | 93 | +export let spliteRet = function(mq, data) { |
94 | let indexes = [], | 94 | let indexes = [], |
95 | rets = [], | 95 | rets = [], |
96 | i, | 96 | i, |
@@ -147,9 +147,9 @@ export let spliteRet = function (mq, data) { | @@ -147,9 +147,9 @@ export let spliteRet = function (mq, data) { | ||
147 | * @param {Array} data 返回的结果集 eg. ['f0','2','0','0'] | 147 | * @param {Array} data 返回的结果集 eg. ['f0','2','0','0'] |
148 | * @return {Object} 返回定位到的指令 | 148 | * @return {Object} 返回定位到的指令 |
149 | */ | 149 | */ |
150 | -export let locateOrder = function (orders, data) { | 150 | +export let locateOrder = function(orders, data) { |
151 | let orderRet = {}; | 151 | let orderRet = {}; |
152 | - _.forIn(orders, function (val, key) { | 152 | + _.forIn(orders, function(val, key) { |
153 | var order = val.input.toLowerCase(); | 153 | var order = val.input.toLowerCase(); |
154 | var prefix = data[0].toLowerCase(); | 154 | var prefix = data[0].toLowerCase(); |
155 | 155 |
test/lib/connector.test.js
0 → 100644
1 | +import expect from 'expect.js'; | ||
2 | +import muk from 'muk'; | ||
3 | +import net from '../mock/fakeNet'; | ||
4 | + | ||
5 | +describe('connector.js', function() { | ||
6 | + | ||
7 | + let C; | ||
8 | + before(function() { | ||
9 | + C = muk('../../src/lib/connector', { | ||
10 | + 'net': net | ||
11 | + }); | ||
12 | + | ||
13 | + C.__set__('log', { | ||
14 | + info: function() {}, | ||
15 | + error: function() {} | ||
16 | + }); | ||
17 | + }) | ||
18 | + | ||
19 | + describe('init', function() { | ||
20 | + it('new connector init ok', function(done) { | ||
21 | + var connect = new C({ | ||
22 | + host: '1.1.1.1', | ||
23 | + port: '123' | ||
24 | + }, function(con) { | ||
25 | + expect(con.connected).to.be(true); | ||
26 | + done(); | ||
27 | + }); | ||
28 | + }); | ||
29 | + | ||
30 | + it('new connector error', function(done) { | ||
31 | + var connect = new C({ | ||
32 | + host: '1.1.1.1', | ||
33 | + port: '123' | ||
34 | + }, function(con) {}, function(client, data, error) { | ||
35 | + expect(error.message).to.be('mock error'); | ||
36 | + done(); | ||
37 | + }); | ||
38 | + | ||
39 | + connect.client.addEmit('error', { | ||
40 | + message: 'mock error' | ||
41 | + }); | ||
42 | + }); | ||
43 | + | ||
44 | + it('new connect after error then reconnect', function(done) { | ||
45 | + var connect = new C({ | ||
46 | + host: '1.1.1.1', | ||
47 | + port: '123' | ||
48 | + }, function(con) {}, function() {}); | ||
49 | + connect.on('reconnect', function() { | ||
50 | + done(); | ||
51 | + }); | ||
52 | + connect.client.addEmit('error', { | ||
53 | + message: 'mock error' | ||
54 | + }); | ||
55 | + }); | ||
56 | + }); | ||
57 | + | ||
58 | + describe('connector write then get data', function() { | ||
59 | + it('on data expect ok', function(done) { | ||
60 | + C.__set__('toHex', function() {}); | ||
61 | + C.__set__('spliteRet', function() { | ||
62 | + return { | ||
63 | + rets: ['mock'] | ||
64 | + } | ||
65 | + }); | ||
66 | + C.__set__('locateOrder', function() { | ||
67 | + return { | ||
68 | + name: 'mock' | ||
69 | + } | ||
70 | + }); | ||
71 | + | ||
72 | + var connect = new C({ | ||
73 | + host: '1.1.1.1', | ||
74 | + port: '123' | ||
75 | + }, function(con) {}, function() { | ||
76 | + return 'ok'; | ||
77 | + }); | ||
78 | + | ||
79 | + connect.on('mock', function(data) { | ||
80 | + expect(data).to.be('ok'); | ||
81 | + done(); | ||
82 | + }); | ||
83 | + | ||
84 | + connect.client.write('test'); | ||
85 | + }); | ||
86 | + }); | ||
87 | + | ||
88 | + describe('sendOrder', function() { | ||
89 | + it('send expect same back', function(done) { | ||
90 | + var connect = new C({ | ||
91 | + host: '1.1.1.1', | ||
92 | + port: '123' | ||
93 | + }, function(con) {}, function() {}); | ||
94 | + C.__set__('spliteRet', function(mq) { | ||
95 | + return { | ||
96 | + rets: [], | ||
97 | + mq: mq | ||
98 | + }; | ||
99 | + }); | ||
100 | + let call = new Buffer('Mock', 'hex'); | ||
101 | + connect.client.on('data', function(data) { | ||
102 | + expect(data).to.eql(call); | ||
103 | + expect(connect.orderMq[0]).to.be('mo'); | ||
104 | + done(); | ||
105 | + }); | ||
106 | + connect.send('Mock'); | ||
107 | + | ||
108 | + }); | ||
109 | + }) | ||
110 | + | ||
111 | + after(function() { | ||
112 | + muk.restore(); | ||
113 | + }); | ||
114 | +}); |
test/lib/util.test.js
0 → 100644
test/mock/fakeNet.js
0 → 100644
1 | +import events from 'events'; | ||
2 | + | ||
3 | +class FakeSocket extends events.EventEmitter { | ||
4 | + constructor() { | ||
5 | + super(); | ||
6 | + this.data = {}; | ||
7 | + } | ||
8 | + | ||
9 | + connect(port, host, callback) { | ||
10 | + callback(); | ||
11 | + } | ||
12 | + | ||
13 | + write(data) { | ||
14 | + this.addEmit('data', data); | ||
15 | + } | ||
16 | + | ||
17 | + addEmit(ev, data) { | ||
18 | + let that = this; | ||
19 | + process.nextTick(function() { | ||
20 | + that.emit(ev, data); | ||
21 | + }); | ||
22 | + } | ||
23 | + destroy() { | ||
24 | + let that = this; | ||
25 | + process.nextTick(function() { | ||
26 | + that.addEmit('close', that.data); | ||
27 | + }); | ||
28 | + } | ||
29 | +} | ||
30 | + | ||
31 | +export default { | ||
32 | + Socket: FakeSocket | ||
33 | +}; |
@@ -2,4 +2,5 @@ require("babel/register")({ | @@ -2,4 +2,5 @@ require("babel/register")({ | ||
2 | plugins: ["babel-plugin-rewire"] | 2 | plugins: ["babel-plugin-rewire"] |
3 | }); //es6 polyfill | 3 | }); //es6 polyfill |
4 | 4 | ||
5 | -require('./lib/index.test'); | ||
5 | +require('./lib/index.test'); | ||
6 | +require('./lib/connector.test'); |
-
Please register or login to post a comment