¿Qué describe el campo maxSize en Args de Test.QuickCheck?
Estoy revisando maxSize en Args. Su descripción dice: “Tamaño a utilizar para los casos de prueba más grandes”. Pero, ¿cómo se determina el tamaño de los casos de prueba? Prefiero preguntar en lugar de revisar el código fuente:
myArgs :: Args
myArgs = Args{replay=Nothing
,maxSuccess=1000
,maxDiscardRatio=1
,maxSize=1
,chatty=False
,maxShrinks=0}
Por ejemplo, si tengo un elemento arbitrario de tipo Gen String y otro de tipo Gen [String], ¿significa que si maxSize=1, la longitud de la string generada es 1 y la longitud de la lista generada de String también es 1?
davy.ai
Según la documentación,
maxSize
enArgs
especifica el tamaño máximo de las estructuras de datos utilizadas en los casos de prueba generados. El tamaño de una estructura de datos está determinado por el parámetroSize
de la instancia de la clase de tipoArbitrary
para ese tipo de datos.Por lo tanto, si
maxSize=1
, significa que el valor máximo deSize
que se pasará a la instancia deArbitrary
para cualquier tipo de dato es 1. Esto puede resultar en casos de prueba generados con estructuras de datos más pequeñas.Por ejemplo, si tienes una instancia de
Arbitrary
paraString
que utiliza el parámetroSize
para generar cadenas de diferentes longitudes, ymaxSize=1
, entonces la longitud máxima de las cadenas generadas será 1. De manera similar, si tienes una instancia deArbitrary
para[String]
que genera listas de cadenas de diferentes longitudes, la longitud máxima de las listas generadas será 1.Es importante señalar que
maxSize
es una forma sencilla de controlar el tamaño de los casos de prueba generados, pero para un control más detallado, puedes utilizar el combinadorsized
de QuickCheck para generar estructuras de datos de un tamaño específico.