...

Source file src/github.com/google/go-cmp/cmp/internal/teststructs/project2.go

Documentation: github.com/google/go-cmp/cmp/internal/teststructs

     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 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  }
    75  

View as plain text