aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/stub/call.go
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-03-17 16:09:14 +0900
committerOphestra <cat@gensokyo.uk>2026-03-17 16:09:14 +0900
commitbac583f89edd1360150143ff51f7264c01aa69ec (patch)
tree47914efe1ae9fae256ef93725097bdb9255c03d5 /internal/stub/call.go
parent722989c68256469963aee963bed9c6ab4bf55b67 (diff)
internal/stub: move from container
This package solves a very specific stubbing use case, in a less than elegant manner. Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal/stub/call.go')
-rw-r--r--internal/stub/call.go37
1 files changed, 37 insertions, 0 deletions
diff --git a/internal/stub/call.go b/internal/stub/call.go
new file mode 100644
index 00000000..585a69ef
--- /dev/null
+++ b/internal/stub/call.go
@@ -0,0 +1,37 @@
+package stub
+
+import (
+ "slices"
+)
+
+// ExpectArgs is an array primarily for storing expected function arguments.
+// Its actual use is defined by the implementation.
+type ExpectArgs = [5]any
+
+// An Expect stores expected calls of a goroutine.
+type Expect struct {
+ Calls []Call
+
+ // Tracks are handed out to descendant goroutines in order.
+ Tracks []Expect
+}
+
+// A Call holds expected arguments of a function call and its outcome.
+type Call struct {
+ // Name is the function Name of this call. Must be unique.
+ Name string
+ // Args are the expected arguments of this Call.
+ Args ExpectArgs
+ // Ret is the return value of this Call.
+ Ret any
+ // Err is the returned error of this Call.
+ Err error
+}
+
+// Error returns [Call.Err] if all arguments are true, or [ErrCheck] otherwise.
+func (k *Call) Error(ok ...bool) error {
+ if !slices.Contains(ok, false) {
+ return k.Err
+ }
+ return ErrCheck
+}