1 // Copyright 2011 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 file.
4
5 package deepequal_test
6
7 import (
8 "testing"
9 "google3/spam/archer/frontend/deepequal"
10 )
11
12 func TestTwoNilValues(t *testing.T) {
13 if err := deepequal.Check(nil, nil); err != nil {
14 t.Errorf("expected nil, saw %v", err)
15 }
16 }
17
18 type Foo struct {
19 bar *Bar
20 bang *Bar
21 }
22
23 type Bar struct {
24 baz *Baz
25 foo []*Foo
26 }
27
28 type Baz struct {
29 entries map[int]interface{}
30 whatever string
31 }
32
33 func newFoo() *Foo {
34 return &Foo{bar: &Bar{baz: &Baz{
35 entries: map[int]interface{}{
36 42: &Foo{},
37 21: &Bar{},
38 11: &Baz{whatever: "it's just a test"}}}},
39 bang: &Bar{foo: []*Foo{
40 &Foo{bar: &Bar{baz: &Baz{
41 entries: map[int]interface{}{
42 43: &Foo{},
43 22: &Bar{},
44 13: &Baz{whatever: "this is nuts"}}}},
45 bang: &Bar{foo: []*Foo{
46 &Foo{bar: &Bar{baz: &Baz{
47 entries: map[int]interface{}{
48 61: &Foo{},
49 71: &Bar{},
50 11: &Baz{whatever: "no, it's Go"}}}},
51 bang: &Bar{foo: []*Foo{
52 &Foo{bar: &Bar{baz: &Baz{
53 entries: map[int]interface{}{
54 0: &Foo{},
55 -2: &Bar{},
56 -11: &Baz{whatever: "we need to go deeper"}}}},
57 bang: &Bar{foo: []*Foo{
58 &Foo{bar: &Bar{baz: &Baz{
59 entries: map[int]interface{}{
60 -2: &Foo{},
61 -5: &Bar{},
62 -7: &Baz{whatever: "are you serious?"}}}},
63 bang: &Bar{foo: []*Foo{}}},
64 &Foo{bar: &Bar{baz: &Baz{
65 entries: map[int]interface{}{
66 -100: &Foo{},
67 50: &Bar{},
68 20: &Baz{whatever: "na, not really ..."}}}},
69 bang: &Bar{foo: []*Foo{}}}}}}}}},
70 &Foo{bar: &Bar{baz: &Baz{
71 entries: map[int]interface{}{
72 2: &Foo{},
73 1: &Bar{},
74 -1: &Baz{whatever: "... it's just a test."}}}},
75 bang: &Bar{foo: []*Foo{}}}}}}}}}
76 }
77
78 func TestElaborate(t *testing.T) {
79 a := newFoo()
80 b := newFoo()
81
82 if err := deepequal.Check(a, b); err != nil {
83 t.Errorf("expected nil, saw %v", err)
84 }
85 }
86
View as plain text