xref: /aosp_15_r20/external/go-cmp/README.md (revision 88d15eac089d7f20c739ff1001d56b91872b21a1)
1*88d15eacSSasha Smundak# Package for equality of Go values
2*88d15eacSSasha Smundak
3*88d15eacSSasha Smundak[![GoDev](https://img.shields.io/static/v1?label=godev&message=reference&color=00add8)][godev]
4*88d15eacSSasha Smundak[![Build Status](https://github.com/google/go-cmp/actions/workflows/test.yml/badge.svg?branch=master)][actions]
5*88d15eacSSasha Smundak
6*88d15eacSSasha SmundakThis package is intended to be a more powerful and safer alternative to
7*88d15eacSSasha Smundak`reflect.DeepEqual` for comparing whether two values are semantically equal.
8*88d15eacSSasha Smundak
9*88d15eacSSasha SmundakThe primary features of `cmp` are:
10*88d15eacSSasha Smundak
11*88d15eacSSasha Smundak* When the default behavior of equality does not suit the needs of the test,
12*88d15eacSSasha Smundak  custom equality functions can override the equality operation.
13*88d15eacSSasha Smundak  For example, an equality function may report floats as equal so long as they
14*88d15eacSSasha Smundak  are within some tolerance of each other.
15*88d15eacSSasha Smundak
16*88d15eacSSasha Smundak* Types that have an `Equal` method may use that method to determine equality.
17*88d15eacSSasha Smundak  This allows package authors to determine the equality operation for the types
18*88d15eacSSasha Smundak  that they define.
19*88d15eacSSasha Smundak
20*88d15eacSSasha Smundak* If no custom equality functions are used and no `Equal` method is defined,
21*88d15eacSSasha Smundak  equality is determined by recursively comparing the primitive kinds on both
22*88d15eacSSasha Smundak  values, much like `reflect.DeepEqual`. Unlike `reflect.DeepEqual`, unexported
23*88d15eacSSasha Smundak  fields are not compared by default; they result in panics unless suppressed
24*88d15eacSSasha Smundak  by using an `Ignore` option (see `cmpopts.IgnoreUnexported`) or explicitly
25*88d15eacSSasha Smundak  compared using the `AllowUnexported` option.
26*88d15eacSSasha Smundak
27*88d15eacSSasha SmundakSee the [documentation][godev] for more information.
28*88d15eacSSasha Smundak
29*88d15eacSSasha SmundakThis is not an official Google product.
30*88d15eacSSasha Smundak
31*88d15eacSSasha Smundak[godev]: https://pkg.go.dev/github.com/google/go-cmp/cmp
32*88d15eacSSasha Smundak[actions]: https://github.com/google/go-cmp/actions
33*88d15eacSSasha Smundak
34*88d15eacSSasha Smundak## Install
35*88d15eacSSasha Smundak
36*88d15eacSSasha Smundak```
37*88d15eacSSasha Smundakgo get -u github.com/google/go-cmp/cmp
38*88d15eacSSasha Smundak```
39*88d15eacSSasha Smundak
40*88d15eacSSasha Smundak## License
41*88d15eacSSasha Smundak
42*88d15eacSSasha SmundakBSD - See [LICENSE][license] file
43*88d15eacSSasha Smundak
44*88d15eacSSasha Smundak[license]: https://github.com/google/go-cmp/blob/master/LICENSE
45