【发布时间】:2017-07-12 18:58:46
【问题描述】:
当尝试将testthat::expect_equal() 与两个数字和一个容差参数一起使用时,它会在参数按特定顺序排列时通过,但如果两个数字交换参数位置则失败。我注意到这个函数使用基本包中的all.equal() 引用,并且该函数在交换参数时也有通过/失败的区别。
无论两个函数的前两个参数的顺序如何,我都希望得到相同的答案。如果这不是正确的期望,请告诉我。
library(testthat)
# expect_equal does not throw error with one pair of numbers to compare
expect_equal(5, 1, tolerance=1)
# But does when the two numbers are reversed in their arguments
tryCatch(expect_equal(1, 5, tolerance=1), expectation_failure=conditionMessage)
#> [1] "1 not equal to 5.\n1/1 mismatches\n[1] 1 - 5 == -4\n"
# Since this seems to reference `all.equal()` I tried there too, and see an issue:
all.equal(1, 5, tolerance=1)
#> [1] "Mean absolute difference: 4"
all.equal(5, 1, tolerance=1)
#> [1] TRUE
# My session info:
sessionInfo()
#> R version 3.3.3 (2017-03-06)
#> Platform: x86_64-w64-mingw32/x64 (64-bit)
#> Running under: Windows 7 x64 (build 7601) Service Pack 1
#>
#> locale:
#> [1] LC_COLLATE=English_United States.1252
#> [2] LC_CTYPE=English_United States.1252
#> [3] LC_MONETARY=English_United States.1252
#> [4] LC_NUMERIC=C
#> [5] LC_TIME=English_United States.1252
#>
#> attached base packages:
#> [1] stats graphics grDevices utils datasets methods base
#>
#> other attached packages:
#> [1] testthat_1.0.2
#>
#> loaded via a namespace (and not attached):
#> [1] backports_1.0.5 R6_2.2.1 magrittr_1.5 rprojroot_1.2
#> [5] tools_3.3.3 htmltools_0.3.6 yaml_2.1.14 crayon_1.3.2
#> [9] Rcpp_0.12.10 stringi_1.1.5 rmarkdown_1.5 knitr_1.15.1
#> [13] stringr_1.2.0 digest_0.6.12 evaluate_0.10
【问题讨论】: