| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 | package reportingimport "fmt"func (self *statistics) BeginStory(story *StoryReport) {}func (self *statistics) Enter(scope *ScopeReport) {}func (self *statistics) Report(report *AssertionResult) {	if !self.failing && report.Failure != "" {		self.failing = true	}	if !self.erroring && report.Error != nil {		self.erroring = true	}	if report.Skipped {		self.skipped += 1	} else {		self.total++	}}func (self *statistics) Exit() {}func (self *statistics) EndStory() {	if !self.suppressed {		self.PrintSummary()	}}func (self *statistics) Suppress() {	self.suppressed = true}func (self *statistics) PrintSummary() {	self.reportAssertions()	self.reportSkippedSections()	self.completeReport()}func (self *statistics) reportAssertions() {	self.decideColor()	self.out.Print("\n%d total %s", self.total, plural("assertion", self.total))}func (self *statistics) decideColor() {	if self.failing && !self.erroring {		fmt.Print(yellowColor)	} else if self.erroring {		fmt.Print(redColor)	} else {		fmt.Print(greenColor)	}}func (self *statistics) reportSkippedSections() {	if self.skipped > 0 {		fmt.Print(yellowColor)		self.out.Print(" (one or more sections skipped)")	}}func (self *statistics) completeReport() {	fmt.Print(resetColor)	self.out.Print("\n")	self.out.Print("\n")}func (self *statistics) Write(content []byte) (written int, err error) {	return len(content), nil // no-op}func NewStatisticsReporter(out *Printer) *statistics {	self := statistics{}	self.out = out	return &self}type statistics struct {	out        *Printer	total      int	failing    bool	erroring   bool	skipped    int	suppressed bool}func plural(word string, count int) string {	if count == 1 {		return word	}	return word + "s"}
 |