Skip to content

Commit 13e1976

Browse files
committed
Merge branch 'master' into release/v1
# Conflicts: # ReleaseNotes.md
2 parents c200d42 + 26d5616 commit 13e1976

6 files changed

Lines changed: 240 additions & 67 deletions

File tree

README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ A core type
77
```
88
namespace AltCode.Test.Common
99
10-
type Match<'a> =
10+
type AssertionMatch<'a> =
1111
{
1212
Actual : 'a
1313
Expected : 'a
@@ -24,15 +24,15 @@ providing a F# and C#-friendly API for naming arguments
2424

2525
# For Expecto
2626

27-
Module `AltCode.Test.Expecto.AltExpect` which provides wrappers for `Expecto.Expect` with an appropriate `Match`-typed argument in place of actual and template expectation
27+
Module `AltCode.Test.Expecto.AltExpect` which provides wrappers for `Expecto.Expect` and `AltCode.Test.Expecto.AltFlipExpect` for `Expecto.Flip.Expect` with an appropriate `AssertionMatch`-typed argument in place of actual and template expectation
2828

2929
# For Xunit
3030

31-
Module `AltCode.Test.Xunit.AltAssert` which provides wrappers for `Xunit.Assert` with an appropriate `Match`-typed argument in place of actual and template expectation
31+
Class `AltCode.Test.Xunit.AltAssert` which provides wrappers for `Xunit.Assert` with an appropriate `AssertionMatch`-typed argument in place of actual and template expectation
3232

3333
# For NUnit
3434

35-
Module `AltCode.Test.NUnit.AltAssert` which provides wrappers for `NUnit.Framework.Assert` with an appropriate `Match`-typed argument in place of actual and template expectation; also
35+
Classes `AltCode.Test.NUnit.Alt*Assert` which provide wrappers for the corresponding `NUnit.Framework.*Assert` for `*` = `''`, `'Directory'`, `'File'` and `'String'` with an appropriate `AssertionMatch`-typed argument in place of actual and template expectation; also
3636
```
3737
type Constraint<'a> =
3838
{
@@ -70,7 +70,7 @@ Then `dotnet fake run ./Build/setup.fsx` to do the rest of the set-up.
7070

7171
### Normal builds
7272

73-
Running `dotnet fake run ./Build/build.fsx` performs a full build/test/package process.
73+
Running `dotnet fake run ./Build/build.fsx` performs a full build/package process.
7474

7575
Use `dotnet fake run ./Build/build.fsx --target <targetname>` to run to a specific target.
7676

ReleaseNotes.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@ Q. Never mind the fluff -- how do I get started?
22

33
A. Start with the README : https://github.com/SteveGilham/altcode.test/blob/master/README.md
44

5+
# 1.0.6
6+
* [BREAKING] `Match` -> `AssertionMatch`
7+
* `altcode.test.expecto` -- add `Expecto.Flip` support
8+
* `altcode.test.nunit` -- add `DirectoryAssert`, `FileAssert` and `StringAssert` support
9+
* `altcode.test.xunit` -- add `AltAssert.Same`
10+
511
# 1.0.4
612
* [NEW PACKAGE] `altcode.test.expecto` -- named argument helper for Expecto >= 8.12.0
713
* [NEW PACKAGE] `altcode.test.nunit` -- named argument helper for NUnit >= 3.12.0

altcode.test/altcode.test.common/Common.fs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
namespace AltCode.Test.Common
22

3-
type Match<'a> =
3+
type AssertionMatch<'a> =
44
{
55
Actual : 'a
66
Expected : 'a

altcode.test/altcode.test.expecto/Expecto.fs

Lines changed: 53 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,41 +8,76 @@ open Expecto
88

99
[<RequireQualifiedAccess>]
1010
module AltExpect =
11-
let containsAll (x : Match<IEnumerable<'a>>) message =
11+
let containsAll (x : AssertionMatch<IEnumerable<'a>>) message =
1212
Expect.containsAll x.Actual x.Expected message
13-
let equal (x : Match<'a>) message =
13+
let equal (x : AssertionMatch<'a>) message =
1414
Expect.equal x.Actual x.Expected message
15-
let floatClose accuracy (x : Match<double>) message =
15+
let floatClose accuracy (x : AssertionMatch<double>) message =
1616
Expect.floatClose accuracy x.Actual x.Expected message
17-
let floatGreaterThanOrClose accuracy (x : Match<double>) message =
17+
let floatGreaterThanOrClose accuracy (x : AssertionMatch<double>) message =
1818
Expect.floatGreaterThanOrClose accuracy x.Actual x.Expected message
19-
let floatLessThanOrClose accuracy (x : Match<double>) message =
19+
let floatLessThanOrClose accuracy (x : AssertionMatch<double>) message =
2020
Expect.floatLessThanOrClose accuracy x.Actual x.Expected message
21-
let isMatch (x : Match<string>) message =
21+
let isMatch (x : AssertionMatch<string>) message =
2222
Expect.isMatch x.Actual x.Expected message
23-
let isMatchGroups (x : Match<string>) matchesOperator message =
23+
let isMatchGroups (x : AssertionMatch<string>) matchesOperator message =
2424
Expect.isMatchGroups x.Actual x.Expected matchesOperator message
25-
let isNotMatch (x : Match<string>) message =
25+
let isNotMatch (x : AssertionMatch<string>) message =
2626
Expect.isNotMatch x.Actual x.Expected message
27-
let notEqual (x : Match<'a>) message =
27+
let notEqual (x : AssertionMatch<'a>) message =
2828
Expect.notEqual x.Actual x.Expected message
29-
let sequenceContainsOrder (x : Match<IEnumerable<'a>>) message =
29+
let sequenceContainsOrder (x : AssertionMatch<IEnumerable<'a>>) message =
3030
Expect.sequenceContainsOrder x.Actual x.Expected message
31-
let sequenceEqual (x : Match<IEnumerable<'a>>) message =
31+
let sequenceEqual (x : AssertionMatch<IEnumerable<'a>>) message =
3232
Expect.sequenceEqual x.Actual x.Expected message
33-
let sequenceStarts (x : Match<IEnumerable<'a>>) message =
33+
let sequenceStarts (x : AssertionMatch<IEnumerable<'a>>) message =
3434
Expect.sequenceStarts x.Actual x.Expected message
35-
let streamsEqual (x : Match<Stream>) message =
35+
let streamsEqual (x : AssertionMatch<Stream>) message =
3636
Expect.streamsEqual x.Actual x.Expected message
37-
let stringContains (x : Match<string>) message =
37+
let stringContains (x : AssertionMatch<string>) message =
3838
Expect.stringContains x.Actual x.Expected message
39-
let stringEnds (x : Match<string>) message =
39+
let stringEnds (x : AssertionMatch<string>) message =
4040
Expect.stringEnds x.Actual x.Expected message
41-
let stringStarts (x : Match<IEnumerable<char>>) message =
41+
let stringStarts (x : AssertionMatch<IEnumerable<char>>) message =
4242
Expect.stringStarts x.Actual x.Expected message
4343
[<Obsolete("Please use the more general AltExpect.floatClose")>]
44-
let floatEqual (x : Match<double>) epsilon message =
44+
let floatEqual (x : AssertionMatch<double>) epsilon message =
4545
let epsilon2 = match epsilon with
4646
| Some d -> d
4747
| None -> 0.001
48-
Expect.floatClose {absolute = epsilon2; relative = 0.0} x.Actual x.Expected message
48+
Expect.floatClose {absolute = epsilon2; relative = 0.0} x.Actual x.Expected message
49+
50+
[<RequireQualifiedAccess>]
51+
module AltFlipExpect =
52+
let equal message (x : AssertionMatch<'a>) =
53+
Expecto.Flip.Expect.equal message x.Expected x.Actual
54+
let floatClose message accuracy (x : AssertionMatch<double>) =
55+
Expecto.Flip.Expect.floatClose message accuracy x.Expected x.Actual
56+
let floatGreaterThanOrClose message accuracy (x : AssertionMatch<double>) =
57+
Expecto.Flip.Expect.floatGreaterThanOrClose message accuracy x.Expected x.Actual
58+
let floatLessThanOrClose message accuracy (x : AssertionMatch<double>) =
59+
Expecto.Flip.Expect.floatLessThanOrClose message accuracy x.Expected x.Actual
60+
let isMatch message (x : AssertionMatch<string>) =
61+
Expecto.Flip.Expect.isMatch message x.Expected x.Actual
62+
let isMatchGroups message matchesOperator (x : AssertionMatch<string>) =
63+
Expecto.Flip.Expect.isMatchGroups message matchesOperator x.Expected x.Actual
64+
let isNotMatch message (x : AssertionMatch<string>) =
65+
Expecto.Flip.Expect.isNotMatch message x.Expected x.Actual
66+
let notEqual message (x : AssertionMatch<'a>) =
67+
Expecto.Flip.Expect.notEqual message x.Expected x.Actual
68+
let sequenceContainsOrder message (x : AssertionMatch<IEnumerable<'a>>) =
69+
Expecto.Flip.Expect.sequenceContainsOrder message x.Expected x.Actual
70+
let sequenceEqual message (x : AssertionMatch<IEnumerable<'a>>) =
71+
Expecto.Flip.Expect.sequenceEqual message x.Expected x.Actual
72+
let sequenceStarts message (x : AssertionMatch<IEnumerable<'a>>) =
73+
Expecto.Flip.Expect.sequenceStarts message x.Expected x.Actual
74+
let streamsEqual message (x : AssertionMatch<Stream>) =
75+
Expecto.Flip.Expect.streamsEqual message x.Expected x.Actual
76+
let stringContains message (x : AssertionMatch<string>) =
77+
Expecto.Flip.Expect.stringContains message x.Expected x.Actual
78+
let stringEnds message (x : AssertionMatch<string>) =
79+
Expecto.Flip.Expect.stringEnds message x.Expected x.Actual
80+
let stringStarts message (x : AssertionMatch<IEnumerable<char>>) =
81+
Expecto.Flip.Expect.stringStarts message x.Expected x.Actual
82+
83+
//

altcode.test/altcode.test.nunit/NUnit.fs

Lines changed: 143 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
namespace AltCode.Test.Nunit
22

33
open System
4+
open System.Collections
5+
open System.IO
46
open AltCode.Test.Common
57
open NUnit.Framework
68

@@ -25,27 +27,155 @@ type AltAssert =
2527
Assert.That(x.Actual, x.Constraint, message, args)
2628
static member That(x: Constraint<'a>, getExceptionMessage) =
2729
Assert.That(x.Actual, x.Constraint, getExceptionMessage)
28-
static member AreEqual(x : Match<double>, delta, message, args) =
30+
static member AreEqual(x : AssertionMatch<double>, delta, message, args) =
2931
Assert.AreEqual(x.Expected, x.Actual, delta, message, args)
30-
static member AreEqual(x : Match<double>, delta) =
32+
static member AreEqual(x : AssertionMatch<double>, delta) =
3133
Assert.AreEqual(x.Expected, x.Actual, delta)
32-
static member AreEqual(x : Match<Nullable<double>>, delta, message, args) =
34+
static member AreEqual(x : AssertionMatch<Nullable<double>>, delta, message, args) =
35+
if not x.Expected.HasValue then ArgumentNullException "Expected" |> raise
3336
Assert.AreEqual(x.Expected.Value, x.Actual, delta, message, args)
34-
static member AreEqual(x : Match<Nullable<double>>, delta) =
37+
static member AreEqual(x : AssertionMatch<Nullable<double>>, delta) =
38+
if not x.Expected.HasValue then ArgumentNullException "Expected" |> raise
3539
Assert.AreEqual(x.Expected.Value, x.Actual, delta)
36-
static member AreEqual(x : Match<'a>, message, args) =
40+
static member AreEqual(x : AssertionMatch<'a>, message, args) =
3741
Assert.AreEqual(x.Expected, x.Actual, message, args)
38-
static member AreEqual(x : Match<'a>) =
42+
static member AreEqual(x : AssertionMatch<'a>) =
3943
Assert.AreEqual(x.Expected, x.Actual)
40-
static member AreNotEqual(x : Match<'a>, message, args) =
44+
static member AreNotEqual(x : AssertionMatch<'a>, message, args) =
4145
Assert.AreNotEqual(x.Expected, x.Actual, message, args)
42-
static member AreNotEqual(x : Match<'a>) =
46+
static member AreNotEqual(x : AssertionMatch<'a>) =
4347
Assert.AreNotEqual(x.Expected, x.Actual)
44-
static member AreSame(x : Match<'a>, message, args) =
48+
static member AreSame(x : AssertionMatch<'a>, message, args) =
4549
Assert.AreSame(x.Expected, x.Actual, message, args)
46-
static member AreSame(x : Match<'a>) =
50+
static member AreSame(x : AssertionMatch<'a>) =
4751
Assert.AreSame(x.Expected, x.Actual)
48-
static member AreNotSame(x : Match<'a>, message, args) =
52+
static member AreNotSame(x : AssertionMatch<'a>, message, args) =
4953
Assert.AreNotSame(x.Expected, x.Actual, message, args)
50-
static member AreNotSame(x : Match<'a>) =
51-
Assert.AreNotSame(x.Expected, x.Actual)
54+
static member AreNotSame(x : AssertionMatch<'a>) =
55+
Assert.AreNotSame(x.Expected, x.Actual)
56+
57+
[<AbstractClass; Sealed>]
58+
type AltCollectionAssert =
59+
static member AreEqual<'a when 'a :> IEnumerable>(x : AssertionMatch<'a>) =
60+
CollectionAssert.AreEqual(x.Expected, x.Actual)
61+
static member AreEqual<'a when 'a :> IEnumerable>(x : AssertionMatch<'a>, comparer) =
62+
CollectionAssert.AreEqual(x.Expected, x.Actual, comparer)
63+
static member AreEqual<'a when 'a :> IEnumerable>(x : AssertionMatch<'a>, message, args) =
64+
CollectionAssert.AreEqual(x.Expected, x.Actual, message, args)
65+
static member AreEqual<'a when 'a :> IEnumerable>(x : AssertionMatch<'a>, comparer, message, args) =
66+
CollectionAssert.AreEqual(x.Expected, x.Actual, comparer, message, args)
67+
static member AreEquivalent<'a when 'a :> IEnumerable>(x : AssertionMatch<'a>) =
68+
CollectionAssert.AreEquivalent(x.Expected, x.Actual)
69+
static member AreEquivalent<'a when 'a :> IEnumerable>(x : AssertionMatch<'a>, message, args) =
70+
CollectionAssert.AreEquivalent(x.Expected, x.Actual, message, args)
71+
static member AreNotEqual<'a when 'a :> IEnumerable>(x : AssertionMatch<'a>) =
72+
CollectionAssert.AreNotEqual(x.Expected, x.Actual)
73+
static member AreNotEqual<'a when 'a :> IEnumerable>(x : AssertionMatch<'a>, comparer) =
74+
CollectionAssert.AreNotEqual(x.Expected, x.Actual, comparer)
75+
static member AreNotEqual<'a when 'a :> IEnumerable>(x : AssertionMatch<'a>, message, args) =
76+
CollectionAssert.AreNotEqual(x.Expected, x.Actual, message, args)
77+
static member AreNotEqual<'a when 'a :> IEnumerable>(x : AssertionMatch<'a>, comparer, message, args) =
78+
CollectionAssert.AreNotEqual(x.Expected, x.Actual, comparer, message, args)
79+
static member AreNotEquivalent<'a when 'a :> IEnumerable>(x : AssertionMatch<'a>) =
80+
CollectionAssert.AreNotEquivalent(x.Expected, x.Actual)
81+
static member AreNotEquivalent<'a when 'a :> IEnumerable>(x : AssertionMatch<'a>, message, args) =
82+
CollectionAssert.AreNotEquivalent(x.Expected, x.Actual, message, args)
83+
static member IsNotSubsetOf<'a when 'a :> IEnumerable> (x : AssertionMatch<'a>) =
84+
CollectionAssert.IsNotSubsetOf(x.Actual, x.Expected)
85+
static member IsNotSubsetOf<'a when 'a :> IEnumerable> (x : AssertionMatch<'a>, message, args) =
86+
CollectionAssert.IsNotSubsetOf(x.Actual, x.Expected, message, args)
87+
static member IsNotSupersetOf<'a when 'a :> IEnumerable> (x : AssertionMatch<'a>) =
88+
CollectionAssert.IsNotSupersetOf(x.Actual, x.Expected)
89+
static member IsNotSupersetOf<'a when 'a :> IEnumerable> (x : AssertionMatch<'a>, message, args) =
90+
CollectionAssert.IsNotSupersetOf(x.Actual, x.Expected, message, args)
91+
static member IsSubsetOf<'a when 'a :> IEnumerable> (x : AssertionMatch<'a>) =
92+
CollectionAssert.IsSubsetOf(x.Actual, x.Expected)
93+
static member IsSubsetOf<'a when 'a :> IEnumerable> (x : AssertionMatch<'a>, message, args) =
94+
CollectionAssert.IsSubsetOf(x.Actual, x.Expected, message, args)
95+
static member IsSupersetOf<'a when 'a :> IEnumerable> (x : AssertionMatch<'a>) =
96+
CollectionAssert.IsSupersetOf(x.Actual, x.Expected)
97+
static member IsSupersetOf<'a when 'a :> IEnumerable> (x : AssertionMatch<'a>, message, args) =
98+
CollectionAssert.IsSupersetOf(x.Actual, x.Expected, message, args)
99+
100+
[<AbstractClass; Sealed>]
101+
type AltDirectoryAssert =
102+
static member AreEqual(x : AssertionMatch<DirectoryInfo>) =
103+
DirectoryAssert.AreEqual(x.Expected, x.Actual)
104+
static member AreEqual(x : AssertionMatch<DirectoryInfo>, message, args) =
105+
DirectoryAssert.AreEqual(x.Expected, x.Actual, message, args)
106+
static member AreNotEqual(x : AssertionMatch<DirectoryInfo>) =
107+
DirectoryAssert.AreNotEqual(x.Expected, x.Actual)
108+
static member AreNotEqual(x : AssertionMatch<DirectoryInfo>, message, args) =
109+
DirectoryAssert.AreNotEqual(x.Expected, x.Actual, message, args)
110+
111+
[<AbstractClass; Sealed>]
112+
type AltFileAssert =
113+
static member AreEqual(x : AssertionMatch<FileInfo>) =
114+
FileAssert.AreEqual(x.Expected, x.Actual)
115+
static member AreEqual(x : AssertionMatch<FileInfo>, message, args) =
116+
FileAssert.AreEqual(x.Expected, x.Actual, message, args)
117+
static member AreEqual(x : AssertionMatch<Stream>) =
118+
FileAssert.AreEqual(x.Expected, x.Actual)
119+
static member AreEqual(x : AssertionMatch<Stream>, message, args) =
120+
FileAssert.AreEqual(x.Expected, x.Actual, message, args)
121+
static member AreEqual(x : AssertionMatch<String>) =
122+
FileAssert.AreEqual(x.Expected, x.Actual)
123+
static member AreEqual(x : AssertionMatch<String>, message, args) =
124+
FileAssert.AreEqual(x.Expected, x.Actual, message, args)
125+
static member AreNotEqual(x : AssertionMatch<FileInfo>) =
126+
FileAssert.AreNotEqual(x.Expected, x.Actual)
127+
static member AreNotEqual(x : AssertionMatch<FileInfo>, message, args) =
128+
FileAssert.AreNotEqual(x.Expected, x.Actual, message, args)
129+
static member AreNotEqual(x : AssertionMatch<Stream>) =
130+
FileAssert.AreNotEqual(x.Expected, x.Actual)
131+
static member AreNotEqual(x : AssertionMatch<Stream>, message, args) =
132+
FileAssert.AreNotEqual(x.Expected, x.Actual, message, args)
133+
static member AreNotEqual(x : AssertionMatch<String>) =
134+
FileAssert.AreNotEqual(x.Expected, x.Actual)
135+
static member AreNotEqual(x : AssertionMatch<String>, message, args) =
136+
FileAssert.AreNotEqual(x.Expected, x.Actual, message, args)
137+
138+
[<AbstractClass; Sealed>]
139+
type AltStringAssert =
140+
static member AreEqualIgnoringCase(x : AssertionMatch<String>) =
141+
StringAssert.AreEqualIgnoringCase(x.Expected, x.Actual)
142+
static member AreEqualIgnoringCase(x : AssertionMatch<String>, message, args) =
143+
StringAssert.AreEqualIgnoringCase(x.Expected, x.Actual, message, args)
144+
static member AreNotEqualIgnoringCase(x : AssertionMatch<String>) =
145+
StringAssert.AreNotEqualIgnoringCase(x.Expected, x.Actual)
146+
static member AreNotEqualIgnoringCase(x : AssertionMatch<String>, message, args) =
147+
StringAssert.AreNotEqualIgnoringCase(x.Expected, x.Actual, message, args)
148+
static member Contains(x : AssertionMatch<String>) =
149+
StringAssert.Contains(x.Expected, x.Actual)
150+
static member Contains(x : AssertionMatch<String>, message, args) =
151+
StringAssert.Contains(x.Expected, x.Actual, message, args)
152+
static member DoesNotContain(x : AssertionMatch<String>) =
153+
StringAssert.DoesNotContain(x.Expected, x.Actual)
154+
static member DoesNotContain(x : AssertionMatch<String>, message, args) =
155+
StringAssert.DoesNotContain(x.Expected, x.Actual, message, args)
156+
static member DoesNotEndWith(x : AssertionMatch<String>) =
157+
StringAssert.DoesNotEndWith(x.Expected, x.Actual)
158+
static member DoesNotEndWith(x : AssertionMatch<String>, message, args) =
159+
StringAssert.DoesNotEndWith(x.Expected, x.Actual, message, args)
160+
static member DoesNotMatch(x : AssertionMatch<String>) =
161+
StringAssert.DoesNotMatch(x.Expected, x.Actual)
162+
static member DoesNotMatch(x : AssertionMatch<String>, message, args) =
163+
StringAssert.DoesNotMatch(x.Expected, x.Actual, message, args)
164+
static member DoesNotStartWith(x : AssertionMatch<String>) =
165+
StringAssert.DoesNotStartWith(x.Expected, x.Actual)
166+
static member DoesNotStartWith(x : AssertionMatch<String>, message, args) =
167+
StringAssert.DoesNotStartWith(x.Expected, x.Actual, message, args)
168+
static member EndsWith(x : AssertionMatch<String>) =
169+
StringAssert.EndsWith(x.Expected, x.Actual)
170+
static member EndsWith(x : AssertionMatch<String>, message, args) =
171+
StringAssert.EndsWith(x.Expected, x.Actual, message, args)
172+
static member IsMatch(x : AssertionMatch<String>) =
173+
StringAssert.IsMatch(x.Expected, x.Actual)
174+
static member IsMatch(x : AssertionMatch<String>, message, args) =
175+
StringAssert.IsMatch(x.Expected, x.Actual, message, args)
176+
static member StartsWith(x : AssertionMatch<String>) =
177+
StringAssert.StartsWith(x.Expected, x.Actual)
178+
static member StartsWith(x : AssertionMatch<String>, message, args) =
179+
StringAssert.StartsWith(x.Expected, x.Actual, message, args)
180+
181+
//

0 commit comments

Comments
 (0)