mirror of
https://github.com/Smaug123/WoofWare.Myriad
synced 2025-12-15 05:15:40 +00:00
* Add IAsyncDisposable support to mock generators Extend both GenerateMock and GenerateCapturingMock to support interfaces that inherit IAsyncDisposable, mirroring the existing IDisposable pattern. Changes: - Add IAsyncDisposable to KnownInheritance type - Detect IAsyncDisposable inheritance in interface parsing - Generate DisposeAsync field with ValueTask return type - Initialize DisposeAsync with completed ValueTask() in Empty mock - Implement System.IAsyncDisposable interface explicitly - Support interfaces inheriting both IDisposable and IAsyncDisposable Test cases added: - TypeWithAsyncDisposable: interface with only IAsyncDisposable - TypeWithBothDisposables: interface with both disposal interfaces 🤖 Generated with [Claude Code](https://claude.com/claude-code)
70 lines
1.9 KiB
Forth
70 lines
1.9 KiB
Forth
namespace SomeNamespace
|
|
|
|
open System
|
|
open WoofWare.Myriad.Plugins
|
|
|
|
[<GenerateMock>]
|
|
type IPublicType =
|
|
abstract Mem1 : string * int -> string list
|
|
abstract Mem2 : string -> int
|
|
abstract Mem3 : x : int * ?ct : System.Threading.CancellationToken -> string
|
|
|
|
[<GenerateMock false>]
|
|
type IPublicTypeInternalFalse =
|
|
abstract Mem1 : string * int -> string list
|
|
abstract Mem2 : string -> int
|
|
abstract Mem3 : x : int * ?ct : System.Threading.CancellationToken -> string
|
|
|
|
[<GenerateMock>]
|
|
type internal InternalType =
|
|
abstract Mem1 : string * int -> unit
|
|
abstract Mem2 : string -> int
|
|
|
|
[<GenerateMock>]
|
|
type private PrivateType =
|
|
abstract Mem1 : string * int -> unit
|
|
abstract Mem2 : string -> int
|
|
|
|
[<GenerateMock false>]
|
|
type private PrivateTypeInternalFalse =
|
|
abstract Mem1 : string * int -> unit
|
|
abstract Mem2 : string -> int
|
|
|
|
[<GenerateMock>]
|
|
type VeryPublicType<'a, 'b> =
|
|
abstract Mem1 : 'a -> 'b
|
|
|
|
[<GenerateMock>]
|
|
type Curried<'a> =
|
|
abstract Mem1 : int -> 'a -> string
|
|
abstract Mem2 : int * string -> 'a -> string
|
|
abstract Mem3 : (int * string) -> 'a -> string
|
|
abstract Mem4 : (int * string) -> ('a * int) -> string
|
|
abstract Mem5 : x : int * string -> ('a * int) -> string
|
|
abstract Mem6 : int * string -> y : 'a * int -> string
|
|
|
|
[<GenerateMock>]
|
|
type TypeWithInterface =
|
|
inherit IDisposable
|
|
abstract Mem1 : string option -> string[] Async
|
|
abstract Mem2 : unit -> string[] Async
|
|
|
|
[<GenerateMock>]
|
|
type TypeWithProperties =
|
|
inherit IDisposable
|
|
abstract Mem1 : string option -> string[] Async
|
|
abstract Prop1 : int
|
|
abstract Prop2 : unit Async
|
|
|
|
[<GenerateMock>]
|
|
type TypeWithAsyncDisposable =
|
|
inherit IAsyncDisposable
|
|
abstract Mem1 : string option -> string[] Async
|
|
abstract Mem2 : unit -> string[] Async
|
|
|
|
[<GenerateMock>]
|
|
type TypeWithBothDisposables =
|
|
inherit IDisposable
|
|
inherit IAsyncDisposable
|
|
abstract Mem1 : string -> int
|