比较受歧视的工会

2023-12-30

我是 F# 的新手,正在尝试 FParsec。我会使用 FParsec 生成 AST。我想使用 FsUnit 围绕解析器的各个部分编写一些测试,以确保正确运行。

我在语法上遇到了一些麻烦(抱歉,确切的代码正在工作,我可以稍后发布一个具体的示例),那么如何准确地比较两个可区分的联合(一个是预期的,另一个是实际的结果)?有人可以提供一个使用 FsUnit(或 NUnit)的小代码示例吗?

一个歧视联盟的例子(非常简单)

type AST = 
    | Variable of string
    | Class of string
    | Number of int

正如 Brian 指出的,由于 F# 联合具有结构相等性,因此使用您喜欢的任何单元测试框架都很容易。

FsUnit 是构建在 NUnit 之上的 F# 特定库。我个人最喜欢的 F# 特定单元测试库是Unquote http://code.google.com/p/unquote/, ;),它与框架无关,可以与 NUnit、xUnit.net、MbUnit...甚至在 FSI 中很好地配合。您可能感兴趣this https://stackoverflow.com/questions/5667372/what-unit-testing-frameworks-are-available-for-f/5669263#5669263与 FsUnit 的比较。

那么,如何使用 NUnit + Unquote 来做到这一点呢?这是一个完整的工作示例:

module UnitTests

open NUnit.Framework
open Swensen.Unquote

type AST = 
    | Variable of string
    | Class of string
    | Number of int

let mockFParsec_parseVariable input = Variable(input)

[<Test>]
let ``test variable parse, passing example`` () =
    test <@ mockFParsec_parseVariable "x" = Variable("x") @>

[<Test>]
let ``test variable parse, failing example`` () =
    test <@ mockFParsec_parseVariable "y" = Variable("x") @>

然后使用TestDriven.NET运行测试,输出如下:

------ Test started: Assembly: xxx.exe ------

Test 'UnitTests.test variable parse, failing example' failed: 

UnitTests.mockFParsec_parseVariable "y" = Variable("x")
Variable "y" = Variable("x")
false
    C:\xxx\UnitTests.fs(19,0): at UnitTests.test variable parse, failing example()

1 passed, 1 failed, 0 skipped, took 0.80 seconds (NUnit 2.5.10).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

比较受歧视的工会 的相关文章

随机推荐

  • PHP 中变量名前的“At”符号:@$_POST

    我见过函数调用前面有一个 at 符号来关闭警告 今天我浏览了一些代码 发现了这一点 hn POST hn 放在这里有什么好处呢 The 是PHP中的错误抑制运算符 PHP支持一个错误控制 操作员 AT标志 什么时候 备用到php中的表达 可
  • Eclipse 调试:保持在当前项目的范围内

    在 Eclipse 中进行单步调试时 是否可以指示调试器仅遍历项目源中的步骤 我正在调试 Rails 应用程序 大部分调用都通过 Rails 的基础设施 例如 activerecord 进行传输 我对此不感兴趣 我希望步进调试器跳过这些文件
  • 如何让 Ansible 仅在一台主机上运行一项特定任务?

    该剧本如下所示 hosts all tasks name run on all hosts 1 shell something1 name run on all hosts 2 shell something2 name run on on
  • 设置 Sinatra 在子目录中运行

    现在我对 Sinatra Ruby Apache 还很陌生 但继承了一个 Sinatra 应用程序来部署 目前 Apache 设置为从文档根 httpdocs 运行 我需要在文件夹子目录下运行 ruby 应用程序 例如 httpdocs w
  • 如何使本地的mySQL数据库可以从不同的机器访问?

    我在 Windows 系统上安装了 mySQL 并使用 mySQL 查询浏览器进行连接 我正在提供培训 我希望人们能够连接到我的机器 SQL 数据库 我怎么做 目前它不允许连接 我需要修改哪些设置 第 1 步 检查 IP 连接 默认情况下
  • 如何将 python Reportlab 表定位在位置 10,100 并使用drawString

    我是一个Python爱好者和reportlab新手 我知道如何使用drawString将文本放置在页面上的特定位置 例如 c drawString 10 100 欢迎来到Reportlab 但我不知道如何放置一个表格 只有几行长 以便该表格
  • 当值可以是对象或空数组时反序列化 JSON

    我正在使用 VK API 有时服务器可以返回空数组而不是对象 例如 personal when it is empty or personal religion smoking 1 alcohol 4 when not empty 我正在使
  • 如何在 Swift 中的 UI 选项卡栏上应用渐变?

    我通过故事板构建了选项卡栏 并自定义颜色 我在应用程序委托中更改它 使用UITabBar appearance barTintColor Color 我有一个梯度方法是这样的 func setGradientBackground color
  • Gerrit - Gitlab 集成

    为了改进开发流程 我们组织决定在开发工作流程中引入 Gerrit 我是负责实施 Gerrit 服务器的人 互联网上提供的用户指南对于将 Gerrit 实施到我们现有的工作流程非常有帮助 我们使用 Jenkins 和 Sonar 作为非交互式
  • 具有客户端证书身份验证的.Net Core Web API

    我在 Net Core 2 1中开发了一个简单的WEB API服务 我正在尝试实现客户端证书身份验证 因此我只能向在其计算机上安装了特定证书的客户端授予对 API 的访问权限 客户端使用浏览器 Chrome Edge IE11 或 Fire
  • 从n中选择k

    我想选择k元素均匀地随机地从可能的n无需两次选择相同的数字 对此有两种简单的方法 列出所有内容n的可能性 随机播放它们 你不需要 洗牌所有n数字只是k其中通过执行第一个k费希尔 耶茨 Fisher Yates 的脚步 选择第一个k 这种方法
  • Mockito java.lang.Exception:当我在测试中使用内部类时,类应该是公共的

    我有以下测试 RunWith Enclosed class public class ProductTest RunWith MockitoJUnitRunner class Ignore public static abstract cl
  • 避免代码重复的最佳方法是定义比较运算符“<、<=、>、>=、==、!=”,但要考虑 NaN?

    我数学 x lt y相当于 x gt y 对于浮点运算来说也是如此 在多数情况下 但不总是 什么时候x or y是 NaN x lt y is not相当于 x gt y 因为比较NaN任何事物总会有回报false 但仍然 x lt y l
  • 动态修补(处理创建时传递的变量)有哪些替代方案?

    我听说有人将动态修补描述为一种黑客行为 或者在 Pd 的未来版本中存在破坏的风险 这是足够合理的 但这似乎意味着在构建抽象时还有其他选择 动态修补似乎对于实例化可变数量的对象和连接到可变数量的入口和出口 在创建时定义的数字 我个人不需要在事
  • 在自定义 Cocoapods 中使用故事板和图像资源

    我正在尝试使用 cocoa pod 模块化一个大型 iOS 项目 正在 Swift 中开发 这个想法是创建 子应用程序 其中包含可以集成到主项目中的故事板和资产 在这种情况下 我在使用故事板时遇到了麻烦 这个问题类似于 我认为 https
  • Mojarra Java EE 5/6 兼容性

    非常简单的问题 是否有人有关于 Mojarra JSF RI 与 Java EE 5 和 6 标准兼容性的 官方 信息的链接 我似乎找不到任何与此有关的信息 我们被 Java EE 5 应用程序服务器困住了 我们想知道可以使用哪个版本的 M
  • 从 Python 中使用 jar 运行 Java 程序

    我正在尝试使用 Python 中的 jar 运行 java 文件 我首先运行命令 java classpath Users blablalba jackson all 1 9 0 jar parseJason 它工作得很好 然后我编写了一个
  • 当我更改一行的值时,连续形式的 MS Access 组合框会更改所有行的值

    过去两个小时我一直在尝试解决这个问题 但没有成功 所以我希望你能帮助我解决这个问题 我有一个连续的表单 一次显示多行 我在表单中添加了一个组合框 显示一些可以从另一个表中选择的值 同时显示同一个表中的默认值 问题是 一旦我更改表单中一个组合
  • 如何使用 Erlang file:read_file_info 权限/模式信息?

    Erlang 文档为file read file info 1声明 文件权限是总和 和 其他位 可以设置 而不是灌输信心 而且 谷歌一直不是我的朋友 我希望采用返回的模式file read file info 1 e g 33188 在 L
  • 比较受歧视的工会

    我是 F 的新手 正在尝试 FParsec 我会使用 FParsec 生成 AST 我想使用 FsUnit 围绕解析器的各个部分编写一些测试 以确保正确运行 我在语法上遇到了一些麻烦 抱歉 确切的代码正在工作 我可以稍后发布一个具体的示例