From bbb60799f88be20dff04d45a0bd9d02254e00a6d Mon Sep 17 00:00:00 2001 From: joeduffy Date: Tue, 17 Jan 2017 15:58:11 -0800 Subject: [PATCH] Add a Require family of functions to pkg/util/contract --- pkg/util/contract/require.go | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 pkg/util/contract/require.go diff --git a/pkg/util/contract/require.go b/pkg/util/contract/require.go new file mode 100644 index 000000000..f5985a8d7 --- /dev/null +++ b/pkg/util/contract/require.go @@ -0,0 +1,30 @@ +// Copyright 2016 Marapongo, Inc. All rights reserved. + +package contract + +import ( + "fmt" +) + +const requireMsg = "A precondition has failed for %v" + +// Require checks a precondition condition pertaining to a function parameter, and Fails if it is false. +func Require(cond bool, param string) { + if !cond { + failfast(fmt.Sprintf(requireMsg, param)) + } +} + +// RequireM checks a precondition condition pertaining to a function parameter, and FailMs if it is false. +func RequireM(cond bool, param string, msg string) { + if !cond { + failfast(fmt.Sprintf("%v: %v", fmt.Sprintf(requireMsg, param), msg)) + } +} + +// RequireMF checks a precondition condition pertaining to a function parameter, and FailMFs if it is false. +func RequireMF(cond bool, param string, msg string, args ...interface{}) { + if !cond { + failfast(fmt.Sprintf("%v: %v", fmt.Sprintf(requireMsg, param), fmt.Sprintf(msg, args...))) + } +}