| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- package assertions
- import (
- "encoding/json"
- "fmt"
- "github.com/smartystreets/goconvey/convey/reporting"
- )
- type Serializer interface {
- serialize(expected, actual interface{}, message string) string
- serializeDetailed(expected, actual interface{}, message string) string
- }
- type failureSerializer struct{}
- func (self *failureSerializer) serializeDetailed(expected, actual interface{}, message string) string {
- view := self.format(expected, actual, message, "%#v")
- serialized, err := json.Marshal(view)
- if err != nil {
- return message
- }
- return string(serialized)
- }
- func (self *failureSerializer) serialize(expected, actual interface{}, message string) string {
- view := self.format(expected, actual, message, "%+v")
- serialized, err := json.Marshal(view)
- if err != nil {
- return message
- }
- return string(serialized)
- }
- func (self *failureSerializer) format(expected, actual interface{}, message string, format string) reporting.FailureView {
- return reporting.FailureView{
- Message: message,
- Expected: fmt.Sprintf(format, expected),
- Actual: fmt.Sprintf(format, actual),
- }
- }
- func newSerializer() *failureSerializer {
- return &failureSerializer{}
- }
- ///////////////////////////////////////////////////////
- // noopSerializer just gives back the original message. This is useful when we are using
- // the assertions from a context other than the web UI, that requires the JSON structure
- // provided by the failureSerializer.
- type noopSerializer struct{}
- func (self *noopSerializer) serialize(expected, actual interface{}, message string) string {
- return message
- }
- func (self *noopSerializer) serializeDetailed(expected, actual interface{}, message string) string {
- return message
- }
|