-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmethod_test.go
90 lines (73 loc) · 5.06 KB
/
method_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package logiface
import (
"github.com/joeycumines/logiface/internal/fieldtest"
)
type fieldBuilderCommonInterface[TFluent any, TCall any] interface {
Call(fn func(c TCall)) TFluent
}
// fieldBuilderObjectInterface is used to ensure standardization of the numerous builder implementations
type fieldBuilderObjectInterface[TFluent any, TCall any] interface {
fieldBuilderCommonInterface[TFluent, TCall]
fieldtest.ObjectMethods[TFluent]
}
type fieldBuilderArrayInterface[TFluent any, TCall any] interface {
fieldBuilderCommonInterface[TFluent, TCall]
fieldtest.ArrayMethods[TFluent]
}
type fieldBuilderNestedInterface[TParent any] interface {
As(key string) TParent
Add() TParent
}
type fieldBuilderFactoryInterface[TEvent Event, TParent interface {
Parent[TEvent]
comparable
}, TSelf any] interface {
Array() *ArrayBuilder[TEvent, *Chain[TEvent, TParent]]
Object() *ObjectBuilder[TEvent, *Chain[TEvent, TParent]]
}
type fieldBuilderFactoryInterfaceArray[TEvent Event, TParent interface {
Parent[TEvent]
comparable
}, TSelf any] interface {
fieldBuilderFactoryInterface[TEvent, TParent, TSelf]
ArrayFunc(fn func(b *ArrayBuilder[TEvent, *Chain[TEvent, TParent]])) TSelf
ObjectFunc(fn func(b *ObjectBuilder[TEvent, *Chain[TEvent, TParent]])) TSelf
}
type fieldBuilderFactoryInterfaceObject[TEvent Event, TParent interface {
Parent[TEvent]
comparable
}, TSelf any] interface {
fieldBuilderFactoryInterface[TEvent, TParent, TSelf]
ArrayFunc(key string, fn func(b *ArrayBuilder[TEvent, *Chain[TEvent, TParent]])) TSelf
ObjectFunc(key string, fn func(b *ObjectBuilder[TEvent, *Chain[TEvent, TParent]])) TSelf
}
type eventBuilderInterface[TEvent Event, TFluent any] interface {
Modifier(val Modifier[TEvent]) TFluent
}
type commonFluentInterface[TEvent Event] interface {
Enabled() bool
Root() *Logger[TEvent]
}
var (
// compile time assertions
_ fieldBuilderObjectInterface[*Builder[*mockSimpleEvent], *Builder[*mockSimpleEvent]] = (*Builder[*mockSimpleEvent])(nil)
_ fieldBuilderObjectInterface[*Context[*mockSimpleEvent], *Context[*mockSimpleEvent]] = (*Context[*mockSimpleEvent])(nil)
_ fieldBuilderObjectInterface[*ObjectBuilder[*mockSimpleEvent, *Builder[*mockSimpleEvent]], *ObjectBuilder[*mockSimpleEvent, *Builder[*mockSimpleEvent]]] = (*ObjectBuilder[*mockSimpleEvent, *Builder[*mockSimpleEvent]])(nil)
_ fieldBuilderArrayInterface[*ArrayBuilder[*mockSimpleEvent, *Builder[*mockSimpleEvent]], *ArrayBuilder[*mockSimpleEvent, *Builder[*mockSimpleEvent]]] = (*ArrayBuilder[*mockSimpleEvent, *Builder[*mockSimpleEvent]])(nil)
_ fieldBuilderNestedInterface[*Builder[*mockSimpleEvent]] = (*ArrayBuilder[*mockSimpleEvent, *Builder[*mockSimpleEvent]])(nil)
_ fieldBuilderNestedInterface[*Builder[*mockSimpleEvent]] = (*ObjectBuilder[*mockSimpleEvent, *Builder[*mockSimpleEvent]])(nil)
_ fieldBuilderNestedInterface[*Chain[*mockSimpleEvent, *Builder[*mockSimpleEvent]]] = (*Chain[*mockSimpleEvent, *Builder[*mockSimpleEvent]])(nil)
_ fieldBuilderFactoryInterfaceObject[*mockSimpleEvent, *Builder[*mockSimpleEvent], *Builder[*mockSimpleEvent]] = (*Builder[*mockSimpleEvent])(nil)
_ fieldBuilderFactoryInterfaceObject[*mockSimpleEvent, *Context[*mockSimpleEvent], *Context[*mockSimpleEvent]] = (*Context[*mockSimpleEvent])(nil)
_ fieldBuilderFactoryInterfaceObject[*mockSimpleEvent, *Builder[*mockSimpleEvent], *Chain[*mockSimpleEvent, *Builder[*mockSimpleEvent]]] = (*Chain[*mockSimpleEvent, *Builder[*mockSimpleEvent]])(nil)
_ fieldBuilderFactoryInterfaceArray[*mockSimpleEvent, *Builder[*mockSimpleEvent], *ArrayBuilder[*mockSimpleEvent, *Chain[*mockSimpleEvent, *Builder[*mockSimpleEvent]]]] = (*ArrayBuilder[*mockSimpleEvent, *Chain[*mockSimpleEvent, *Builder[*mockSimpleEvent]]])(nil)
_ fieldBuilderFactoryInterfaceObject[*mockSimpleEvent, *Builder[*mockSimpleEvent], *ObjectBuilder[*mockSimpleEvent, *Chain[*mockSimpleEvent, *Builder[*mockSimpleEvent]]]] = (*ObjectBuilder[*mockSimpleEvent, *Chain[*mockSimpleEvent, *Builder[*mockSimpleEvent]]])(nil)
_ eventBuilderInterface[*mockSimpleEvent, *Builder[*mockSimpleEvent]] = (*Builder[*mockSimpleEvent])(nil)
_ eventBuilderInterface[*mockSimpleEvent, *Context[*mockSimpleEvent]] = (*Context[*mockSimpleEvent])(nil)
_ commonFluentInterface[*mockSimpleEvent] = (*Builder[*mockSimpleEvent])(nil)
_ commonFluentInterface[*mockSimpleEvent] = (*Context[*mockSimpleEvent])(nil)
_ commonFluentInterface[*mockSimpleEvent] = (*Logger[*mockSimpleEvent])(nil)
_ commonFluentInterface[*mockSimpleEvent] = (*Chain[*mockSimpleEvent, *Builder[*mockSimpleEvent]])(nil)
_ commonFluentInterface[*mockSimpleEvent] = (*ArrayBuilder[*mockSimpleEvent, *Chain[*mockSimpleEvent, *Builder[*mockSimpleEvent]]])(nil)
_ commonFluentInterface[*mockSimpleEvent] = (*ObjectBuilder[*mockSimpleEvent, *Chain[*mockSimpleEvent, *Builder[*mockSimpleEvent]]])(nil)
)