UNPKG

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
/** * 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; }); });