X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=testutil%2Ftestutil.go;fp=testutil%2Ftestutil.go;h=8d2e86b1521a345cf45afb365fc470eed776674e;hb=3473766d8afb07cb0685694656947883cbbd1138;hp=0000000000000000000000000000000000000000;hpb=641203fda8f7da72c74562c9dc910ca108116f11;p=safcm%2Fsafcm.git diff --git a/testutil/testutil.go b/testutil/testutil.go new file mode 100644 index 0000000..8d2e86b --- /dev/null +++ b/testutil/testutil.go @@ -0,0 +1,42 @@ +// Utility functions useful for tests + +// Copyright (C) 2021 Simon Ruderich +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +package testutil + +import ( + "fmt" + "reflect" + "testing" + + "github.com/google/go-cmp/cmp" +) + +func AssertEqual(t *testing.T, name string, act, exp interface{}) { + if !reflect.DeepEqual(act, exp) { + t.Errorf("%s: %s", name, cmp.Diff(exp, act)) + } +} + +func AssertErrorEqual(t *testing.T, name string, act, exp error) { + // Ugly but the simplest way to compare errors (including nil) + actStr := fmt.Sprintf("%s", act) + expStr := fmt.Sprintf("%s", exp) + if actStr != expStr { + t.Errorf("err = %s (%#v), want %s (%#v)", + actStr, act, expStr, exp) + } +}