2017-12-09 JavaScript实现ZLOGO子集: 测试用例
续前文JavaScript实现ZLOGO子集: 前进+转向. 在添加新功能之前, 先添加测试用例, 以应对日益复杂的代码.
选择使用QUnit编写运行测试用例. 暂时对比较复杂和I/O无关的部分进行测试.
一是代码分析部分: Antlr通过生成的分析器和定制的监听器, 对原始代码进行分析和生成指令序列的部分. 下面是对循环进行测试的一个用例:
QUnit.test( "分析_循环_前进1", function( assert ) {assert.deepEqual(分析("开始\n循环2次\n前进50\n到此为止\n结束\n").返回指令序列(),[{名称: 常量_指令名_前进, 参数: 50},{名称: 常量_指令名_前进, 参数: 50}],"循环2次通过!" );
});
"生成路径表"将指令序列转换成路点序列(经过的转折点), 其中一个测试用例如下:
QUnit.test( "生成路径表_前进_左转_前进", function( assert ) {assert.deepEqual(生成路径表([{名称: 常量_指令名_前进, 参数: 50},{名称: 常量_指令名_转向, 参数: 90},{名称: 常量_指令名_前进, 参数: 50}], 初始前进角度),[{起点: 路点0, 终点: 路点1, 长度: 50},{起点: 路点1, 终点: 路点2, 长度: 50}],"通过!" );
});
添加测试的过程中, 再次感受代码封装的重要性. 在测试目标接口中, DOM操作都需避免(比如document, window).
虽然已经添加了多层循环的代码分析部分测试用例, 但在实现时, 感觉需要语法树以便于支持更复杂的语法. 另外在现在的代码里, 已经开始需要拆分模块("定制监听器"比较杂乱).
下面需要调研语法树相关的JS库, 比如: ajaxorg/treehugger
另外, 发现TypeScript也可以利用Antlr: Creating ANTLR Applications in TypeScript - Dangl.Blog();
转载于:https://www.cnblogs.com/program-in-chinese/p/10481029.html
2017-12-09 JavaScript实现ZLOGO子集: 测试用例相关推荐
- 【2017.12.09】安卓巴士全球开发者论坛广州站 ——全面开启安卓洪荒之力
2017安卓巴士全球开发者论坛 --全面开启安卓洪荒之力 12月09日 · 广州站 主办方:安卓巴士(中国最大的安卓开发者社区http://www.apkbus.com) 现场有奖小活动预告 1.现场 ...
- JavaScript实现ZLOGO子集: 前进+转向
在前文中文编程语言之Z语言初尝试: ZLOGO 4与相关讨论后, 萌生了用JavaScript编写类似语言以便在线编程的想法. 于是使用 @TKT2016 (知乎账号)的ZLOGO语法设计, 在编程语 ...
- 2017-12-05 JavaScript实现ZLOGO子集: 前进+转向
在前文中文编程语言之Z语言初尝试: ZLOGO 4与相关讨论后, 萌生了用JavaScript编写类似语言以便在线编程的想法. 于是使用 @TKT2016 (知乎账号)的ZLOGO语法设计, 在编程语 ...
- 2017-12-05 JavaScript实现ZLOGO子集: 前进+转向 1
在前文中文编程语言之Z语言初尝试: ZLOGO 4与相关讨论后, 萌生了用JavaScript编写类似语言以便在线编程的想法. 于是使用 @TKT2016 (知乎账号)的ZLOGO语法设计, 在编程语 ...
- 2018-01-02 JavaScript实现ZLOGO: 用语法树实现多层循环...
照例先上演示弱效果图. 演示地址照旧: 代码如下: 开始循环4次循环4次前进50左转90度到此为止右转90度到此为止 结束 如上文JavaScript实现ZLOGO子集: 测试用例末尾所言, 此文用A ...
- 解密谷歌机器学习工程最佳实践——机器学习43条军规 翻译 2017年09月19日 10:54:58 98310 本文是对Rules of Machine Learning: Best Practice
解密谷歌机器学习工程最佳实践--机器学习43条军规 翻译 2017年09月19日 10:54:58 983 1 0 本文是对Rules of Machine Learning: Best Practi ...
- 华为发布企业服务云化转型战略 未来5年投资5亿美金建设服务能力(2017年09月06日)
华为发布企业服务云化转型战略 未来5年投资5亿美金建设服务能力 2017年09月06日 [中国,上海,2017年9月6日] 今日,在HUAWEI CONNECT 2017上,华为面向全球发布企业服务云 ...
- 2017/12/29
2019独角兽企业重金招聘Python工程师标准>>> 2017/12/29 Firday weather: light rain ! 1.需求: 写一个脚本实现如下功能: 输入一个 ...
- 乐视网CEO梁军:现在就是缺钱 正在重新学习做生意 2017年09月20日01:18 新京报 37 微博 微信 QQ空间 添加喜爱 乐视网CEO梁军。 新京报记者 吴江 摄乐视网CEO梁军。 新京
乐视网CEO梁军:现在就是缺钱 正在重新学习做生意 2017年09月20日01:18 新京报 37微博微信QQ空间添加喜爱 乐视网CEO梁军. 新京报记者 吴江 摄 乐视网(15.330, 0.00, ...
最新文章
- python元类简述
- Qt for Python Mac下使用 fbs 打包软件
- JAVA 文件监控 WatchService
- TypeScript里的interface扩展,多继承以及对应的JavaScript代码
- ContextLoaderListener介绍
- C语言 assert 函数 - C语言零基础入门教程
- 1.3编程基础之算术表达式与顺序执行 05 计算分数的浮点数值
- python:就喜欢看你看不惯我又干不掉我的样子
- C/C++笔试经典程序(二)
- host地址切换工具-SwitchHosts
- 【Linux系列文章】磁盘、进程
- 使用GDI/GDI+绘制到D3D9缓冲区的方法
- Java并发的一些总结(面试须知)
- 在线教育项目技术笔记1
- SMR磁盘学习8---Novel Address Mappings for Shingled Write Disks
- php ldap目录协议,PHP 通过LDAP协议,操作Windows Active Directory
- php邮箱类,php邮件类(PHPMailer)使用心得
- 看完这妹纸的日更作业,网友直呼:中国计算机界的神!
- 【毕业生】外包公司适合你么?
- ADAMS 文件导入的相关研究
热门文章
- linux驱动之ioctl
- 100条常用写作谚语(5)(6)(7)(8)
- linux 查看磁盘分区,文件系统,使用情况的命令和相关工具介绍,Linux 查看磁盘分区、文件系统、使用情况的命令和相关工具介绍...
- Vue3过渡动画实现
- socket.io跨域踩坑
- Chapter1-6_Speech_Recognition(RNN-T Training)
- LeetCode 1791. 找出星型图的中心节点(图出入度)
- 我们并没有觉得MapReduce速度慢,直到Spark出现
- LeetCode MySQL 1445. 苹果和桔子
- 程序员面试金典 - 面试题 10.05. 稀疏数组搜索(二分查找)