Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
29f9d7a
added more f# tests
licon4812 May 21, 2025
4a44c66
Update Tests.fs
licon4812 May 21, 2025
b440fb2
Added CustomSkipAttribute to F# Example Test Project
licon4812 May 21, 2025
70cc7eb
reordered tests
licon4812 May 21, 2025
bc1a66d
Update Tests.fs
licon4812 May 21, 2025
487b66f
Updated FSharp Testing namespace
licon4812 May 21, 2025
141dbc6
Update Tests.fs
licon4812 May 21, 2025
880a6a6
Update Tests.fs
licon4812 May 21, 2025
1b4e6cb
Merge branch 'main' into f#-tests
licon4812 May 21, 2025
6667988
Merge remote-tracking branch 'upstream/main' into f#-tests
licon4812 May 21, 2025
0b35603
Update Tests.fs
licon4812 May 21, 2025
6e84232
Update Tests.fs
licon4812 May 21, 2025
ba26b75
Merge branch 'main' into f#-tests
licon4812 May 22, 2025
0def8b3
Merge branch 'main' into f#-tests
licon4812 May 22, 2025
d2d3f74
Added some more tests.
licon4812 May 22, 2025
a5687fb
more tests
licon4812 May 22, 2025
f99c22d
more tests
licon4812 May 22, 2025
5d2c17a
more tests
licon4812 May 22, 2025
d07b976
more tests
licon4812 May 22, 2025
6621332
more tests
licon4812 May 22, 2025
243842f
added fs file references to fsproj in TUnit.TestProject.FSharp.fsproj
licon4812 May 22, 2025
d1c62f0
Update DependencyInjectionClassConstructor.fs
licon4812 May 22, 2025
2ece1e0
Refactor UniqueBuilderContextsOnEnumerableDataGeneratorTests for clar…
licon4812 May 22, 2025
564b489
reorganised some tests in f# test project
licon4812 May 22, 2025
e029045
fixed some f# tests
licon4812 May 22, 2025
3d582e1
more tests
licon4812 May 23, 2025
d058616
small fixes
licon4812 May 23, 2025
cfcefe6
temp fix in F# tests project
licon4812 May 23, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions TUnit.TestProject.FSharp/AfterTestAttributeTests.fs
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
namespace TUnit.TestProject.FSharp

open System
open System.IO
open System.Threading.Tasks
open TUnit.Assertions
open TUnit.Assertions.Extensions
open TUnit.Core.Interfaces
open TUnit.Core
open TUnit.Assertions.FSharp.Operations


//type WriteFileAfterTestAttribute() =
// inherit System.Attribute()
// interface ITestEndEventReceiver with
// member _.OnTestEnd(testContext: AfterTestContext) =
// task {
// Console.WriteLine("Writing file inside WriteFileAfterTestAttribute!")
// do! FilePolyfill.WriteAllTextAsync(filename, "Foo!")
// } :> Task
// member _.Order = 0

//type AfterTestAttributeTests() =
// static let filename = sprintf "%s-AfterTestAttributeTests.txt" (Guid.NewGuid().ToString("N"))

// [<Test>]
// [<WriteFileAfterTest>]
// member _.Test() =
// async{
// do! check(Assert.That<bool>(File.Exists(filename)).IsFalse())
// }
33 changes: 33 additions & 0 deletions TUnit.TestProject.FSharp/ArgumentWithImplicitConverterTests.fs
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
namespace TUnit.TestProject.FSharp

open System
open TUnit.Core

// F# equivalents for ArgumentWithImplicitConverterTests.cs

type ExplicitInteger =
| ExplicitInteger of int
static member op_Explicit(i: int) = ExplicitInteger i
override this.ToString() =
let (ExplicitInteger i) = this in i.ToString()

type ImplicitInteger =
| ImplicitInteger of int
static member op_Implicit(i: int) = ImplicitInteger i
override this.ToString() =
let (ImplicitInteger i) = this in i.ToString()

type ArgumentWithImplicitConverterTests() =
[<Test>]
[<Arguments(1)>]
[<Arguments(2)>]
[<Arguments(3)>]
member _.Explicit(integer: ExplicitInteger) =
Console.WriteLine(integer)

[<Test>]
[<Arguments(1)>]
[<Arguments(2)>]
[<Arguments(3)>]
member _.Implicit(integer: ImplicitInteger) =
Console.WriteLine(integer)
62 changes: 62 additions & 0 deletions TUnit.TestProject.FSharp/AssemblyHooks.fs
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
namespace TUnit.TestProject.FSharp

open System.Threading
open System.Threading.Tasks
open TUnit.Assertions
open TUnit.Assertions.Extensions
open TUnit.Core
open TUnit.Assertions.FSharp.Operations

// F# equivalent of AssemblyHooks.cs

type AssemblyHooks() =
static let mutable beforeHook1Calls = 0

[<Before(HookType.Assembly)>]
static member BeforeHook1() =
beforeHook1Calls <- beforeHook1Calls + 1

#if NET
[<Before(HookType.Assembly)>]
static member BeforeHook2(context: AssemblyHookContext) = async{
do! check(Assert.That(context.TestCount).IsPositive())
}
#endif

[<Before(HookType.Assembly)>]
[<Timeout(30000)>]
static member BeforeHook3(cancellationToken: CancellationToken) =
()

#if NET
[<Before(HookType.Assembly)>]
[<Timeout(30000)>]
static member BeforeHook4(context: AssemblyHookContext, cancellationToken: CancellationToken) = async {
do! check(Assert.That(context.TestCount).IsPositive())
}
#endif

[<After(HookType.Assembly)>]
static member AfterHook1() = async {
do! check(Assert.That(beforeHook1Calls).IsEqualTo(1))
}

#if NET
[<After(HookType.Assembly)>]
static member AfterHook2(context: AssemblyHookContext) = async {
do! check(Assert.That(context.TestCount).IsPositive())
}
#endif

[<After(HookType.Assembly)>]
[<Timeout(30000)>]
static member AfterHook3(cancellationToken: CancellationToken) =
()

#if NET
[<After(HookType.Assembly)>]
[<Timeout(30000)>]
static member AfterHook4(context: AssemblyHookContext, cancellationToken: CancellationToken) = async {
do! check(Assert.That(context.TestCount).IsPositive())
}
#endif
19 changes: 19 additions & 0 deletions TUnit.TestProject.FSharp/BasicTests.fs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
namespace TUnit.TestProject.FSharp

open System.Threading.Tasks
open TUnit.Core

// Equivalent of BasicTests.cs

type BasicTests() =
[<Test>]
member _.SynchronousTest() =
() // Dummy method

[<Test>]
member _.AsynchronousTest() : Task =
Task.CompletedTask

[<Test>]
member _.ValueTaskAsynchronousTest() : ValueTask =
ValueTask()
17 changes: 17 additions & 0 deletions TUnit.TestProject.FSharp/ByteArgumentTests.fs
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
namespace TUnit.TestProject.FSharp

open TUnit.Core

// F# equivalent of ByteArgumentTests.cs

type ByteArgumentTests() =
[<Test>]
[<Arguments(1uy)>]
member _.Normal(b: byte) =
() // Dummy method

[<Test>]
[<Arguments(1uy)>]
[<Arguments(null)>]
member _.Nullable(b: byte option) =
() // Dummy method
4 changes: 1 addition & 3 deletions TUnit.TestProject.FSharp/ClassConstructorTest.fs
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
namespace TUnit.TestProject
namespace TUnit.TestProject.FSharp

open TUnit.Core

[<ClassConstructor(typeof<DependencyInjectionClassConstructor>)>]
type ClassConstructorTest(dummyReferenceTypeClass: DummyReferenceTypeClass) =

member _.DummyReferenceTypeClass = dummyReferenceTypeClass

[<Test>]
member _.Test() = ()

2 changes: 1 addition & 1 deletion TUnit.TestProject.FSharp/ClassDataSourceDrivenTests.fs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace TUnit.TestProject
namespace TUnit.TestProject.FSharp

open System.Threading.Tasks
open TUnit.Assertions
Expand Down
16 changes: 16 additions & 0 deletions TUnit.TestProject.FSharp/ConflictingDependsOnTests.fs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
namespace TUnit.TestProject.FSharp

open System
open System.Threading.Tasks
open System.Diagnostics.CodeAnalysis
open TUnit.Core

[<SuppressMessage("Usage", "TUnit0033:Conflicting DependsOn attributes")>]
type ConflictingDependsOnTests() =
[<Test>]
[<DependsOn("Test2")>]
member _.Test1() : Task = Task.Delay(TimeSpan.FromSeconds(5.0))

[<Test>]
[<DependsOn("Test1")>]
member _.Test2() : Task = Task.CompletedTask
28 changes: 28 additions & 0 deletions TUnit.TestProject.FSharp/ConflictingDependsOnTests3.fs
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
namespace TUnit.TestProject.FSharp

open System
open System.Threading.Tasks
open TUnit.Core
open System.Diagnostics.CodeAnalysis

[<SuppressMessage("Usage", "TUnit0033:Conflicting DependsOn attributes")>]
type ConflictingDependsOnTests3() =
[<Test>]
[<DependsOn("Test5")>]
member _.Test1() : Task = Task.Delay(TimeSpan.FromSeconds(5.0))

[<Test>]
[<DependsOn("Test1")>]
member _.Test2() : Task = Task.CompletedTask

[<Test>]
[<DependsOn("Test2")>]
member _.Test3() : Task = Task.CompletedTask

[<Test>]
[<DependsOn("Test3")>]
member _.Test4() : Task = Task.CompletedTask

[<Test>]
[<DependsOn("Test4")>]
member _.Test5() : Task = Task.CompletedTask
43 changes: 43 additions & 0 deletions TUnit.TestProject.FSharp/ConsoleConcurrentTests.fs
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
namespace TUnit.TestProject.FSharp

open System
open TUnit.Core

// F# equivalent of ConsoleConcurrentTests.cs

type ConsoleConcurrentTests() =
[<Test>]
[<Repeat(25)>]
member _.Test1() = Console.WriteLine("Test1")
[<Test>]
[<Repeat(25)>]
member _.Test2() = Console.WriteLine("Test2")
[<Test>]
[<Repeat(25)>]
member _.Test3() = Console.WriteLine("Test3")
[<Test>]
[<Repeat(25)>]
member _.Test4() = Console.WriteLine("Test4")
[<Test>]
[<Repeat(25)>]
member _.Test5() = Console.WriteLine("Test5")
[<Test>]
[<Repeat(25)>]
member _.Test6() = Console.WriteLine("Test6")
[<Test>]
[<Repeat(25)>]
member _.Test7() =
Console.WriteLine("Test7")
Console.WriteLine("Test7")
Console.WriteLine("Test7")
Console.WriteLine("Test7")
Console.WriteLine("Test7")
[<Test>]
[<Repeat(25)>]
member _.Test8() = Console.WriteLine("Test8")
[<Test>]
[<Repeat(25)>]
member _.Test9() = Console.WriteLine("Test9")
[<Test>]
[<Repeat(25)>]
member _.Test10() = Console.WriteLine("Test10")
6 changes: 6 additions & 0 deletions TUnit.TestProject.FSharp/CustomSkipAttribute.fs
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
namespace TUnit.TestProject.FSharp

open TUnit.Core

type CustomSkipAttribute() =
inherit SkipAttribute("Some Reason")
64 changes: 64 additions & 0 deletions TUnit.TestProject.FSharp/DataDrivenTests.fs
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
namespace TUnit.TestProject.FSharp

open System
open TUnit.Core

// F# equivalent of DataDrivenTests.cs

type TestEnum =
| One = 0
| Two = 1

type DataDrivenTests() =
[<Test>]
[<Arguments(1)>]
[<Arguments(2)>]
[<Arguments(3)>]
member _.DataSource_Method(value: int) =
()

[<Test>]
[<Arguments(1, "String")>]
[<Arguments(2, "String2")>]
[<Arguments(3, "String3")>]
member _.DataSource_Method2(value: int, value2: string) =
()

[<Test>]
[<Arguments(TestEnum.One)>]
[<Arguments(TestEnum.Two)>]
[<Arguments(-1)>]
member _.EnumValue(testEnum: TestEnum) =
()

[<Test>]
[<Arguments(null)>]
member _.NullValue(value: string option) =
()

[<Test>]
[<Arguments("")>]
member _.EmptyString(value: string) =
()

[<Test>]
[<Arguments("Foo bar!")>]
member _.NonEmptyString(value: string) =
()

[<Test>]
[<Arguments(null)>]
[<Arguments(false)>]
[<Arguments(true)>]
member _.BooleanString(value: bool option) =
()

[<Test>]
[<Arguments(typeof<obj>)>]
member _.Type(value: Type) =
()

[<Test>]
[<Arguments(Int32.MaxValue)>]
member _.IntMaxValue(value: int) =
()
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
namespace TUnit.TestProject.FSharp

open System.Threading.Tasks
open TUnit.Core

// Equivalent of DataSourceClassCombinedWithDataSourceMethod.cs

type DataSourceClassCombinedWithDataSourceMethod() =
[<Test>]
member _.Test(x: int) = ()
10 changes: 10 additions & 0 deletions TUnit.TestProject.FSharp/DataSourceGeneratorTests.fs
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
namespace TUnit.TestProject.FSharp

open System.Threading.Tasks
open TUnit.Core

// Equivalent of DataSourceGeneratorTests.cs

type DataSourceGeneratorTests() =
[<Test>]
member _.Test(x: int) = ()
Loading