续前文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子集: 测试用例相关推荐

  1. 【2017.12.09】安卓巴士全球开发者论坛广州站 ——全面开启安卓洪荒之力

    2017安卓巴士全球开发者论坛 --全面开启安卓洪荒之力 12月09日 · 广州站 主办方:安卓巴士(中国最大的安卓开发者社区http://www.apkbus.com) 现场有奖小活动预告 1.现场 ...

  2. JavaScript实现ZLOGO子集: 前进+转向

    在前文中文编程语言之Z语言初尝试: ZLOGO 4与相关讨论后, 萌生了用JavaScript编写类似语言以便在线编程的想法. 于是使用 @TKT2016 (知乎账号)的ZLOGO语法设计, 在编程语 ...

  3. 2017-12-05 JavaScript实现ZLOGO子集: 前进+转向

    在前文中文编程语言之Z语言初尝试: ZLOGO 4与相关讨论后, 萌生了用JavaScript编写类似语言以便在线编程的想法. 于是使用 @TKT2016 (知乎账号)的ZLOGO语法设计, 在编程语 ...

  4. 2017-12-05 JavaScript实现ZLOGO子集: 前进+转向 1

    在前文中文编程语言之Z语言初尝试: ZLOGO 4与相关讨论后, 萌生了用JavaScript编写类似语言以便在线编程的想法. 于是使用 @TKT2016 (知乎账号)的ZLOGO语法设计, 在编程语 ...

  5. 2018-01-02 JavaScript实现ZLOGO: 用语法树实现多层循环...

    照例先上演示弱效果图. 演示地址照旧: 代码如下: 开始循环4次循环4次前进50左转90度到此为止右转90度到此为止 结束 如上文JavaScript实现ZLOGO子集: 测试用例末尾所言, 此文用A ...

  6. 解密谷歌机器学习工程最佳实践——机器学习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 ...

  7. 华为发布企业服务云化转型战略 未来5年投资5亿美金建设服务能力(2017年09月06日)

    华为发布企业服务云化转型战略 未来5年投资5亿美金建设服务能力 2017年09月06日 [中国,上海,2017年9月6日] 今日,在HUAWEI CONNECT 2017上,华为面向全球发布企业服务云 ...

  8. 2017/12/29

    2019独角兽企业重金招聘Python工程师标准>>> 2017/12/29 Firday weather: light rain ! 1.需求: 写一个脚本实现如下功能: 输入一个 ...

  9. 乐视网CEO梁军:现在就是缺钱 正在重新学习做生意 2017年09月20日01:18 新京报 37 微博 微信 QQ空间 添加喜爱 乐视网CEO梁军。 新京报记者 吴江 摄乐视网CEO梁军。 新京

    乐视网CEO梁军:现在就是缺钱 正在重新学习做生意 2017年09月20日01:18 新京报 37微博微信QQ空间添加喜爱 乐视网CEO梁军. 新京报记者 吴江 摄 乐视网(15.330, 0.00, ...

最新文章

  1. python元类简述
  2. Qt for Python Mac下使用 fbs 打包软件
  3. JAVA 文件监控 WatchService
  4. TypeScript里的interface扩展,多继承以及对应的JavaScript代码
  5. ContextLoaderListener介绍
  6. C语言 assert 函数 - C语言零基础入门教程
  7. 1.3编程基础之算术表达式与顺序执行 05 计算分数的浮点数值
  8. python:就喜欢看你看不惯我又干不掉我的样子
  9. C/C++笔试经典程序(二)
  10. host地址切换工具-SwitchHosts
  11. 【Linux系列文章】磁盘、进程
  12. 使用GDI/GDI+绘制到D3D9缓冲区的方法
  13. Java并发的一些总结(面试须知)
  14. 在线教育项目技术笔记1
  15. SMR磁盘学习8---Novel Address Mappings for Shingled Write Disks
  16. php ldap目录协议,PHP 通过LDAP协议,操作Windows Active Directory
  17. php邮箱类,php邮件类(PHPMailer)使用心得
  18. 看完这妹纸的日更作业,网友直呼:中国计算机界的神!
  19. 【毕业生】外包公司适合你么?
  20. ADAMS 文件导入的相关研究

热门文章

  1. linux驱动之ioctl
  2. 100条常用写作谚语(5)(6)(7)(8)
  3. linux 查看磁盘分区,文件系统,使用情况的命令和相关工具介绍,Linux 查看磁盘分区、文件系统、使用情况的命令和相关工具介绍...
  4. Vue3过渡动画实现
  5. socket.io跨域踩坑
  6. Chapter1-6_Speech_Recognition(RNN-T Training)
  7. LeetCode 1791. 找出星型图的中心节点(图出入度)
  8. 我们并没有觉得MapReduce速度慢,直到Spark出现
  9. LeetCode MySQL 1445. 苹果和桔子
  10. 程序员面试金典 - 面试题 10.05. 稀疏数组搜索(二分查找)