forked from mystiq/dex
129 lines
2.4 KiB
Go
129 lines
2.4 KiB
Go
|
// Copyright 2013 Google Inc. All rights reserved.
|
||
|
//
|
||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||
|
// you may not use this file except in compliance with the License.
|
||
|
// You may obtain a copy of the License at
|
||
|
//
|
||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||
|
//
|
||
|
// Unless required by applicable law or agreed to in writing, software
|
||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
// See the License for the specific language governing permissions and
|
||
|
// limitations under the License.
|
||
|
|
||
|
package pretty
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
func TestDiff(t *testing.T) {
|
||
|
type example struct {
|
||
|
Name string
|
||
|
Age int
|
||
|
Friends []string
|
||
|
}
|
||
|
|
||
|
tests := []struct {
|
||
|
desc string
|
||
|
got, want interface{}
|
||
|
diff string
|
||
|
}{
|
||
|
{
|
||
|
desc: "basic struct",
|
||
|
got: example{
|
||
|
Name: "Zaphd",
|
||
|
Age: 42,
|
||
|
Friends: []string{
|
||
|
"Ford Prefect",
|
||
|
"Trillian",
|
||
|
"Marvin",
|
||
|
},
|
||
|
},
|
||
|
want: example{
|
||
|
Name: "Zaphod",
|
||
|
Age: 42,
|
||
|
Friends: []string{
|
||
|
"Ford Prefect",
|
||
|
"Trillian",
|
||
|
},
|
||
|
},
|
||
|
diff: ` {
|
||
|
- Name: "Zaphd",
|
||
|
+ Name: "Zaphod",
|
||
|
Age: 42,
|
||
|
Friends: [
|
||
|
"Ford Prefect",
|
||
|
"Trillian",
|
||
|
- "Marvin",
|
||
|
],
|
||
|
}`,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, test := range tests {
|
||
|
if got, want := Compare(test.got, test.want), test.diff; got != want {
|
||
|
t.Errorf("%s:", test.desc)
|
||
|
t.Errorf(" got: %q", got)
|
||
|
t.Errorf(" want: %q", want)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestSkipZeroFields(t *testing.T) {
|
||
|
type example struct {
|
||
|
Name string
|
||
|
Species string
|
||
|
Age int
|
||
|
Friends []string
|
||
|
}
|
||
|
|
||
|
tests := []struct {
|
||
|
desc string
|
||
|
got, want interface{}
|
||
|
diff string
|
||
|
}{
|
||
|
{
|
||
|
desc: "basic struct",
|
||
|
got: example{
|
||
|
Name: "Zaphd",
|
||
|
Species: "Betelgeusian",
|
||
|
Age: 42,
|
||
|
},
|
||
|
want: example{
|
||
|
Name: "Zaphod",
|
||
|
Species: "Betelgeusian",
|
||
|
Age: 42,
|
||
|
Friends: []string{
|
||
|
"Ford Prefect",
|
||
|
"Trillian",
|
||
|
"",
|
||
|
},
|
||
|
},
|
||
|
diff: ` {
|
||
|
- Name: "Zaphd",
|
||
|
+ Name: "Zaphod",
|
||
|
Species: "Betelgeusian",
|
||
|
Age: 42,
|
||
|
+ Friends: [
|
||
|
+ "Ford Prefect",
|
||
|
+ "Trillian",
|
||
|
+ "",
|
||
|
+ ],
|
||
|
}`,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
cfg := *CompareConfig
|
||
|
cfg.SkipZeroFields = true
|
||
|
|
||
|
for _, test := range tests {
|
||
|
if got, want := cfg.Compare(test.got, test.want), test.diff; got != want {
|
||
|
t.Errorf("%s:", test.desc)
|
||
|
t.Errorf(" got: %q", got)
|
||
|
t.Errorf(" want: %q", want)
|
||
|
}
|
||
|
}
|
||
|
}
|