// Copyright 2011 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package deepequal_test import ( "testing" "google3/spam/archer/frontend/deepequal" ) func TestTwoNilValues(t *testing.T) { if err := deepequal.Check(nil, nil); err != nil { t.Errorf("expected nil, saw %v", err) } } type Foo struct { bar *Bar bang *Bar } type Bar struct { baz *Baz foo []*Foo } type Baz struct { entries map[int]interface{} whatever string } func newFoo() (*Foo) { return &Foo{bar: &Bar{ baz: &Baz{ entries: map[int]interface{}{ 42: &Foo{}, 21: &Bar{}, 11: &Baz{ whatever: "it's just a test" }}}}, bang: &Bar{foo: []*Foo{ &Foo{bar: &Bar{ baz: &Baz{ entries: map[int]interface{}{ 43: &Foo{}, 22: &Bar{}, 13: &Baz{ whatever: "this is nuts" }}}}, bang: &Bar{foo: []*Foo{ &Foo{bar: &Bar{ baz: &Baz{ entries: map[int]interface{}{ 61: &Foo{}, 71: &Bar{}, 11: &Baz{ whatever: "no, it's Go" }}}}, bang: &Bar{foo: []*Foo{ &Foo{bar: &Bar{ baz: &Baz{ entries: map[int]interface{}{ 0: &Foo{}, -2: &Bar{}, -11: &Baz{ whatever: "we need to go deeper" }}}}, bang: &Bar{foo: []*Foo{ &Foo{bar: &Bar{ baz: &Baz{ entries: map[int]interface{}{ -2: &Foo{}, -5: &Bar{}, -7: &Baz{ whatever: "are you serious?" }}}}, bang: &Bar{foo: []*Foo{}}}, &Foo{bar: &Bar{ baz: &Baz{ entries: map[int]interface{}{ -100: &Foo{}, 50: &Bar{}, 20: &Baz{ whatever: "na, not really ..." }}}}, bang: &Bar{foo: []*Foo{}}}}}}}}}, &Foo{bar: &Bar{ baz: &Baz{ entries: map[int]interface{}{ 2: &Foo{}, 1: &Bar{}, -1: &Baz{ whatever: "... it's just a test." }}}}, bang: &Bar{foo: []*Foo{}}}}}}}}} } func TestElaborate(t *testing.T) { a := newFoo() b := newFoo() if err := deepequal.Check(a, b); err != nil { t.Errorf("expected nil, saw %v", err) } }