Skip to content

Commit b568b38

Browse files
committed
refactor(unit): split service unit test into individual files
1 parent b539802 commit b568b38

30 files changed

Lines changed: 2326 additions & 2184 deletions
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
'use strict';
2+
3+
const expect = require('chai').expect;
4+
const utils = require('./utils');
5+
const baServices = require('../../lib/services');
6+
7+
describe('bacstack - Services layer AddListElement unit', () => {
8+
it('should successfully encode and decode', () => {
9+
const buffer = utils.getBuffer();
10+
baServices.addListElement.encode(buffer, {type: 11, instance: 560}, 85, 2, [
11+
{type: 1, value: false},
12+
{type: 2, value: 1}
13+
]);
14+
const result = baServices.addListElement.decode(buffer.buffer, 0, buffer.offset);
15+
delete result.len;
16+
expect(result).to.deep.equal({
17+
objectId: {type: 11, instance: 560},
18+
property: {id: 85, index: 2},
19+
values: [
20+
{type: 1, value: false},
21+
{type: 2, value: 1}
22+
]
23+
});
24+
});
25+
});
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
'use strict';
2+
3+
const expect = require('chai').expect;
4+
const utils = require('./utils');
5+
const baServices = require('../../lib/services');
6+
const baEnum = require('../../lib/enum');
7+
8+
describe('bacstack - Services layer AlarmAcknowledge unit', () => {
9+
it('should successfully encode and decode with time timestamp', () => {
10+
const buffer = utils.getBuffer();
11+
const eventTime = new Date(1, 1, 1);
12+
eventTime.setMilliseconds(990);
13+
const ackTime = new Date(1, 1, 1);
14+
ackTime.setMilliseconds(880);
15+
baServices.alarmAcknowledge.encode(buffer, 57, {type: 0, instance: 33}, 5, 'Alarm Acknowledge Test', {value: eventTime, type: baEnum.TimeStamp.TIME}, {value: ackTime, type: baEnum.TimeStamp.TIME});
16+
const result = baServices.alarmAcknowledge.decode(buffer.buffer, 0, buffer.offset);
17+
delete result.len;
18+
expect(result).to.deep.equal({
19+
acknowledgedProcessId: 57,
20+
eventObjectId: {
21+
type: 0,
22+
instance: 33
23+
},
24+
eventStateAcknowledged: 5,
25+
acknowledgeSource: 'Alarm Acknowledge Test',
26+
eventTimeStamp: eventTime,
27+
acknowledgeTimeStamp: ackTime
28+
});
29+
});
30+
31+
it('should successfully encode and decode with sequence timestamp', () => {
32+
const buffer = utils.getBuffer();
33+
const eventTime = 5;
34+
const ackTime = 6;
35+
baServices.alarmAcknowledge.encode(buffer, 57, {type: 0, instance: 33}, 5, 'Alarm Acknowledge Test', {value: eventTime, type: baEnum.TimeStamp.SEQUENCE_NUMBER}, {value: ackTime, type: baEnum.TimeStamp.SEQUENCE_NUMBER});
36+
const result = baServices.alarmAcknowledge.decode(buffer.buffer, 0, buffer.offset);
37+
delete result.len;
38+
expect(result).to.deep.equal({
39+
acknowledgedProcessId: 57,
40+
eventObjectId: {
41+
type: 0,
42+
instance: 33
43+
},
44+
eventStateAcknowledged: 5,
45+
acknowledgeSource: 'Alarm Acknowledge Test',
46+
eventTimeStamp: eventTime,
47+
acknowledgeTimeStamp: ackTime
48+
});
49+
});
50+
51+
it('should successfully encode and decode with datetime timestamp', () => {
52+
const buffer = utils.getBuffer();
53+
const eventTime = new Date(1, 1, 1);
54+
eventTime.setMilliseconds(990);
55+
const ackTime = new Date(1, 1, 2);
56+
ackTime.setMilliseconds(880);
57+
baServices.alarmAcknowledge.encode(buffer, 57, {type: 0, instance: 33}, 5, 'Alarm Acknowledge Test', {value: eventTime, type: baEnum.TimeStamp.DATETIME}, {value: ackTime, type: baEnum.TimeStamp.DATETIME});
58+
const result = baServices.alarmAcknowledge.decode(buffer.buffer, 0, buffer.offset);
59+
delete result.len;
60+
expect(result).to.deep.equal({
61+
acknowledgedProcessId: 57,
62+
eventObjectId: {
63+
type: 0,
64+
instance: 33
65+
},
66+
eventStateAcknowledged: 5,
67+
acknowledgeSource: 'Alarm Acknowledge Test',
68+
eventTimeStamp: eventTime,
69+
acknowledgeTimeStamp: ackTime
70+
});
71+
});
72+
});
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
'use strict';
2+
3+
const expect = require('chai').expect;
4+
const utils = require('./utils');
5+
const baServices = require('../../lib/services');
6+
7+
describe('bacstack - Services layer AlarmSummary unit', () => {
8+
it('should successfully encode and decode', () => {
9+
const buffer = utils.getBuffer();
10+
baServices.alarmSummary.encode(buffer, [
11+
{objectId: {type: 12, instance: 12}, alarmState: 12, acknowledgedTransitions: {value: [12], bitsUsed: 5}},
12+
{objectId: {type: 13, instance: 13}, alarmState: 13, acknowledgedTransitions: {value: [13], bitsUsed: 6}}
13+
]);
14+
const result = baServices.alarmSummary.decode(buffer.buffer, 0, buffer.offset);
15+
delete result.len;
16+
expect(result).to.deep.equal({
17+
alarms: [
18+
{objectId: {type: 12, instance: 12}, alarmState: 12, acknowledgedTransitions: {value: [12], bitsUsed: 5}},
19+
{objectId: {type: 13, instance: 13}, alarmState: 13, acknowledgedTransitions: {value: [13], bitsUsed: 6}}
20+
]
21+
});
22+
});
23+
});
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
'use strict';
2+
3+
const expect = require('chai').expect;
4+
const utils = require('./utils');
5+
const baServices = require('../../lib/services');
6+
7+
describe('bacstack - Services layer AtomicReadFile unit', () => {
8+
it('should successfully encode and decode as stream', () => {
9+
const buffer = utils.getBuffer();
10+
baServices.atomicReadFile.encode(buffer, true, {type: 13, instance: 5000}, -50, 12);
11+
const result = baServices.atomicReadFile.decode(buffer.buffer, 0);
12+
delete result.len;
13+
expect(result).to.deep.equal({
14+
objectId: {type: 13, instance: 5000},
15+
count: 12,
16+
isStream: true,
17+
position: -50
18+
});
19+
});
20+
21+
it('should successfully encode and decode as non-stream', () => {
22+
const buffer = utils.getBuffer();
23+
baServices.atomicReadFile.encode(buffer, false, {type: 14, instance: 5001}, 60, 13);
24+
const result = baServices.atomicReadFile.decode(buffer.buffer, 0);
25+
delete result.len;
26+
expect(result).to.deep.equal({
27+
objectId: {type: 14, instance: 5001},
28+
count: 13,
29+
isStream: false,
30+
position: 60
31+
});
32+
});
33+
});
34+
35+
describe('AtomicReadFileAcknowledge', () => {
36+
it('should successfully encode and decode as stream', () => {
37+
const buffer = utils.getBuffer();
38+
baServices.atomicReadFile.encodeAcknowledge(buffer, true, false, 0, 90, [[12, 12, 12]], [3]);
39+
const result = baServices.atomicReadFile.decodeAcknowledge(buffer.buffer, 0);
40+
delete result.len;
41+
expect(result).to.deep.equal({
42+
isStream: true,
43+
position: 0,
44+
endOfFile: false,
45+
buffer: Buffer.from([12, 12, 12])
46+
});
47+
});
48+
49+
it('should successfully encode and decode as non-stream', () => {
50+
const buffer = utils.getBuffer();
51+
baServices.atomicReadFile.encodeAcknowledge(buffer, false, false, 0, 90, [12, 12, 12], 3);
52+
// TODO: AtomicReadFileAcknowledge as non-stream not yet implemented
53+
expect(() => {
54+
baServices.atomicReadFile.decodeAcknowledge(buffer.buffer, 0);
55+
}).to.throw('NotImplemented');
56+
});
57+
});
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
'use strict';
2+
3+
const expect = require('chai').expect;
4+
const utils = require('./utils');
5+
const baServices = require('../../lib/services');
6+
7+
describe('bacstack - Services layer AtomicWriteFile unit', () => {
8+
it('should successfully encode and decode as stream', () => {
9+
const buffer = utils.getBuffer();
10+
baServices.atomicWriteFile.encode(buffer, true, {type: 12, instance: 51}, 5, [[12, 12]]);
11+
const result = baServices.atomicWriteFile.decode(buffer.buffer, 0, buffer.offset);
12+
delete result.len;
13+
expect(result).to.deep.equal({
14+
objectId: {type: 12, instance: 51},
15+
isStream: true,
16+
position: 5,
17+
blocks: [[12, 12]]
18+
});
19+
});
20+
21+
it('should successfully encode and decode as non-stream', () => {
22+
const buffer = utils.getBuffer();
23+
baServices.atomicWriteFile.encode(buffer, false, {type: 12, instance: 88}, 10, [[12, 12], [12, 12]]);
24+
const result = baServices.atomicWriteFile.decode(buffer.buffer, 0, buffer.offset);
25+
delete result.len;
26+
expect(result).to.deep.equal({
27+
objectId: {type: 12, instance: 88},
28+
isStream: false,
29+
position: 10,
30+
blocks: [[12, 12], [12, 12]]
31+
});
32+
});
33+
});
34+
35+
describe('AtomicWriteFileAcknowledge', () => {
36+
it('should successfully encode and decode streamed file', () => {
37+
const buffer = utils.getBuffer();
38+
baServices.atomicWriteFile.encodeAcknowledge(buffer, true, -10);
39+
const result = baServices.atomicWriteFile.decodeAcknowledge(buffer.buffer, 0);
40+
delete result.len;
41+
expect(result).to.deep.equal({
42+
isStream: true,
43+
position: -10
44+
});
45+
});
46+
47+
it('should successfully encode and decode non-streamed file', () => {
48+
const buffer = utils.getBuffer();
49+
baServices.atomicWriteFile.encodeAcknowledge(buffer, false, 10);
50+
const result = baServices.atomicWriteFile.decodeAcknowledge(buffer.buffer, 0);
51+
delete result.len;
52+
expect(result).to.deep.equal({
53+
isStream: false,
54+
position: 10
55+
});
56+
});
57+
});
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
'use strict';
2+
3+
const expect = require('chai').expect;
4+
const utils = require('./utils');
5+
const baServices = require('../../lib/services');
6+
7+
describe('bacstack - Services layer COVNotify unit', () => {
8+
it('should successfully encode and decode', () => {
9+
const buffer = utils.getBuffer();
10+
const date = new Date(1, 1, 1);
11+
const time = new Date(1, 1, 1);
12+
time.setMilliseconds(990);
13+
baServices.covNotify.encode(buffer, 7, 443, {type: 2, instance: 12}, 120, [
14+
{property: {id: 81, index: 0xFFFFFFFF}, value: [
15+
{type: 0},
16+
{type: 1, value: null},
17+
{type: 1, value: true},
18+
{type: 1, value: false},
19+
{type: 2, value: 1},
20+
{type: 2, value: 1000},
21+
{type: 2, value: 1000000},
22+
{type: 2, value: 1000000000},
23+
{type: 3, value: -1},
24+
{type: 3, value: -1000},
25+
{type: 3, value: -1000000},
26+
{type: 3, value: -1000000000},
27+
{type: 4, value: 0.1},
28+
{type: 5, value: 100.121212},
29+
{type: 6, value: [1, 2, 100, 200]},
30+
{type: 7, value: 'Test1234$'},
31+
{type: 8, value: {bitsUsed: 0, value: []}},
32+
{type: 8, value: {bitsUsed: 24, value: [0xAA, 0xAA, 0xAA]}},
33+
{type: 9, value: 4},
34+
{type: 10, value: date},
35+
{type: 11, value: time}
36+
], priority: 0},
37+
{property: {id: 82, index: 0}, value: [
38+
{type: 12, value: {type: 3, instance: 0}}
39+
], priority: 8}
40+
]);
41+
const result = baServices.covNotify.decode(buffer.buffer, 0, buffer.offset);
42+
delete result.len;
43+
result.values[0].value[12].value = Math.floor(result.values[0].value[12].value * 1000) / 1000;
44+
expect(result).to.deep.equal({
45+
initiatingDeviceId: {
46+
type: 8,
47+
instance: 443
48+
},
49+
monitoredObjectId: {
50+
type: 2,
51+
instance: 12
52+
},
53+
subscriberProcessId: 7,
54+
timeRemaining: 120,
55+
values: [
56+
{
57+
priority: 0,
58+
property: {
59+
index: 0xFFFFFFFF,
60+
id: 81
61+
},
62+
value: [
63+
{type: 0, value: null},
64+
{type: 0, value: null},
65+
{type: 1, value: true},
66+
{type: 1, value: false},
67+
{type: 2, value: 1},
68+
{type: 2, value: 1000},
69+
{type: 2, value: 1000000},
70+
{type: 2, value: 1000000000},
71+
{type: 3, value: -1},
72+
{type: 3, value: -1000},
73+
{type: 3, value: -1000000},
74+
{type: 3, value: -1000000000},
75+
{type: 4, value: 0.1},
76+
{type: 5, value: 100.121212},
77+
{type: 6, value: [1, 2, 100, 200]},
78+
{type: 7, value: 'Test1234$', encoding: 0},
79+
{type: 8, value: {bitsUsed: 0, value: []}},
80+
{type: 8, value: {bitsUsed: 24, value: [0xAA, 0xAA, 0xAA]}},
81+
{type: 9, value: 4},
82+
{type: 10, value: date},
83+
{type: 11, value: time}
84+
]
85+
},
86+
{
87+
priority: 0,
88+
property: {
89+
index: 0xFFFFFFFF,
90+
id: 82
91+
},
92+
value: [
93+
{type: 12, value: {type: 3, instance: 0}}
94+
]
95+
}
96+
]
97+
});
98+
});
99+
});

0 commit comments

Comments
 (0)