UNPKG

pws-formula

Version:

This is a formula execute the string or buffer format formula libray to get values from string or buffer.

297 lines (286 loc) 11.7 kB
/** * Project: \pws-formula * Created Date: Thursday, May 3rd 2018, 9:01:53 pm * Author: Thomas.Li * E-Mail: leeyinghui@hotmail.com * Intro: Unit test file of the str.js * ----- * Last Modified: Tue May 29 2018 * Modified By: Thomas.Li * ----- * Copyright (c) 2018 pareact * ------------------------------------ * Always bet on Javascript! */ const { getStringValue, verifyString, getFullString } = require('../lib/str') const expect = require('chai').expect; describe('ax function test', function () { let str = '~10012A0020680133B35A4300005F43CDCC6043CDCC5C4300005D4300005D43000060410000C0400000B0409AD9CC439A9947420000009AD9CC43E77D'; let f1 = 'ax(1,4)' let f2 = 'ax(15,4)'; let f3 = 'ax(-1,2)'; let f4 = 'ax(120,2)'; let f5 = 'ax(3,20)'; let f6 = 'ax(3,5)'; it('f1 and f2 value should be [4097, 13235]', function () { expect(getStringValue(str, [f1, f2,]).map(x => x['data'])).to.deep.equal([4097, 13235]); }); it('f1 should get true', function () { expect(getStringValue(str, [f1,])[0].success).to.be.true; }); it('f3 should get false(negative)', function () { expect(getStringValue(str, [f3,])[0].success).to.be.false; }); it('f4 should get false(120+2>121)', function () { expect(getStringValue(str, [f4,])[0].success).to.be.false; }); it('f5 should get false(20>16)', function () { expect(getStringValue(str, [f5,])[0].success).to.be.false; }); it('f6 should get false(5 is oven)', function () { expect(getStringValue(str, [f6,])[0].success).to.be.false; }); }); describe('ap function test', function () { let str = '~10012A00307600000ECD4CC14300C0C14333F3C143333313403333F33F3333F33F00PP4842F6281C3F713D0A3F14AE073F00005F4300805E4333335F4300004842E491'; let f1 = 'ap(19)'; let f2 = 'ap(27)'; let f3 = 'ap(35)'; let f4 = 'ap(67)'; let f5 = 'ap(-1)'; let f6 = 'ap(133)'; it('f1 f2 f3 value should be [386.6, 387.5, 387.9]', function () { expect(getStringValue(str, [f1, f2, f3]).map(x => x['data'])).to.deep.equal([386.6, 387.5, 387.9]); }); it('f1 should get true', function () { expect(getStringValue(str, [f1,])[0].success).to.be.true; }); it('f4 should get false(00PP4842 is not hex string)', function () { expect(getStringValue(str, [f4,])[0].success).to.be.false; }); it('f5 should get false(negative)', function () { expect(getStringValue(str, [f5,])[0].success).to.be.false; }); it('f6 should get false(133+8>135)', function () { expect(getStringValue(str, [f6,])[0].success).to.be.false; }); }); describe('ad function test', function () { let str = ':F00+10.10209-463FFFFFF5100080000E30000000000017A014C04971FQ'; let f1 = 'ad(10,3)'; let f2 = 'ad(13,4)'; let f3 = 'ad(5,4)'; let f4 = 'ad(-1,4)'; let f5 = 'ad(9,52)'; let f6 = 'ad(51,4)'; let f7 = 'ad(4,4)'; let f8 = 'ad(3,24)'; it('f1 f2 f3 value should be [209, -463, 10.1]', function () { expect(getStringValue(str, [f1, f2, f3]).map(x => x['data'])).to.deep.equal([209, -463, 10.1]); }); it('f1 should get true', function () { expect(getStringValue(str, [f1,])[0].success).to.be.true; }); it('f4 should get false(negative)', function () { expect(getStringValue(str, [f4,])[0].success).to.be.false; }); it('f5 should get false(9+52>60)', function () { expect(getStringValue(str, [f5,])[0].success).to.be.false; }); it('f6 should get false(4c04 not a digital)', function () { expect(getStringValue(str, [f6,])[0].success).to.be.false; }); it('f7 should get false(+10. is wrong)', function () { expect(getStringValue(str, [f7,])[0].success).to.be.false; }); it('f8 should get false(24>max 16 string length)', function () { expect(getStringValue(str, [f8,])[0].success).to.be.false; }); }); describe('ac function test', function () { let str = '01A091023131314D5330312E30342E313331302E34322E34362D3830333832333832323138323139323230303031313030303630303036303030362B303030322B303030312B303030312B302E3035302E303337373337373337343432352B303030303030303230303031303030312A2A2A2E2A2A2A2A2E2A2A2A2A2E2A2B30302E303030393030353030353039393931303003BF'; let f1 = 'ac(50,6)'; let f2 = 'ac(148,10)'; let f3 = 'ac(18,2)'; let f4 = 'ac(-1,2)'; let f5 = 'ac(0,296)'; let f6 = 'ac(0,300)'; it('f1 f2 f3 value should be [-80, 0.05, 0]', function () { expect(getStringValue(str, [f1, f2, f3]).map(x => x['data'])).to.deep.equal([-80, 0.05, 0]); }); it('f1 should get true', function () { expect(getStringValue(str, [f1,])[0].success).to.be.true; }); it('f4 should get false(negative)', function () { expect(getStringValue(str, [f4,])[0].success).to.be.false; }); it('f5 should get false(convert float fault)', function () { expect(getStringValue(str, [f5,])[0].success).to.be.false; }); it('f6 should get false(300>298)', function () { expect(getStringValue(str, [f6,])[0].success).to.be.false; }); }); describe('av function test', function () { let str1 = '-32.6'; let str2 = '0006'; let str3 = '+32.6'; let str4 = '.6'; let str5 = '-3a.6'; let str6 = '+-3'; let str7 = '30.6.3'; let str8 = '6.'; let f1 = 'av()'; it('str1 value should be -32.6', function () { expect(getStringValue(str1, [f1,])[0].data).to.equal(-32.6); }); it('str2 value should be 6', function () { expect(getStringValue(str2, [f1,])[0].data).to.equal(6); }); it('str3 value should be 32.6', function () { expect(getStringValue(str3, [f1,])[0].data).to.equal(32.6); }); it('str1 should get true', function () { expect(getStringValue(str1, [f1,])[0].success).to.be.true; }); it('str4 should get false(.6)', function () { expect(getStringValue(str4, [f1,])[0].success).to.be.false; }); it('str5 should get false(-3a.6)', function () { expect(getStringValue(str5, [f1,])[0].success).to.be.false; }); it('str6 should get false(+-3)', function () { expect(getStringValue(str6, [f1,])[0].success).to.be.false; }); it('str7 should get false(30.6.3)', function () { expect(getStringValue(str7, [f1,])[0].success).to.be.false; }); it('str8 should get false(6.)', function () { expect(getStringValue(str8, [f1,])[0].success).to.be.false; }); }); describe('ab function test', function () { let str = ':F0061A0102090463FFFFFF5100080000E30000000000017A014C04971FQ'; let f1 = 'ab(33,4)'; let f2 = 'ab(33,5)'; let f3 = 'ab(1,3)'; let f4 = 'ab(59,3)'; let f5 = 'ab(33,-1)'; let f6 = 'ab(33,9)'; let f7 = 'ab(58,3)'; it('f1 f2 f3 value should be [0, 1, 0]', function () { expect(getStringValue(str, [f1, f2, f3]).map(x => x['data'])).to.deep.equal([0, 1, 0]); }); it('f1 should get true', function () { expect(getStringValue(str, [f1,])[0].success).to.be.true; }); it('f4 should get false(59+3>60)', function () { expect(getStringValue(str, [f4,])[0].success).to.be.false; }); it('f5 should get false(negativ)', function () { expect(getStringValue(str, [f5,])[0].success).to.be.false; }); it('f6 should get false(9>7)', function () { expect(getStringValue(str, [f6,])[0].success).to.be.false; }); it('f7 should get false(Q is not hex)', function () { expect(getStringValue(str, [f7,])[0].success).to.be.false; }); }); describe('verifyString function test', function () { let str1 = '01A07CFF02E2'; let str2 = ':F0061A0102090463FFFFFF5100080000E30000000000017A014C04971F'; let str3 = '~10012AE7C0040100FCB7'; let str4 = '01'; let str5 = ':P0061A0102090463FFFFFF5100080000E30000000000017A014C04971F'; it('veirify str1 get true by lrc', function () { expect(verifyString(str1, 2).success).to.be.true; }); it('veirify str2 get true by sum', function () { expect(verifyString(str2, 3).success).to.be.true; }); it('veirify str3 get true by pmbus', function () { expect(verifyString(str3, 4).success).to.be.true; }); it('veirify str4 get false (length<3)', function () { expect(verifyString(str4, 3).success).to.be.false; }); it('veirify str5 get false (P is not a hex char)', function () { expect(verifyString(str5, 3).success).to.be.false; }); it('veirify str3 get false (length=21%2=1)', function () { expect(verifyString(str3, 3).success).to.be.false; }); it('veirify str1 get false by sum', function () { expect(verifyString(str1, 3).success).to.be.false; }); it('veirify str2 get false by pmbus', function () { expect(verifyString(str2, 4).success).to.be.false; }); it('veirify str3 get false by lrc', function () { expect(verifyString(str3, 2).success).to.be.false; }); it('veirify str3 get false by wrong sort', function () { expect(verifyString(str3, 1).success).to.be.false; }); }); describe('getFullString function test', function () { let str1 = '01A07CFF02'; let str1_full = '01A07CFF02E2'; let str2 = ':F0061A0102090463FFFFFF5100080000E30000000000017A014C0497'; let str2_full = ':F0061A0102090463FFFFFF5100080000E30000000000017A014C04971F'; let str3 = '~10012AE7C0040100'; let str3_full = '~10012AE7C0040100FCB7'; let str4 = '01'; let str5 = ':P0061A0102090463FFFFFF5100080000E30000000000017A014C0497'; it('str1 get full string by lrc', function () { expect(getFullString(str1, 2).data).to.deep.equal(str1_full); }); it('str2 get full string by sum', function () { expect(getFullString(str2.slice(1), 3).data).to.deep.equal(str2_full.slice(1)); }); it('str3 get full string by pmbus', function () { expect(getFullString(str3.slice(1), 4).data).to.deep.equal(str3_full.slice(1)); }); it('str1 cannot get full string by sum', function () { expect(getFullString(str1, 3).data).to.not.deep.equal(str1_full); }); it('str2 cannot get full string by pmbus', function () { expect(getFullString(str2.slice(1), 4).data).to.not.deep.equal(str2_full.slice(1)); }); it('str3 cannot get full string by lrc', function () { expect(getFullString(str3.slice(1), 2).data).to.not.deep.equal(str3_full.slice(1)); }); it('str4 cannot get full string (length<3)', function () { expect(getFullString(str4, 3).success).to.be.false; }); it('str5 cannot get full string (P is not a hex char)', function () { expect(getFullString(str5.slice(1), 3).success).to.be.false; }); it('str1 cannot get full string (wrong sort)', function () { expect(getFullString(str1, 1).success).to.be.false; }); }); describe('pif function test', function () { let str1 = ':F0061A0102090463FFFFFF5100080000E30000000000017A014C0497'; let str2 = '~10012A0020680133B35A4300005F43CDCC6043CDCC5C4300005D4300005D4332322E330000604100-32.600C0400000B0409AD9CC439A9947420000009AD9CC43E77D'; let f1 = 'pif(ab(0,3)==0, ax(8,4), ad(8,4))'; let f2 = 'pif(ab(0,5)==0, ax(8,4), ad(8,4))'; let f3 = 'pif(ap(14)>200, ac(62,8), ad(80,5))'; let f4 = 'pif(ap(14)<200, ac(62,8), ad(80,5))'; it('f1 get 521', function () { expect(getStringValue(str1.slice(1), [f1,])[0].data).to.equal(521); }); it('f2 get 209', function () { expect(getStringValue(str1.slice(1), [f2,])[0].data).to.equal(209); }); it('f1 should get true', function () { expect(getStringValue(str1.slice(1), [f1,])[0].success).to.be.true; }); it('f3 get 22.3', function () { expect(getStringValue(str2.slice(1), [f3,])[0].data).to.equal(22.3); }); it('f4 get -32.6', function () { expect(getStringValue(str2.slice(1), [f4,])[0].data).to.equal(-32.6); }); });