129 lines
4.8 KiB
R
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))
|
|
|