我已經生成ARG列表的序列,例如:如何根據一系列參數測試謂詞?
[[a b c] [d e f] [g h i]]
...這樣(map (partial apply f) that-seq)
應產生相同的結果列表。我想檢查是否所有這些確實產生了相同的結果。通常情況下,你可以使用are
這個宏,但是我沒有一堆字符串來測試:我有一個seq。所以,我想我想要的「等價」(適用於......)。據我所知,我的選擇是:
- 寫宏
- 使用
every? true?
,上有用的錯誤信息放棄。
有沒有更好的方法來做到這一點?
無法原因這個代碼不知道什麼符號的含義。如果它應該說明你的問題,你應該把它作爲問題的一部分。 – 2014-09-11 10:33:39
不是,這是一個解決方案,因此是一個答案。 'blake2b-empty-args-variations'是arg列表的序列;所以,我將'#(apply blake2b%)'映射到該arg列表(期望所有相同的結果,如原始問題中所述)。然後,我檢查這些是我預期的結果。由於期望的返回值是一個'byte []',所以我必須使用array-eq(實際上只是'java.util.Arrays.equals'),而不是普通的舊的'=',它在數組上做了標識。 代碼在這裏:https://github.com/lvh/caesium/blob/7377830ed7a91f3a99e563ee02442c343604b4d8/test/caesium/crypto/generichash_test.clj#L31 – lvh 2014-09-12 12:51:40