2025-01-12 04:36:52 +08:00

129 lines
4.8 KiB
R

#### Extraneous tests for [dpqr] functions
### 1. [Bug 18509] New: qnorm(), qexp(), etc. are inconsistent in return.. for empty inputs
## Date: Tue, 11 Apr 2023
## https://bugs.r-project.org/show_bug.cgi?id=18509
## Summary : qnorm(), qexp(), etc. are inconsistent in returning a matrix format for empty inputs
## Version : R 4.2.x
## Reporter: karolis@koncevicius.lt
quote({ # Result before bug fix for x = <0x0 matrix>
### -- q --- ----------------------
try(
qbirthday(x, 1, 1) ) # <error> <<<<<<<<< fixed in R code
qsmirnov (x, c(1,1)) # numeric(0) <<<<<<<< fixed in R code
##
qbeta(x, 1, 1) # numeric(0)
qbeta(x, 1, 1, 0) # numeric(0)
qbinom(x, 1, 1) # numeric(0)
qcauchy(x) # numeric(0)
qchisq(x, 1) # <0 x 0 matrix>
qchisq(x, 1, 0) # numeric(0)
qexp(x, 1) # <0 x 0 matrix>
qf(x, 1, 1) # numeric(0)
qf(x, 1, 1, 0) # numeric(0)
qgamma(x, 1) # numeric(0)
qgeom(x, 1) # <0 x 0 matrix>
qhyper(x, 1, 1, 1) # numeric(0)
qlnorm(x) # numeric(0)
qlogis(x) # numeric(0)
qnbinom(x, 1, prob=1) # numeric(0)
qnbinom(x, 1, mu=1) # numeric(0)
qnorm(x) # numeric(0)
qpois(x, 1) # <0 x 0 matrix>
qsignrank(x, 1) # <0 x 0 matrix>
qt(x, 1) # <0 x 0 matrix>
qt(x, 1, 0) # numeric(0)
qtukey(x, 1, 1) # numeric(0)
qtukey(x, 1, 1, 1) # numeric(0) {3rd optional parameter arg.} -> math4()
qunif(x) # numeric(0)
qweibull(x, 1) # numeric(0)
qweibull(x, 1, 1) # numeric(0) {2nd optional parameter arg.}
qwilcox(x, 1, 1) # numeric(0)
##
### -- p ---
##
pbirthday(x, 1, 1) # '1' *wrongly* !
psmirnov (x, c(1,1)) # numeric(0) <<<<<<<< fixed in R code
##
pbeta(x, 1, 1) # numeric(0)
pbeta(x, 1, 1, 0) # numeric(0)
pbinom(x, 1, 1) # numeric(0)
pcauchy(x) # numeric(0)
pchisq(x, 1) # <0 x 0 matrix>
pchisq(x, 1, 0) # numeric(0)
pexp(x, 1) # <0 x 0 matrix>
pf(x, 1, 1) # numeric(0)
pf(x, 1, 1, 0) # numeric(0)
pgamma(x, 1) # numeric(0)
pgeom(x, 1) # <0 x 0 matrix>
phyper(x, 1, 1, 1) # numeric(0)
plnorm(x) # numeric(0)
plogis(x) # numeric(0)
pnbinom(x, 1, prob=1) # numeric(0)
pnbinom(x, 1, mu=1) # numeric(0)
pnorm(x) # numeric(0)
ppois(x, 1) # <0 x 0 matrix>
psignrank(x, 1) # <0 x 0 matrix>
pt(x, 1) # <0 x 0 matrix>
pt(x, 1, 0) # numeric(0)
ptukey(x, 1, 1) # numeric(0)
ptukey(x, 1, 1, 1) # numeric(0) {3rd optional parameter arg.} -> math4()
punif(x) # numeric(0)
pweibull(x, 1) # numeric(0)
pweibull(x, 1, 1) # numeric(0) {2nd optional parameter arg.}
pwilcox(x, 1, 1) # numeric(0)
##
### -- d --- no dtukey(), dbirthday(), nor dsmirnov() ---
##
dbeta(x, 1, 1) # numeric(0)
dbeta(x, 1, 1, 0) # numeric(0)
dbinom(x, 1, 1) # numeric(0)
dcauchy(x) # numeric(0)
dchisq(x, 1) # <0 x 0 matrix>
dchisq(x, 1, 0) # numeric(0)
dexp(x, 1) # <0 x 0 matrix>
df(x, 1, 1) # numeric(0)
df(x, 1, 1, 0) # numeric(0)
dgamma(x, 1) # numeric(0)
dgeom(x, 1) # <0 x 0 matrix>
dhyper(x, 1, 1, 1) # numeric(0)
dlnorm(x) # numeric(0)
dlogis(x) # numeric(0)
dnbinom(x, 1, prob=1) # numeric(0)
dnbinom(x, 1, mu=1) # numeric(0)
dnorm(x) # numeric(0)
dpois(x, 1) # <0 x 0 matrix>
dsignrank(x, 1) # <0 x 0 matrix>
dt(x, 1) # <0 x 0 matrix>
dt(x, 1, 0) # numeric(0)
dunif(x) # numeric(0)
dweibull(x, 1) # numeric(0)
dweibull(x, 1, 1) # numeric(0) {2nd optional darameter arg.}
dwilcox(x, 1, 1) # numeric(0)
}) -> dpqCalls_
x <- matrix(numeric(), nrow=0, ncol=0, dimnames=list(RN=NULL, cn=NULL))
## remove source attributes and the leading `{` and trailing `}` :
dpqCalls <- removeSource(dpqCalls_)
dpqCalls <- dpqCalls[-c(1L, length(dpqCalls))]
val <- setNames(lapply(dpqCalls, eval), # 1 (try-)error in R <= 4.3.0
gsub(" ", "", vapply(dpqCalls, deparse1, "")))
if(getRversion() < "4.4") # interesting there, showing "pre bug-fix"
str(val, give.attr=FALSE)
str(val[[1]])
## num[0 , 0 ]
## - attr(*, "dimnames")=List of 2
## ..$ RN: NULL
## ..$ cn: NULL
stopifnot(is.list(val),
length(val) == length(dpqCalls),
## all calls return `x`, the 0x0-matrix w/ dimnames :
length(unique(val)) == 1,
identical(val[[1]], x))