UNPKG

sensorium

Version:

makeblock mainboards protocol api

110 lines (99 loc) 3.9 kB
/** * @fileOverview do getData-test for sensorium *[为sensorium库做接收数据的接口测试,测试用例由testlink上导出,运行命令:node transform.js后即可得到] */ var assert = require('chai').assert; var fs = require('fs'); var availableData = __dirname + "/availableGetData.json"; var temporaryData = JSON.parse(fs.readFileSync(availableData));//读取json文件 var drivenData = temporaryData.drivenData;//得到测试数据 const Sensorium = require('../../browser/sensorium'); const serialConnect = require('../cli/serialConnect'); const sensorium = new Sensorium(); serialConnect(sensorium); const mcore = sensorium.create('Mcore'); const auriga = sensorium.create('Auriga'); const megapi = sensorium.create('Megapi'); const orion = sensorium.create('Orion'); describe('getDataTest:', function () { before(function (done) { setTimeout(function () { console.log("启动时间:4秒~~~OK!"); done(); }, 4000); }); drivenData.forEach(function (d) { it(d.caseDir + " : " + d.caseName, function (done) { if (d.caseSummary[0] == "single-readCmd:") { let sendOrder = eval(d.caseSummary[1]); //相应的接口发送的实际指令 let getSensorValue = d.caseSummary[2]; //相应的获取传感器值接口 let range = d.caseSummary[4].split('~'); sendOrder[getSensorValue]().then((result) => { console.log('sensorValue:', result); assert.isNumber(result); assert.isAtLeast(result, Number(range[0])); assert.isAtMost(result, Number(range[1])); done(); }).catch((e) => { console.log(e); }) } if (d.caseSummary[0] == "loop-readCmd:") { let sendOrder = eval(d.caseSummary[1]); //相应的接口发送的实际指令 let getSensorValue = d.caseSummary[2]; //相应的获取传感器值接口 let range = d.caseSummary[4].split('~'); let loopFunction = function () { return new Promise((resolve, reject) => { sendOrder[getSensorValue]().then((result) => { console.log('sensorValue:', result); assert.isNumber(result); assert.isAtLeast(result, Number(range[0])); assert.isAtMost(result, Number(range[1])); resolve(result); }).catch((e) => { console.log('error: ', e) reject(e) }) }) }; //使用await+async的方法实现重复获取(同步)传感器的值 let start = async function () { for (let i = 0; i < 255; i++) {//重复读取一个传感器的返回值255次 await loopFunction(); } done(); }; start(); //使用promise+map+reduce的方法实现重复获取(同步)传感器的值 // let loop = []; // for (let i = 0; i < 255; i++) { // console.log('push') // loop.push(loopFunction); // } // let promises = loop.map((arg, index) => { // return new Promise((resolve, reject) => { // resolve(arg); // }); // }); // promises.reduce(function (preChain, arg, index, array) { // console.log('preChain-------------------', index); // return preChain.then((run) => { // return run().then((res) => { // console.log(res) // if (2 * index - 1 === array.length) { // done(); // } else { // return array[2 * index - 1].then((run) => { // return run().then(() => { // console.log(res); // return array[2 * (index)]; // }) // }) // } // }) // }); // }) } }); }); });