[英]PLT Racket test cases for multiple values
我似乎無法使用test-engine/racket-tests
包來測試我在PLT Racket中編寫的功能。
該代碼在下面列出。 它返回多個值(不確定為什么不將它們稱為元組)。
(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
。 無論我如何嘗試(使用列表,值,無值等),我都無法使該測試用例成功評估。
test-engine
庫用於學生代碼,因此它不會處理多個值(大多數課程不會處理)。 Rackunit庫之類的東西更適合此類情況。
看起來測試框架不會接受值。 我認為您會發現使用列表作為返回值會比較輕松。
但是,如果您確實想以這種方式進行操作,則可以使用call-with-values
將values
轉換為列表:
(call-with-values (lambda () (values 1 2 3)) list)
因此,測試將如下所示:
(check-expect (call-with-values (lambda () (euclid-ext 99 78)) list)
(list 3 -11 14))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.