SASUnit Examples  Version 1.2
generate_test.sas
Go to the documentation of this file.
1 
25 /*-- Testcase 1: one by variable ---------------------------------------------*/
26 %initTestcase(i_object=generate.sas, i_desc=example with one by variable)
27 
28 /* assign two temporary librefs */
29 %_sasunit_mkdir(&g_work/test1)
30 libname test1 "&g_work/test1";
31 %_sasunit_mkdir(&g_work/test2)
32 libname test2 "&g_work/test2";
33 
34 proc sort data=sashelp.class out=test2.class1 (label="Dataset for sex=F (9 observations)");
35  by sex;
36  where sex='F';
37 run;
38 proc sort data=sashelp.class out=test2.class2 (label="Dataset for sex=M (10 observations)");
39  by sex;
40  where sex='M';
41 run;
42 
43 %generate(data=sashelp.class, by=sex, out=test1.class)
44 %endTestcall()
45 %assertLibrary(i_actual=test1, i_expected=test2, i_desc=check libraries)
46 %endTestcase() /* assertLog is called implicitly */
47 
48 /*-- Testcase 2: two by variables --------------------------------------------*/
49 %initTestcase(i_object=generate.sas, i_desc=example with two by variables)
50 proc datasets lib=test1 nolist kill;
51 quit;
52 proc datasets lib=test2 nolist kill;
53 quit;
54 proc sort data=sashelp.prdsale out=test2.prdsale1 (label="Dataset for region=EAST, year=1993 (360 observations)");
55  by region year;
56  where region="EAST" and year=1993;
57 run;
58 proc sort data=sashelp.prdsale out=test2.prdsale2 (label="Dataset for region=EAST, year=1994 (360 observations)");
59  by region year;
60  where region="EAST" and year=1994;
61 run;
62 proc sort data=sashelp.prdsale out=test2.prdsale3 (label="Dataset for region=WEST, year=1993 (360 observations)");
63  by region year;
64  where region="WEST" and year=1993;
65 run;
66 proc sort data=sashelp.prdsale out=test2.prdsale4 (label="Dataset for region=WEST, year=1994 (360 observations)");
67  by region year;
68  where region="WEST" and year=1994;
69 run;
70 %generate(data=sashelp.prdsale, by=region year, out=test1.prdsale)
71 %endTestcall()
72 %assertLibrary(i_actual=test1, i_expected=test2, i_desc=check libraries)
73 %endTestcase()
74 
75 /*-- Testcase 3: one by variable with only one value -------------------------*/
76 %initTestcase(i_object=generate.sas, i_desc=example with one by variable with only one value)
77 proc datasets lib=test1 nolist kill;
78 quit;
79 proc datasets lib=test2 nolist kill;
80 quit;
81 /* create input dataset */
82 proc sort data=sashelp.class out=class;
83  by sex;
84  where sex='F';
85 run;
86 /* create expected output dataset */
87 proc sort data=sashelp.class out=test2.class1 (label="Dataset for sex=F (9 observations)");
88  by sex;
89  where sex='F';
90 run;
91 %generate(data=class, by=sex, out=test1.class)
92 %endTestcall()
93 %assertLibrary(i_actual=test1, i_expected=test2, i_desc=check libraries)
94 %endTestcase()
95 
96 /*-- Testcase 4: invalid dataset ---------------------------------------------*/
97 %initTestcase(i_object=generate.sas, i_desc=invalid dataset)
98 proc datasets lib=test1 nolist kill;
99 quit;
100 proc datasets lib=test2 nolist kill;
101 quit;
102 %generate(data=sashelp.classXXX, by=sex, out=test1.class)
103 %endTestcall()
104 %assertLogMsg(i_logMsg=ERROR: Macro Generate: data= or by= specified incorrectly)
105 %endTestcase(i_assertLog=0)
106 
107 /*-- Testcase 5: invalid by variable -----------------------------------------*/
108 %initTestcase(i_object=generate.sas, i_desc=invalid by variable)
109 proc datasets lib=test1 nolist kill;
110 quit;
111 proc datasets lib=test2 nolist kill;
112 quit;
113 %generate(data=sashelp.class, by=sexXXX, out=test1.class)
114 %endTestcall()
115 %assertLogMsg(i_logMsg=ERROR: Macro Generate: data= or by= specified incorrectly)
116 %endTestcase(i_assertLog=0)
117 
118 /*-- Testcase 6: invalid output library --------------------------------------*/
119 %initTestcase(i_object=generate.sas, i_desc=invalid output library)
120 proc datasets lib=test1 nolist kill;
121 quit;
122 proc datasets lib=test2 nolist kill;
123 quit;
124 %generate(data=sashelp.class, by=sex, out=test3.class)
125 %endTestcall()
126 %assertLogMsg(i_logMsg=ERROR: Libname TEST3 is not assigned|ERROR: Libname TEST3 ist nicht zugewiesen
127  ,i_desc=regular expression used to support different languages
128  )
129 %endTestcase(i_assertLog=0)
130 
131 libname test1;
132 libname test2;
133