summaryrefslogtreecommitdiff
path: root/vendor/github.com/golang/mock/sample/user.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/golang/mock/sample/user.go')
-rw-r--r--vendor/github.com/golang/mock/sample/user.go114
1 files changed, 114 insertions, 0 deletions
diff --git a/vendor/github.com/golang/mock/sample/user.go b/vendor/github.com/golang/mock/sample/user.go
new file mode 100644
index 0000000..0e4a814
--- /dev/null
+++ b/vendor/github.com/golang/mock/sample/user.go
@@ -0,0 +1,114 @@
+//go:generate mockgen -destination mock_user/mock_user.go github.com/golang/mock/sample Index,Embed,Embedded
+
+// An example package with an interface.
+package user
+
+// Random bunch of imports to test mockgen.
+import "io"
+import (
+ btz "bytes"
+ "hash"
+ "log"
+ "net"
+ "net/http"
+
+ // Two imports with the same base name.
+ t1 "html/template"
+ t2 "text/template"
+)
+
+// Dependencies outside the standard library.
+import (
+ "github.com/golang/mock/sample/imp1"
+ renamed2 "github.com/golang/mock/sample/imp2"
+ . "github.com/golang/mock/sample/imp3"
+ "github.com/golang/mock/sample/imp4" // calls itself "imp_four"
+)
+
+// A bizarre interface to test corner cases in mockgen.
+// This would normally be in its own file or package,
+// separate from the user of it (e.g. io.Reader).
+type Index interface {
+ Get(key string) interface{}
+ GetTwo(key1, key2 string) (v1, v2 interface{})
+ Put(key string, value interface{})
+
+ // Check that imports are handled correctly.
+ Summary(buf *btz.Buffer, w io.Writer)
+ Other() hash.Hash
+ Templates(a t1.CSS, b t2.FuncMap)
+
+ // A method with an anonymous argument.
+ Anon(string)
+
+ // Methods using foreign types outside the standard library.
+ ForeignOne(imp1.Imp1)
+ ForeignTwo(renamed2.Imp2)
+ ForeignThree(Imp3)
+ ForeignFour(imp_four.Imp4)
+
+ // A method that returns a nillable type.
+ NillableRet() error
+ // A method that returns a non-interface type.
+ ConcreteRet() chan<- bool
+
+ // Methods with an ellipsis argument.
+ Ellip(fmt string, args ...interface{})
+ EllipOnly(...string)
+
+ // A method with a pointer argument that we will set.
+ Ptr(arg *int)
+
+ // A method with a slice argument and an array return.
+ Slice(a []int, b []byte) [3]int
+
+ // A method with channel arguments.
+ Chan(a chan int, b chan<- hash.Hash)
+
+ // A method with a function argument.
+ Func(f func(http.Request) (int, bool))
+
+ // A method with a map argument.
+ Map(a map[int]hash.Hash)
+
+ // Methods with an unnamed empty struct argument.
+ Struct(a struct{}) // not so likely
+ StructChan(a chan struct{}) // a bit more common
+}
+
+// An interface with an embedded interface.
+type Embed interface {
+ RegularMethod()
+ Embedded
+ imp1.ForeignEmbedded
+}
+
+type Embedded interface {
+ EmbeddedMethod()
+}
+
+// some random use of another package that isn't needed by the interface.
+var _ net.Addr
+
+// A function that we will test that uses the above interface.
+// It takes a list of keys and values, and puts them in the index.
+func Remember(index Index, keys []string, values []interface{}) {
+ for i, k := range keys {
+ index.Put(k, values[i])
+ }
+ err := index.NillableRet()
+ if err != nil {
+ log.Fatalf("Woah! %v", err)
+ }
+ if len(keys) > 0 && keys[0] == "a" {
+ index.Ellip("%d", 0, 1, 1, 2, 3)
+ index.Ellip("%d", 1, 3, 6, 10, 15)
+ index.EllipOnly("arg")
+ }
+}
+
+func GrabPointer(index Index) int {
+ var a int
+ index.Ptr(&a)
+ return a
+}