package unit import ( "strconv" ) type BoolSubject struct { *Subject value bool } func NewBoolSubject(base *Subject, value bool) *BoolSubject { return &BoolSubject{ Subject: base, value: value, } } func (subject *BoolSubject) Named(name string) *BoolSubject { subject.Subject.Named(name) return subject } func (subject *BoolSubject) Fail(verb string, other bool) { subject.FailWithMessage("Not true that " + subject.DisplayString() + " " + verb + " <" + strconv.FormatBool(other) + ">.") } func (subject *BoolSubject) DisplayString() string { return subject.Subject.DisplayString(strconv.FormatBool(subject.value)) } func (subject *BoolSubject) Equals(expectation bool) { if subject.value != expectation { subject.Fail("is equal to", expectation) } } func (subject *BoolSubject) IsTrue() { if subject.value != true { subject.Fail("is", true) } } func (subject *BoolSubject) IsFalse() { if subject.value != false { subject.Fail("is", false) } }