簡體   English   中英

PLT球拍測試用例的多個值

[英]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-valuesvalues轉換為列表:

(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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM