Between operator checks that data is between from and
to. from and to can be any numeric, string, time.Time (or
assignable) value or implement at least one of the two following
methods:
func(aT)Less(bT)bool// returns true if a < bfunc(aT)Compare(bT)int// returns -1 if a < b, 1 if a > b, 0 if a == b
from and to must be the same type as the compared value, except
if BeLax config flag is true. time.Duration type is accepted as
to when from is time.Time or convertible. bounds allows to
specify whether bounds are included or not:
BoundsInIn (default): between from and to both included
BoundsInOut: between from included and to excluded
BoundsOutIn: between from excluded and to included
t:=&testing.T{}got:=156ok:=td.Cmp(t,got,td.Between(154,156),"checks %v is in [154 .. 156]",got)fmt.Println(ok)// BoundsInIn is implicitok=td.Cmp(t,got,td.Between(154,156,td.BoundsInIn),"checks %v is in [154 .. 156]",got)fmt.Println(ok)ok=td.Cmp(t,got,td.Between(154,156,td.BoundsInOut),"checks %v is in [154 .. 156[",got)fmt.Println(ok)ok=td.Cmp(t,got,td.Between(154,156,td.BoundsOutIn),"checks %v is in ]154 .. 156]",got)fmt.Println(ok)ok=td.Cmp(t,got,td.Between(154,156,td.BoundsOutOut),"checks %v is in ]154 .. 156[",got)fmt.Println(ok)// Output:// true// true// false// true// false
String example
t:=&testing.T{}got:="abc"ok:=td.Cmp(t,got,td.Between("aaa","abc"),`checks "%v" is in ["aaa" .. "abc"]`,got)fmt.Println(ok)// BoundsInIn is implicitok=td.Cmp(t,got,td.Between("aaa","abc",td.BoundsInIn),`checks "%v" is in ["aaa" .. "abc"]`,got)fmt.Println(ok)ok=td.Cmp(t,got,td.Between("aaa","abc",td.BoundsInOut),`checks "%v" is in ["aaa" .. "abc"[`,got)fmt.Println(ok)ok=td.Cmp(t,got,td.Between("aaa","abc",td.BoundsOutIn),`checks "%v" is in ]"aaa" .. "abc"]`,got)fmt.Println(ok)ok=td.Cmp(t,got,td.Between("aaa","abc",td.BoundsOutOut),`checks "%v" is in ]"aaa" .. "abc"[`,got)fmt.Println(ok)// Output:// true// true// false// true// false
Time example
t:=&testing.T{}before:=time.Now()occurredAt:=time.Now()after:=time.Now()ok:=td.Cmp(t,occurredAt,td.Between(before,after))fmt.Println("It occurred between before and after:",ok)typeMyTimetime.Timeok=td.Cmp(t,MyTime(occurredAt),td.Between(MyTime(before),MyTime(after)))fmt.Println("Same for convertible MyTime type:",ok)ok=td.Cmp(t,MyTime(occurredAt),td.Between(before,after))fmt.Println("MyTime vs time.Time:",ok)ok=td.Cmp(t,occurredAt,td.Between(before,10*time.Second))fmt.Println("Using a time.Duration as TO:",ok)ok=td.Cmp(t,MyTime(occurredAt),td.Between(MyTime(before),10*time.Second))fmt.Println("Using MyTime as FROM and time.Duration as TO:",ok)// Output:// It occurred between before and after: true// Same for convertible MyTime type: true// MyTime vs time.Time: false// Using a time.Duration as TO: true// Using MyTime as FROM and time.Duration as TO: true
args… are optional and allow to name the test. This name is
used in case of failure to qualify the test. If len(args) > 1 and
the first item of args is a string and contains a ‘%’ rune then
fmt.Fprintf is used to compose the name, else args are passed tofmt.Fprint. Do not forget it is the name of the test, not the
reason of a potential failure.
t:=&testing.T{}got:=156ok:=td.CmpBetween(t,got,154,156,td.BoundsInIn,"checks %v is in [154 .. 156]",got)fmt.Println(ok)// BoundsInIn is implicitok=td.CmpBetween(t,got,154,156,td.BoundsInIn,"checks %v is in [154 .. 156]",got)fmt.Println(ok)ok=td.CmpBetween(t,got,154,156,td.BoundsInOut,"checks %v is in [154 .. 156[",got)fmt.Println(ok)ok=td.CmpBetween(t,got,154,156,td.BoundsOutIn,"checks %v is in ]154 .. 156]",got)fmt.Println(ok)ok=td.CmpBetween(t,got,154,156,td.BoundsOutOut,"checks %v is in ]154 .. 156[",got)fmt.Println(ok)// Output:// true// true// false// true// false
String example
t:=&testing.T{}got:="abc"ok:=td.CmpBetween(t,got,"aaa","abc",td.BoundsInIn,`checks "%v" is in ["aaa" .. "abc"]`,got)fmt.Println(ok)// BoundsInIn is implicitok=td.CmpBetween(t,got,"aaa","abc",td.BoundsInIn,`checks "%v" is in ["aaa" .. "abc"]`,got)fmt.Println(ok)ok=td.CmpBetween(t,got,"aaa","abc",td.BoundsInOut,`checks "%v" is in ["aaa" .. "abc"[`,got)fmt.Println(ok)ok=td.CmpBetween(t,got,"aaa","abc",td.BoundsOutIn,`checks "%v" is in ]"aaa" .. "abc"]`,got)fmt.Println(ok)ok=td.CmpBetween(t,got,"aaa","abc",td.BoundsOutOut,`checks "%v" is in ]"aaa" .. "abc"[`,got)fmt.Println(ok)// Output:// true// true// false// true// false
Time example
t:=&testing.T{}before:=time.Now()occurredAt:=time.Now()after:=time.Now()ok:=td.CmpBetween(t,occurredAt,before,after,td.BoundsInIn)fmt.Println("It occurred between before and after:",ok)typeMyTimetime.Timeok=td.CmpBetween(t,MyTime(occurredAt),MyTime(before),MyTime(after),td.BoundsInIn)fmt.Println("Same for convertible MyTime type:",ok)ok=td.CmpBetween(t,MyTime(occurredAt),before,after,td.BoundsInIn)fmt.Println("MyTime vs time.Time:",ok)ok=td.CmpBetween(t,occurredAt,before,10*time.Second,td.BoundsInIn)fmt.Println("Using a time.Duration as TO:",ok)ok=td.CmpBetween(t,MyTime(occurredAt),MyTime(before),10*time.Second,td.BoundsInIn)fmt.Println("Using MyTime as FROM and time.Duration as TO:",ok)// Output:// It occurred between before and after: true// Same for convertible MyTime type: true// MyTime vs time.Time: false// Using a time.Duration as TO: true// Using MyTime as FROM and time.Duration as TO: true
Between optional parameter bounds is here mandatory.
BoundsInIn value should be passed to mimic its absence in
original Between call.
Returns true if the test is OK, false if it fails.
args… are optional and allow to name the test. This name is
used in case of failure to qualify the test. If len(args) > 1 and
the first item of args is a string and contains a ‘%’ rune then
fmt.Fprintf is used to compose the name, else args are passed tofmt.Fprint. Do not forget it is the name of the test, not the
reason of a potential failure.
t:=td.NewT(&testing.T{})got:=156ok:=t.Between(got,154,156,td.BoundsInIn,"checks %v is in [154 .. 156]",got)fmt.Println(ok)// BoundsInIn is implicitok=t.Between(got,154,156,td.BoundsInIn,"checks %v is in [154 .. 156]",got)fmt.Println(ok)ok=t.Between(got,154,156,td.BoundsInOut,"checks %v is in [154 .. 156[",got)fmt.Println(ok)ok=t.Between(got,154,156,td.BoundsOutIn,"checks %v is in ]154 .. 156]",got)fmt.Println(ok)ok=t.Between(got,154,156,td.BoundsOutOut,"checks %v is in ]154 .. 156[",got)fmt.Println(ok)// Output:// true// true// false// true// false
String example
t:=td.NewT(&testing.T{})got:="abc"ok:=t.Between(got,"aaa","abc",td.BoundsInIn,`checks "%v" is in ["aaa" .. "abc"]`,got)fmt.Println(ok)// BoundsInIn is implicitok=t.Between(got,"aaa","abc",td.BoundsInIn,`checks "%v" is in ["aaa" .. "abc"]`,got)fmt.Println(ok)ok=t.Between(got,"aaa","abc",td.BoundsInOut,`checks "%v" is in ["aaa" .. "abc"[`,got)fmt.Println(ok)ok=t.Between(got,"aaa","abc",td.BoundsOutIn,`checks "%v" is in ]"aaa" .. "abc"]`,got)fmt.Println(ok)ok=t.Between(got,"aaa","abc",td.BoundsOutOut,`checks "%v" is in ]"aaa" .. "abc"[`,got)fmt.Println(ok)// Output:// true// true// false// true// false
Time example
t:=td.NewT(&testing.T{})before:=time.Now()occurredAt:=time.Now()after:=time.Now()ok:=t.Between(occurredAt,before,after,td.BoundsInIn)fmt.Println("It occurred between before and after:",ok)typeMyTimetime.Timeok=t.Between(MyTime(occurredAt),MyTime(before),MyTime(after),td.BoundsInIn)fmt.Println("Same for convertible MyTime type:",ok)ok=t.Between(MyTime(occurredAt),before,after,td.BoundsInIn)fmt.Println("MyTime vs time.Time:",ok)ok=t.Between(occurredAt,before,10*time.Second,td.BoundsInIn)fmt.Println("Using a time.Duration as TO:",ok)ok=t.Between(MyTime(occurredAt),MyTime(before),10*time.Second,td.BoundsInIn)fmt.Println("Using MyTime as FROM and time.Duration as TO:",ok)// Output:// It occurred between before and after: true// Same for convertible MyTime type: true// MyTime vs time.Time: false// Using a time.Duration as TO: true// Using MyTime as FROM and time.Duration as TO: true