check-sexp-equal
| (require check-sexp-equal) | package: check-sexp-equal | 
check-equal? doesn’t even pretty-print the sexprs on failure, which can be very long and hard to compare. Anyway let’s do even better and use sexp-diff to highlight to diff.
procedure
(check-sexp-equal? a b) → (void)
a : any/c b : any/c 
The original check-equal with a complex structure, on failure:
(let ([a '(a (foo bar foo bar b c d e f (g h i j k l)) (m n o p q (r s t u v w x y z)))] [b '(a (foo bar foo bar b c d e f (g h i j k l)) (m n o p q (r s t u v 0 x y z)))]) (check-equal? a b)) 
outputs:
| FAILURE | 
| actual: (a (foo bar foo bar b c d e f (g h i j k l)) (m n o p q (r s t u v w x y z))) | 
| expected: (a (foo bar foo bar b c d e f (g h i j k l)) (m n o p q (r s t u v 0 x y z))) | 
| name: check-equal? | 
| location: (#<path:/Users/ryan/Work/git/zenspider/check-sexp-equal/main.rkt> 22 4 713 18) | 
| expression: (check-equal? a b) | 
| 
 | 
| Check failure | 
But switching from check-equal? to check-sexp-equal? outputs:
| FAILURE | 
| name: check-sexp-equal? | 
| location: (#<path:/Users/ryan/Work/git/zenspider/check-sexp-equal/main.rkt> 28 4 926 23) | 
| expression: (check-sexp-equal? a b) | 
| params: ((a (foo bar foo bar b c d e f (g h i j k l)) (m n o p q (r s t u v w x y z))) (a (foo bar foo bar b c d e f (g h i j k l)) (m n o p q (r s t u v 0 x y z)))) | 
| 
 | 
| sexp-diff (#:new = actual, #:old = expected): | 
| 
 | 
| '((a | 
| (foo bar foo bar b c d e f (g h i j k l)) | 
| (m n o p q (r s t u v #:new w #:old 0 x y z)))) |