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 / example_reporter_test.go
1 // Copyright 2019, 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 cmp_test
6
7 import (
8         "fmt"
9         "strings"
10
11         "github.com/google/go-cmp/cmp"
12 )
13
14 // DiffReporter is a simple custom reporter that only records differences
15 // detected during comparison.
16 type DiffReporter struct {
17         path  cmp.Path
18         diffs []string
19 }
20
21 func (r *DiffReporter) PushStep(ps cmp.PathStep) {
22         r.path = append(r.path, ps)
23 }
24
25 func (r *DiffReporter) Report(rs cmp.Result) {
26         if !rs.Equal() {
27                 vx, vy := r.path.Last().Values()
28                 r.diffs = append(r.diffs, fmt.Sprintf("%#v:\n\t-: %+v\n\t+: %+v\n", r.path, vx, vy))
29         }
30 }
31
32 func (r *DiffReporter) PopStep() {
33         r.path = r.path[:len(r.path)-1]
34 }
35
36 func (r *DiffReporter) String() string {
37         return strings.Join(r.diffs, "\n")
38 }
39
40 func ExampleReporter() {
41         x, y := MakeGatewayInfo()
42
43         var r DiffReporter
44         cmp.Equal(x, y, cmp.Reporter(&r))
45         fmt.Print(r.String())
46
47         // Output:
48         // {cmp_test.Gateway}.IPAddress:
49         //      -: 192.168.0.1
50         //      +: 192.168.0.2
51         //
52         // {cmp_test.Gateway}.Clients[4].IPAddress:
53         //      -: 192.168.0.219
54         //      +: 192.168.0.221
55         //
56         // {cmp_test.Gateway}.Clients[5->?]:
57         //      -: {Hostname:americano IPAddress:192.168.0.188 LastSeen:2009-11-10 23:03:05 +0000 UTC}
58         //      +: <invalid reflect.Value>
59 }