Giant blob of minor changes
[dotfiles/.git] / .config / coc / extensions / coc-go-data / tools / pkg / mod / github.com / google / go-cmp@v0.5.1 / cmp / internal / teststructs / project2.go
1 // Copyright 2017, The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE.md file.
4
5 package teststructs
6
7 import (
8         "time"
9
10         pb "github.com/google/go-cmp/cmp/internal/testprotos"
11 )
12
13 // This is an sanitized example of equality from a real use-case.
14 // The original equality function was as follows:
15 /*
16 func equalBatch(b1, b2 *GermBatch) bool {
17         for _, b := range []*GermBatch{b1, b2} {
18                 for _, l := range b.DirtyGerms {
19                         sort.Slice(l, func(i, j int) bool { return l[i].String() < l[j].String() })
20                 }
21                 for _, l := range b.CleanGerms {
22                         sort.Slice(l, func(i, j int) bool { return l[i].String() < l[j].String() })
23                 }
24         }
25         if !pb.DeepEqual(b1.DirtyGerms, b2.DirtyGerms) ||
26                 !pb.DeepEqual(b1.CleanGerms, b2.CleanGerms) ||
27                 !pb.DeepEqual(b1.GermMap, b2.GermMap) {
28                 return false
29         }
30         if len(b1.DishMap) != len(b2.DishMap) {
31                 return false
32         }
33         for id := range b1.DishMap {
34                 kpb1, err1 := b1.DishMap[id].Proto()
35                 kpb2, err2 := b2.DishMap[id].Proto()
36                 if !pb.Equal(kpb1, kpb2) || !reflect.DeepEqual(err1, err2) {
37                         return false
38                 }
39         }
40         return b1.HasPreviousResult == b2.HasPreviousResult &&
41                 b1.DirtyID == b2.DirtyID &&
42                 b1.CleanID == b2.CleanID &&
43                 b1.GermStrain == b2.GermStrain &&
44                 b1.TotalDirtyGerms == b2.TotalDirtyGerms &&
45                 b1.InfectedAt.Equal(b2.InfectedAt)
46 }
47 */
48
49 type GermBatch struct {
50         DirtyGerms, CleanGerms map[int32][]*pb.Germ
51         GermMap                map[int32]*pb.Germ
52         DishMap                map[int32]*Dish
53         HasPreviousResult      bool
54         DirtyID, CleanID       int32
55         GermStrain             int32
56         TotalDirtyGerms        int
57         InfectedAt             time.Time
58 }
59
60 type Dish struct {
61         pb  *pb.Dish
62         err error
63 }
64
65 func CreateDish(m *pb.Dish, err error) *Dish {
66         return &Dish{pb: m, err: err}
67 }
68
69 func (d *Dish) Proto() (*pb.Dish, error) {
70         if d.err != nil {
71                 return nil, d.err
72         }
73         return d.pb, nil
74 }