// 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) } }