Publicado el :
Prueba CREATION_INTERNE

Prueba de la macro mp_dirlist para la lista de directorios

Este código también está disponible en: Deutsch English Français
En espera de validación
Attention : Este código requiere privilegios de administrador.
El script inicializa un directorio raíz temporal en el directorio de trabajo de SAS©, luego construye una jerarquía de subdirectorios (a, b, a/d, a/e, a/e/f) utilizando la macro `%mf_mkdir`. Se crea un conjunto de datos SAS© (`test.ds1`) en el directorio más profundo (`&root/a/e/f`) para simular un contenido. Se realizan varias llamadas a `%mp_dirlist` con diferentes parámetros `maxdepth` (MAX, 2, 0) para probar la capacidad de la macro para listar directorios a diferentes profundidades. Para cada prueba, el script utiliza las macros `%mf_nobs` para contar las observaciones en los conjuntos de datos de salida de `mp_dirlist` y `%mp_assert` para validar que estos números coinciden con las expectativas. También se prueban casos específicos para un directorio vacío (`&root/b`) y un directorio inexistente (`&root/notexisting`) para garantizar la robustez de la macro.
Análisis de datos

Type : CREATION_INTERNE


El script crea una estructura de directorios y un conjunto de datos SAS temporales con fines de prueba. No se utilizan datos externos o de la biblioteca `SASHELP` directamente para el proceso de prueba. Los datos de prueba se generan in situ.

1 Bloque de código
MACRO mf_mkdir / DATA STEP Data
Explicación :
Este bloque de código inicializa una variable macro `root` que apunta a un nuevo subdirectorio 'top' en el directorio de trabajo temporal (`work`). Luego utiliza la macro `%mf_mkdir` varias veces para crear una jerarquía de directorios anidados. Se define una libname `test` para apuntar al directorio más profundo. Finalmente, se crea un conjunto de datos `ds1` en esta biblioteca, sirviendo como datos de prueba.
¡Copiado!
1%let root=%sysfunc(pathname(work))/top;
2%mf_mkdir(&root)
3%mf_mkdir(&root/a)
4%mf_mkdir(&root/b)
5%mf_mkdir(&root/a/d)
6%mf_mkdir(&root/a/e)
7%mf_mkdir(&root/a/e/f)
8LIBNAME test '&root/a/e/f';
9DATA test.ds1;
10 x=1;
11RUN;
2 Bloque de código
MACRO mp_dirlist / MACRO mp_assert
¡Copiado!
1%mp_dirlist(path=&root, outds=myTable, maxdepth=MAX)
2 
3%mp_assert(
4 iftrue=(%mf_nobs(work.mytable)=6),
5 desc=All levels returned,
6 outds=work.test_results
7)
3 Bloque de código
MACRO mp_dirlist / MACRO mp_assert
¡Copiado!
1%mp_dirlist(path=&root, outds=myTable2, maxdepth=2)
2 
3%mp_assert(
4 iftrue=(%mf_nobs(work.mytable2)=5),
5 desc=Top two levels returned,
6 outds=work.test_results
7)
4 Bloque de código
MACRO mp_dirlist / MACRO mp_assert
¡Copiado!
1%mp_dirlist(path=&root, outds=work.myTable3, maxdepth=0)
2 
3%mp_assert(
4 iftrue=(%mf_nobs(work.mytable3)=2),
5 desc=Top level returned,
6 outds=work.test_results
7)
5 Bloque de código
MACRO mp_dirlist / MACRO mp_assert
¡Copiado!
1%mp_dirlist(path=&root/b, outds=work.myTable4)
2%mp_assert(
3 iftrue=(%mf_nobs(work.mytable4)=0),
4 desc=Empty TABLE for empty directory,
5 outds=work.test_results
6)
6 Bloque de código
MACRO mp_dirlist / MACRO mp_assert
¡Copiado!
1%mp_dirlist(path=&root/notexisting, outds=work.myTable5)
2%mp_assert(
3 iftrue=(%mf_nobs(work.mytable5)=0),
4 desc=Empty TABLE for non-existing directory,
5 outds=work.test_results
6)
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
Información de copyright : Copyright 2010-2023 HMS Analytical Software GmbH, http://www.analytical-software.de. Este archivo forma parte de SASUnit, el framework de prueba unitaria para programas SAS(R). Para obtener información sobre derechos de autor y las condiciones de uso bajo la licencia pública general GNU Lesser, consulte el archivo README.md incluido o https://github.com/HMS-Analytical-Software/SASUnit/wiki/readme/.