Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/persimmon-projects/persimmon.muscleassert
https://github.com/persimmon-projects/persimmon.muscleassert
assert fsharp unit-testing
Last synced: 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/persimmon-projects/persimmon.muscleassert
- Owner: persimmon-projects
- License: mit
- Created: 2016-05-16T17:58:48.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2022-03-09T18:14:41.000Z (almost 3 years ago)
- Last Synced: 2024-11-08T13:54:10.709Z (3 months ago)
- Topics: assert, fsharp, unit-testing
- Language: F#
- Size: 202 KB
- Stars: 4
- Watchers: 3
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Persimmon.MuscleAssert
[![NuGet Status](http://img.shields.io/nuget/v/Persimmon.MuscleAssert.svg?style=flat)](https://www.nuget.org/packages/Persimmon.MuscleAssert/)
## Examples
### Plain Persimmon test
code:
```fsharp
type PhoneNumber = {
CountryCode: string
AreaCode: string
LocalNumber: string
}type Contact = {
FirstName: string
LastName: string
MiddleName: string option
PhoneNumbers: Dictionary
}type PhoneBook = {
Name: string
Contacts: Contact list
}let example = test {
let walterPhones = Dictionary()
walterPhones.Add("Home", { CountryCode = "1"; AreaCode = "505"; LocalNumber = "316-7871" })
walterPhones.Add("Work", { CountryCode = "1"; AreaCode = "505"; LocalNumber = "456-3788" })
let walterWhite = {
FirstName = "Walter"
LastName = "White"
MiddleName = None
PhoneNumbers = walterPhones
}let jessePhones = Dictionary()
jessePhones.Add("Home", { CountryCode = "1"; AreaCode = "505"; LocalNumber = "234-4628" })
let jessePinkman = {
FirstName = "Jesse"
LastName = "Pinkman"
MiddleName = Some ""
PhoneNumbers = jessePhones
}let expected = {
Name = "Breaking Bad"
Contacts =
[
walterWhite
jessePinkman
]
}let actual = {
expected with
Contacts =
[
{ walterWhite with MiddleName = Some "Bruce" }
{ jessePinkman with MiddleName = Some "Hartwell" }
]
}do! assertEquals expected actual
}
```result:
```bash
Assertion Violated: example
1. Expect: {Name = "Breaking Bad";
Contacts =
[{FirstName = "Walter";
LastName = "White";
MiddleName = None;
PhoneNumbers =
seq
[[Home, Persimmon.MuscleAssert.Tests.AssertTest+Hoge+PhoneNumber];
[Work, Persimmon.MuscleAssert.Tests.AssertTest+Hoge+PhoneNumber]];};
{FirstName = "Jesse";
LastName = "Pinkman";
MiddleName = Some "";
PhoneNumbers =
seq [[Home, Persimmon.MuscleAssert.Tests.AssertTest+Hoge+PhoneNumber]];}];}
Actual: {Name = "Breaking Bad";
Contacts =
[{FirstName = "Walter";
LastName = "White";
MiddleName = Some "Bruce";
PhoneNumbers =
seq
[[Home, Persimmon.MuscleAssert.Tests.AssertTest+Hoge+PhoneNumber];
[Work, Persimmon.MuscleAssert.Tests.AssertTest+Hoge+PhoneNumber]];};
{FirstName = "Jesse";
LastName = "Pinkman";
MiddleName = Some "Hartwell";
PhoneNumbers =
seq [[Home, Persimmon.MuscleAssert.Tests.AssertTest+Hoge+PhoneNumber]];}];}
```### Using MuscleAssert
difference:
```diff
+ open Persimmon.MuscleAssert
+
```result:
```bash
Assertion Violated: example
1. .Contacts.[0].MiddleName
expected FSharpOption.None
actual FSharpOption.Some
.Contacts.[1].MiddleName.Value
expected
actual Hartwell@@ -0,0 +1,8 @@
+Hartwell
```