我似乎無法測試我在PLT球拍中使用test-engine/racket-tests
包編寫的函數。PLT球拍測試用例多值
代碼如下。它返回多個值(不知道爲什麼他們不稱他們爲元組)。
(define (euclid-ext a b)
(cond
[(= b 0) (values a 1 0)]
[else (let-values ([(d x y) (euclid-ext b (modulo a b))])
(values d y (- x (* (quotient a b) y))))]
))
問題是使用以下格式對其進行測試。這是我嘗試過的一些。
(check-expect (values (euclid-ext 99 78)) (values 3 -11 14))
(check-expect (euclid-ext 99 78) (values 3 -11 14))
(check-expect (list (euclid-ext 99 78)) (list 3 -11 14))
現在,這產生了錯誤context expected 1 value, received 3 values: 3 -11 14
。無論我如何嘗試工作(使用列表,值,沒有值等),我都無法讓這個測試用例成功評估。
感謝您的建議,我會嘗試與列表。我這樣做是因爲返回一個元組很方便。你可以做類似的清單嗎?但無論如何,謝謝你的解決方案。 :) – sholsapp 2010-09-20 02:50:38
我不確定這是否是您要問的問題的答案,但您可以使用類似於以下內容的方式返回三個值列表:'(define(example)(list 3 -11 14))'。因此,不要返回'(values d y( - x(*(商a b)y)))'你可以返回'(list d y ...)'。 – msandiford 2010-09-20 02:59:04