pws-formula
Version:
This is a formula execute the string or buffer format formula libray to get values from string or buffer.
244 lines (233 loc) • 8.31 kB
JavaScript
/**
* Project: pws-formula
* Created Date: Thursday, May 3rd 2018, 4:18:47 pm
* Author: Thomas.Li
* E-Mail: leeyinghui@hotmail.com
* Intro: Unit test file of the buffer.js
* -----
* Last Modified: Thu May 03 2018
* Modified By: Thomas.li
* -----
* Copyright (c) 2018 pareact
* ------------------------------------
* Always bet on Javascript!
*/
const { getBuffValue, verifyBuffer, getFullBuffer } = require('../lib/buffer');
const expect = require('chai').expect;
describe('hx function test', function() {
let buf = Buffer.from('010304012345673e4d', 'hex');
let f1 = 'hx(3,2)';
let f2 = 'hx(5,2)';
let f3 = 'hx(a,2)';
let f4 = 'hx(-3,2)';
let f5 = 'hx(6,4)';
let f6 = 'hx(3,5)';
it('first value should be [291, 17767]', function() {
expect(getBuffValue(buf, [f1, f2]).map(x => x['data'])).to.deep.equal([
291,
17767
]);
});
it('hx(3,2) should get true', function() {
expect(getBuffValue(buf, [f1])[0].success).to.be.true;
});
it('hx(a,2) should get false(char)', function() {
expect(getBuffValue(buf, [f3])[0].success).to.be.false;
});
it('hx(-3,2) should get false (negative)', function() {
expect(getBuffValue(buf, [f4])[0].success).to.be.false;
});
it('hx(6,4) should get false(6+4>9)', function() {
expect(getBuffValue(buf, [f5])[0].success).to.be.false;
});
it('hx(3,5) should get false(length>4)', function() {
expect(getBuffValue(buf, [f6])[0].success).to.be.false;
});
});
describe('hxu function test', function() {
let buf = Buffer.from(
'65034008E70F43021A1383006DFC80FFF5007A08D20F2A01ED13830063FC84FFFE006F08B60F5002091383006AFC67FFFF007308CE0F3D020413',
'hex'
);
let f1 = 'hxu(11)';
let f2 = 'hxu(15)';
it('first value should be [109, -11]', function() {
expect(getBuffValue(buf, [f1, f2]).map(x => x['data'])).to.deep.equal([
109,
-11
]);
});
});
describe('hc function test', function() {
let buf = Buffer.from(
'AAAAC0A800F4022045100738FFFFFF00C0A80101FFFFFFFFFFFF32322E320030372E310000302D31322E380000000100E2FF000000',
'hex'
);
let f1 = 'hc(38,6)';
let f2 = 'hc(32,6)';
let f3 = 'hc(26,6)';
let f4 = 'hc(50,6)';
let f5 = 'hc(44,6)';
let f6 = 'hc(0,6)';
it('hc(38,6) get -12.8', function() {
expect(getBuffValue(buf, [f1])[0].data).to.equal(-12.8);
});
it('hc(32,6) get 7.1', function() {
expect(getBuffValue(buf, [f2])[0].data).to.equal(7.1);
});
it('hc(26,6) get 22.2', function() {
expect(getBuffValue(buf, [f3])[0].data).to.equal(22.2);
});
it('hc(50,6) get false (50+6>53)', function() {
expect(getBuffValue(buf, [f4])[0].success).to.be.false;
});
it('hc(44,6) get false(include e2ff)', function() {
expect(getBuffValue(buf, [f5])[0].success).to.be.false;
});
it('hc(0,6) get false(include e2ff)', function() {
expect(getBuffValue(buf, [f6])[0].success).to.be.false;
});
});
describe('hp function test', function() {
let buf = Buffer.from(
'51032042480000435D2EE0435E099D435DD740435DAFE943BFBA3E43C058FB43BFDD80CEF1',
'hex'
);
let f1 = 'hp(3)';
let f2 = 'hp(7)';
let f3 = 'hp(11)';
let f4 = 'hp(35)';
it('hp(3) get 50', function() {
expect(getBuffValue(buf, [f1])[0].data).to.equal(50);
});
it('hp(7) get 221.18', function() {
expect(getBuffValue(buf, [f2])[0].data).to.equal(221.18);
});
it('hp(11) get 222.04', function() {
expect(getBuffValue(buf, [f3])[0].data).to.equal(222.04);
});
it('hp(35) get false(35+4>37)', function() {
expect(getBuffValue(buf, [f4])[0].success).to.be.false;
});
});
describe('ht function test', function() {
let buf = Buffer.from('010304000002AD36424C', 'hex');
let f1 = 'ht(0,2)';
let f2 = 'ht(1,2)';
let f3 = 'ht(7,2)';
let f4 = 'ht(-1,2)';
let f5 = 'ht(6,1)';
let f6 = 'ht(18,3)';
let f7 = 'ht(7,4)';
it('ht(0,2) get 103', function() {
expect(getBuffValue(buf, [f1])[0].data).to.equal(103);
});
it('ht(1,2) get 304', function() {
expect(getBuffValue(buf, [f2])[0].data).to.equal(304);
});
it('ht(7,2) get 3642', function() {
expect(getBuffValue(buf, [f3])[0].data).to.equal(3642);
});
it('ht(-1,2) get false (negative)', function() {
expect(getBuffValue(buf, [f4])[0].success).to.be.false;
});
it('ht(6,1) get false(include ad)', function() {
expect(getBuffValue(buf, [f5])[0].success).to.be.false;
});
it('ht(18,3) get false(18>9)', function() {
expect(getBuffValue(buf, [f6])[0].success).to.be.false;
});
it('ht(7,4) get false(7+4>10)', function() {
expect(getBuffValue(buf, [f7])[0].success).to.be.false;
});
});
describe('hb function test', function() {
let buf = Buffer.from('010300000002C40C', 'hex');
let f1 = 'hb(6,7)';
let f2 = 'hb(1,7)';
let f3 = 'hb(1,5)';
let f4 = 'hb(-1,2)';
let f5 = 'hb(9,2)';
let f6 = 'hb(4,-1)';
it('hb(6,7) get 1', function() {
expect(getBuffValue(buf, [f1])[0].data).to.equal(1);
});
it('hb(1,7) get 0', function() {
expect(getBuffValue(buf, [f2])[0].data).to.equal(0);
});
it('hb(1,5)get 0', function() {
expect(getBuffValue(buf, [f3])[0].data).to.equal(0);
});
it('hb(-1,2) get false (negative)', function() {
expect(getBuffValue(buf, [f4])[0].success).to.be.false;
});
it('hb(9,2) get false(9>7)', function() {
expect(getBuffValue(buf, [f5])[0].success).to.be.false;
});
it('hb(4,-1) get false(-1 not in 0-7)', function() {
expect(getBuffValue(buf, [f6])[0].success).to.be.false;
});
});
describe('verifyBuffer function test', function() {
let buf1 = Buffer.from('010300000002C40B', 'hex');
let buf2 = Buffer.from('010300000002C4CA', 'hex');
it('veirify buf1 get true by crc', function() {
expect(verifyBuffer(buf1, 1).success).to.be.true;
});
it('veirify buf2 get true by sum', function() {
expect(verifyBuffer(buf2, 3).success).to.be.true;
});
it('veirify buf1 get false by sum', function() {
expect(verifyBuffer(buf1, 3).success).to.be.false;
});
it('veirify buf2 get false by crc', function() {
expect(verifyBuffer(buf2, 1).success).to.be.false;
});
it('veirify buf2 get false by wrong sort(11 not 1 or 3)', function() {
expect(verifyBuffer(buf2, 11).success).to.be.false;
});
});
describe('verifyBuffer function test', function() {
let buf1 = Buffer.from('010300000002', 'hex');
let buf1_full = Buffer.from('010300000002C40B', 'hex');
let buf2 = Buffer.from('010300000002C4', 'hex');
let buf2_full = Buffer.from('010300000002C4CA', 'hex');
let buf3 = Buffer.from('0103', 'hex');
it('buf1 get full buffer 010300000002C40B by crc', function() {
expect(getFullBuffer(buf1, 1).data).to.deep.equal(buf1_full);
});
it('buf2 get full buffer 010300000002C4CA by sum', function() {
expect(getFullBuffer(buf2, 3).data).to.deep.equal(buf2_full);
});
it('buf1 cannot get full buffer 010300000002C40B by sum', function() {
expect(getFullBuffer(buf1, 3).data).to.not.deep.equal(buf1_full);
});
it('buf2 cannot get full buffer 010300000002C4CA by crc', function() {
expect(getFullBuffer(buf2, 1).data).to.not.deep.equal(buf2_full);
});
it('buf3 get false (length<3)', function() {
expect(getFullBuffer(buf3, 1).success).to.be.false;
});
it('buf2 get false by wrong sort(11 not 1 or 3)', function() {
expect(getFullBuffer(buf2, 11).success).to.be.false;
});
});
describe('pif function test', function() {
let buf = Buffer.from('010304012345673e4d', 'hex');
let f1 = 'pif(hx(3,2)>100, ht(0,2), hb(1,1))';
let f2 = 'pif(hx(3,2)<100, ht(0,2), hb(1,1))';
let f3 = 'pif(hx(3,2)>100, ht(-3,2), hb(1,1))';
let f4 = 'pif(hx(3,2)<100, ht(0,2), hb(1,21))';
it('f1 get 103', function() {
expect(getBuffValue(buf, [f1])[0].data).to.equal(103);
});
it('f2 get 1', function() {
expect(getBuffValue(buf, [f2])[0].data).to.equal(1);
});
it('f3 get false (negative)', function() {
expect(getBuffValue(buf, [f3])[0].success).to.be.false;
});
it('f4 get false (21 not in 0-7)', function() {
expect(getBuffValue(buf, [f4])[0].success).to.be.false;
});
});