Я немного озадачен тем, что RackUnit check-eq?
возвращает false для одинаковых строк.
Это код, который я пытаюсь:
#lang racket
(require rackunit)
(define (get-output proc)
(let ([out (open-output-string)])
(parameterize ([current-output-port out])
(proc)
(get-output-string out))))
(define output (get-output
(λ () (display "hello"))))
(check-eq? output "hello")
Запуск этого теста приводит к этой ошибке:
--------------------
. FAILURE
name: check-eq?
location: unsaved-editor:14:0
actual: "hello"
expected: "hello"
--------------------
Я думал, что понял значение eq?
, но мне кажется, что я все еще что-то упускаю ... почему это не получается?
Я знаю, что get-output-string
вызывает bytes-> string / utf8 , которая возвращает что-то, что проходит контракт string?
, поэтому я предположил, что это должно работать при сравнении с литеральной строкой.