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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/484034.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络(二十七)-IPv4

一.IP地址 1.1 分类的IP地址 IP地址::{<网络号>,<主机号>} 32位&#xff1a;前八位为网络号&#xff0c;后面的为主机号------>点分十进制表示 路由器也有多个IP地址&#xff1b; 中间的三个组成一个无编号网络(无名网)&#xff1b;整个网络具有6个逻辑上的…

北京“十四五”高精尖产业规划:到2025年集成电路产业实现营业收入3千亿元...

来源&#xff1a;北京物联网智能技术应用协会近日&#xff0c;《北京市“十四五”时期高精尖产业发展规划》&#xff08;以下简称《规划》&#xff09;印发。2020年&#xff0c;北京建设国内规模最大的12英寸集成电路生产线、8英寸集成电路国产装备应用示范线。国家级专精特新“…

FTP协议、电子邮件系统、Telnet远程控制

一、FTP协议 FTP定义 文件传输协议&#xff08;File Transfer Protocol&#xff09;用于因特网文件传输&#xff08;RFC 959&#xff09; FTP特性 使用客户端/服务器模式使用TCP提供可靠的传输FTP属于维护状态的协议FTP使用两条TCP连接完成数据传输 FTP的两条连接 数据连…

manjaro 安装tensorflow 【CPU版本】 环境

1 manjaro 安装anaconda package manager 安装 Anaconda 2 anaconda 设置环境 新建环境 root用户登录 conda create –n tensorflow-python3.7 python3.7 3 激活环境 source activate tensorflow-python3.7 4 安装 tensorflow 采用豆瓣进行加速下载 pip install tensorfow –…

平衡二叉查找树

红黑树-高级的二叉查找树 平衡树和非平衡树红黑树特征&#xff1a;结点都有颜色&#xff0c;插入和删除结点时要遵循红黑规则&#xff1b;红黑规则 每一个结点不是红色就是黑色&#xff1b;跟总是黑色的&#xff1b;如果结点时红色的&#xff0c;则它的子节点必须是黑色的&…

游戏的「隐藏身份」:AI与现实世界的「王牌训练师」

来源&#xff1a;雷锋网虚拟游戏对人工智能的物理性优势已经开始显现。「注&#xff1a;文章来自国际电信联盟&#xff08;ITU&#xff09;」当谈到新兴技术在改善世界各地人们生活的潜力时&#xff0c;你首先想到的可能不是电子游戏。然而&#xff0c;虚拟游戏可以在训练人工智…

Centos jdk

https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 下载对应平台的jdk centos为jdk-8u201-linux-x64.tar.gz 服务器建立文件夹命名为jdk 把下载的jdk安装包传上去 tar zxvf jdk-8u201-linux-x64.tar.gz 解压缩 vim /etc/profile 在最下…

网页开发部署-开发工具MyEclips+Tomcat+mysql

一.相关软件 1.1 安装好MyEclipse后还需要进行如下配置。 Java JDKTomcatmysql https://pan.baidu.com/s/1GAV9TJhkZI8wiMpTteJi_w 提取码&#xff1a;wj32 1.2 Java JDK安装及配置&#xff0c;自定义安装&#xff0c;记住安装路径。 配置: 计算机------>属性------>高…

Hadoop的组成

一、Hadoop 1.x 和 2.x 的区别 二、HDFS架构 1&#xff09;NameNode&#xff08;nn&#xff09;&#xff1a;存储文件的元数据&#xff0c;如文件名&#xff0c;文件目录结构&#xff0c;文件属性&#xff08;生成时间、副本数、文件权限&#xff09;&#xff0c;以及每个文件…

深度学习与工业互联网安全:应用与挑战

来源&#xff1a;中国工程院院刊一、前言工业互联网是新一代信息技术与制造业深度融合的新兴工业生态与应用模式&#xff0c;通过“人、机、物”的泛在可靠互联&#xff0c;连接生产全要素、全产业链、全价值链&#xff0c;推动制造业生产方式和企业形态变革。工业互联网安全是…

Oracle 学习(1)

Oracle简介 Oracle是殷墟&#xff08;yīn Xu&#xff09;出土的甲骨文&#xff08;oracle bone inscriptions&#xff09;的英文翻译的第一个单词&#xff0c;在英语里是“神谕”的意思。Oracle公司成立于1977年&#xff0c;总部位于美国加州&#xff0c;是世界领先的信息管…

未来教育 · 软件破解

1、点击右侧链接&#xff0c;下载百度网盘 未来教育压缩包 [未来教育(提取码&#xff1a;hwx8)] 2、解压压缩包&#xff0c;安装软件 计算机等级考试模拟软件.exe (安装前务必打开网络)。 3、安装完成后&#xff0c;点击添加课程&#xff0c;选择自己需要的课程等级&#xff0…

网络攻防技术

&#xff11;.网络攻防 2.DDos具体攻击过程&#xff1a;拒绝服务攻击&#xff1b; 3.防护体系 防火墙:是位于两个(或多个)网络间&#xff0c;实施网间访问控制的一组组件的集合&#xff1b;IDS/IPS&#xff1a;VDS/VPS: 网络病毒检测系统VDS 是用于实时监测网络环境中病毒疫…

契约测试:解决微服务测试的问题

为什么是契约测试契约测试&#xff08;ContractTest&#xff09;第一次看到我是在Martin Fowler的文章里。&#xff08;原文在这里感兴趣的可以去看看https://martinfowler.com/bliki/ContractTest.html&#xff09; 在他的这篇文章了&#xff0c;首先说了一下TestDouble的劣势…

科普:不要对移动机器人有误解

来源&#xff1a;Allians联汇智造 作者&#xff1a;CSDN博主一、移动机器人介绍区别于AGV&#xff08;AutomaticGuided Vehicle&#xff0c;自动导引车&#xff0c;指装备有电磁或光学等自动引导设备&#xff0c;能按规定路径行走的自动运输车&#xff09;等自动化运输车&#…

Windows终止进程

进程终止的4种方法&#xff1a; 主线程从入口函数返回&#xff1b;进程中有个 线程调用ExitProcess函数&#xff1b;进程中所有线程结束&#xff1b;其他进程中的线程调用了TerminateProcess函数。 在此&#xff0c;通过TerminateProcess函数来终止一个个其他进程&#xff0c;我…

Linux命令整理 —— 目录结构

二 、vi 和 vim 编辑器 【写在前面】 云计算与分布式这门课程的实验都是在Linux下完成的&#xff0c;虽然之前也一直也学习过Linux&#xff0c;但是一直没有系统的过一遍。这周花了两天的时间看完了尚硅谷的Linux教程&#xff0c;在这里记录一下学习过程&#xff0c;也方便自己…

人工智能-机器学习之Selenium(chrome驱动,火狐驱动)

selenium是一个用于web应用程序测试的工具&#xff0c;Selenium测试直接运行在浏览器中&#xff0c;就像真正的用户在操作一样。支持的浏览器包括IE、Mozilla Firefox、Mozilla Suite等。这个工具的主要功能包括&#xff1a;测试与浏览器的兼容性——测试你的应用程序看是否能够…

这应该是史上最强的物理学科普(雄文)

图文来源&#xff1a;微信公众号&#xff1a;财经小报告本文素材主要摘录自加来道雄的《Hypersapce》和丘成桐的《The Shape of Inner Space》。作者希望凭籍本文&#xff0c;回顾一下两百年来的科学史&#xff0c;看看那些代表着人类最高心智的数学家、物理学家们前仆后继探究…