From 4352c787af0f78a2e8db89492b9b0ef3de1f53a3 Mon Sep 17 00:00:00 2001 From: hades Date: Wed, 28 Mar 2001 15:06:09 +0000 Subject: [PATCH] *** empty log message *** --- allParam/test/Makefile | 3 +- allParam/test/README | 31 ++++++-- allParam/test/begin.c | 3 - allParam/test/blob/b_lowercase.c | 34 +++++--- allParam/test/blob/b_lowercase.h | 4 +- allParam/test/blob/test0.blob | Bin 0 -> 16368 bytes allParam/test/blob/test1.blob | Bin 0 -> 16384 bytes allParam/test/blob/test2.blob | Bin 0 -> 8193 bytes allParam/test/end.c | 3 - allParam/test/filename/f_lowercase_abs.c | 44 +++++++++++ allParam/test/filename/f_lowercase_abs.h | 6 ++ allParam/test/filename/f_lowercase_rel.c | 13 ++- allParam/test/filename/f_lowercase_rel.h | 4 +- .../filename/f_lowercase_rel_no_basedir.c | 45 +++++++++++ .../filename/f_lowercase_rel_no_basedir.h | 6 ++ allParam/test/filename/fa_lowercase.c | 74 ++++++++++++++++++ allParam/test/filename/fa_lowercase.h | 6 ++ .../test/filename/fa_lowercase_no_basedir.c | 74 ++++++++++++++++++ .../test/filename/fa_lowercase_no_basedir.h | 6 ++ allParam/test/middle.c | 4 - allParam/test/param.tcl | 7 +- allParam/test/s_store.tcl | 1 + allParam/test/s_store_existing.tcl | 1 + allParam/test/s_store_multiple.tcl | 2 + allParam/test/s_store_whitespace.tcl | 1 + allParam/test/string/s_array.c | 11 ++- allParam/test/string/s_array.h | 4 +- allParam/test/string/s_int_available.c | 11 ++- allParam/test/string/s_int_available.h | 4 +- allParam/test/string/s_lowercase.c | 11 ++- allParam/test/string/s_lowercase.h | 4 +- allParam/test/string/s_no_index.c | 11 ++- allParam/test/string/s_no_index.h | 4 +- allParam/test/string/s_store.c | 61 +++++++++++++++ allParam/test/string/s_store.h | 6 ++ allParam/test/string/s_store_existing.c | 61 +++++++++++++++ allParam/test/string/s_store_existing.h | 6 ++ allParam/test/string/s_store_multiple.c | 64 +++++++++++++++ allParam/test/string/s_store_multiple.h | 6 ++ allParam/test/string/s_store_whitespace.c | 61 +++++++++++++++ allParam/test/string/s_store_whitespace.h | 6 ++ allParam/test/string/s_uppercase.c | 11 ++- allParam/test/string/s_uppercase.h | 4 +- allParam/test/string/s_whitespace.c | 44 +++++++++++ allParam/test/string/s_whitespace.h | 6 ++ allParam/test/string/sa_int_available.c | 21 +++-- allParam/test/string/sa_int_available.h | 6 +- allParam/test/string/sa_long_array.c | 22 ++++-- allParam/test/string/sa_long_array.h | 7 +- allParam/test/string/sa_lowercase.c | 22 ++++-- allParam/test/string/sa_lowercase.h | 6 +- allParam/test/string/sa_no_index.c | 22 ++++-- allParam/test/string/sa_no_index.h | 6 +- allParam/test/string/sa_scalar.c | 22 ++++-- allParam/test/string/sa_scalar.h | 6 +- allParam/test/string/sa_short_array.c | 23 ++++-- allParam/test/string/sa_short_array.h | 7 +- allParam/test/string/sa_uppercase.c | 22 ++++-- allParam/test/string/sa_uppercase.h | 6 +- allParam/test/test_p.tcl | 6 +- 60 files changed, 839 insertions(+), 133 deletions(-) create mode 100644 allParam/test/blob/test0.blob create mode 100644 allParam/test/blob/test1.blob create mode 100644 allParam/test/blob/test2.blob create mode 100644 allParam/test/filename/f_lowercase_abs.c create mode 100644 allParam/test/filename/f_lowercase_abs.h create mode 100644 allParam/test/filename/f_lowercase_rel_no_basedir.c create mode 100644 allParam/test/filename/f_lowercase_rel_no_basedir.h create mode 100644 allParam/test/filename/fa_lowercase.c create mode 100644 allParam/test/filename/fa_lowercase.h create mode 100644 allParam/test/filename/fa_lowercase_no_basedir.c create mode 100644 allParam/test/filename/fa_lowercase_no_basedir.h create mode 100644 allParam/test/s_store.tcl create mode 100644 allParam/test/s_store_existing.tcl create mode 100644 allParam/test/s_store_multiple.tcl create mode 100644 allParam/test/s_store_whitespace.tcl create mode 100644 allParam/test/string/s_store.c create mode 100644 allParam/test/string/s_store.h create mode 100644 allParam/test/string/s_store_existing.c create mode 100644 allParam/test/string/s_store_existing.h create mode 100644 allParam/test/string/s_store_multiple.c create mode 100644 allParam/test/string/s_store_multiple.h create mode 100644 allParam/test/string/s_store_whitespace.c create mode 100644 allParam/test/string/s_store_whitespace.h create mode 100644 allParam/test/string/s_whitespace.c create mode 100644 allParam/test/string/s_whitespace.h diff --git a/allParam/test/Makefile b/allParam/test/Makefile index fd8e478..552b797 100644 --- a/allParam/test/Makefile +++ b/allParam/test/Makefile @@ -63,7 +63,8 @@ clean : cd filename ; $(MAKE) $@ cd int ; $(MAKE) $@ cd string ; $(MAKE) $@ - rm -f *test_protocol.txt sqlnet.log *_s.tcl storage.tcl suite.c suite.o + rm -f *test_protocol.txt sqlnet.log *_s.tcl storage.tcl test?.blob \ + suite.c suite.o bin_clean : clean rm -f *_suite diff --git a/allParam/test/README b/allParam/test/README index 902868e..6e4e739 100644 --- a/allParam/test/README +++ b/allParam/test/README @@ -2,7 +2,7 @@ Author: Benjamin Sailer TUM/E12 Benjamin.Sailer@ph.tum.de Version: 0.1 -Date: 2000-09-10 +Date: 2001-03-28 test suite ========== @@ -28,10 +28,31 @@ in the test directory. There is also included a timing information, which unfortunately is (depending on the shell you are using) not always written to the file but sometimes only to stderr. Note that channel access is not deterministic as timeouts can occur on a heavily used network, which can be -tuned changing the TIMEOUT definition in ca/param.h. Of course the enviroment -needed at runtime is also needed when testing (i.e. a channel access server -has to provide the data in case of ca_test_suite and network connection to the -database hosts are needed for ora_test_suite and psql_test_suite. +tuned changing the TIMEOUT definition in ca/caParam.c. Of course the enviroment +needed at runtime is also needed when testing (i.e. network connection to the +database hosts are needed for ora_test_suite and psql_test_suite). As the +parameter server is now part of this library package, the test of caParam also +uses the server compiled here. The scripts in ./bin do the startup and kill of +the server automatically when make _test is used. + + To increase the verbosity of the tests, you can add a -DVERBOSE to the +CFLAGS in the Makefile. + + If a test_suite fails with a segmentation violation and the output in the +test protocol therefore is no help, you can run the test manually (by typing + +$ ./_test_suite + +) to find out which test fails. By renaming the corresponding sources (i.e. + +$ cd int +$ mv i_lowercase.c i_lowercase.c- +$ mv i_lowercase.h i_lowercase.h- +$ cd - +$ make clean +$ make _test + +), you can skip a single test. There is also a huge field of errors not tested yet (containing all overflows of name lengths, index lengths, param file lengths, array lengths and so on - diff --git a/allParam/test/begin.c b/allParam/test/begin.c index 23fc0eb..10b222c 100644 --- a/allParam/test/begin.c +++ b/allParam/test/begin.c @@ -1,5 +1,2 @@ -#include #include -#include - diff --git a/allParam/test/blob/b_lowercase.c b/allParam/test/blob/b_lowercase.c index 1d411d3..22aa4a8 100644 --- a/allParam/test/blob/b_lowercase.c +++ b/allParam/test/blob/b_lowercase.c @@ -1,18 +1,18 @@ #include +#include #include #include #include "b_lowercase.h" -int b_lowercase(const char *testid, const Param *param) { - char *name = "tname"; - char *idx = "tint"; - char buf[256]; +int b_lowercase(const char *testid) { + Param *param; + char *name = "file"; + char *idx = "rname"; FILE *result; FILE *store; size_t size; - size_t bufsize; int retVal; int myRetVal; @@ -20,25 +20,29 @@ int b_lowercase(const char *testid, const Param *param) { printf("%s : Param_getBlob: Lowercase input on correct statements.\n", testid); #endif + param = malloc(sizeof(Param)); + conParam(param); + retVal = Param_getBlob(param, name, idx, &size, &result); - store = fopen("blob", "w+"); - while(bufsize = fread(buf, 1, 256, result)) { - fwrite(buf, 1, bufsize, store); - } - fclose(result); - fclose(store); if ((size == 16368) && (retVal == 0)) { - if (!system("diff blob BLOB")) { + int buf; + store = fopen("test0.blob", "w+"); + while((buf = fgetc(result)) != EOF) { + putc(buf, store); + } + fclose(store); + if (!system("diff test0.blob blob/test0.blob")) { myRetVal = 0; printf("%s : Passed.\n", testid); } else { #ifdef VERBOSE - printf("%s : Failed. Files \"blob\" and \"BLOB\" differ.\n", testid); + printf("%s : Failed. Files \"test0.blob\" and \"blob/test0.blob\" differ.\n", testid); #else printf("%s : Failed.\n", testid); #endif myRetVal = -1; } + fclose(result); } else { #ifdef VERBOSE printf("%s : Failed. Size: %d, return Value: %d.\n", testid, size, retVal); @@ -48,6 +52,10 @@ int b_lowercase(const char *testid, const Param *param) { #endif myRetVal = -1; } + + desParam(param); + free(param); + return myRetVal; } diff --git a/allParam/test/blob/b_lowercase.h b/allParam/test/blob/b_lowercase.h index 0019aaf..ed246be 100644 --- a/allParam/test/blob/b_lowercase.h +++ b/allParam/test/blob/b_lowercase.h @@ -1,8 +1,6 @@ #ifndef B_LOWERCASE_H #define B_LOWERCASE_H -#include - -int b_lowercase(const char *, const Param *); +int b_lowercase(const char *); #endif diff --git a/allParam/test/blob/test0.blob b/allParam/test/blob/test0.blob new file mode 100644 index 0000000000000000000000000000000000000000..ae56c07133a54e32e3dda56fc643fb92722a2897 GIT binary patch literal 16368 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
    GgJ4!{j1&|_YTH%~xF9})D{4!Cxk;ok>U@Hhlt z)Kmk{+-q?4dGyg0E0-T4>o-!z-ril}r_dI5Svw8_JxbBm!KY08(%*9s#6GgDR4zLx z)^E6>DB@{rMC?p74F{Ea-;~O9V*PIbER`5U`3*AIPO$1^ehQMB>B@aF+e{2l*wKL? zfv^h26gs6cLqXX=AzLaL8-r^SLeds4mPQ8F$i;WGFfZezOtF3k5FH>0QjjnY*j`0~ zc5YzMTy9l-6J_H1q-!Ym<^&;XUI$OPK1{~-)f7UQCF4g) zr0hToo1_kQ@C7aBRpNFBph(S0^vB6Kt59Z>rc%F3R9Dfalj_N`ct&A|D>N$77DE9= z@$CFomspU!6y5cp9cO z|ELOTnjxa>184!|VX7Su5tW(=*#ly;6JDnGXxg@%g971U4)PRgkVNT{#v~OLn~CDN zGI>grs-T{Xt1`s;XW$*rl;0x;N)$ts2~27x&m^TpYhc=TqK`y%g>>yI3=%b}=FguN zBx)tCQ#TV!#pb2(oLjh^Nbyc#B7qB*-1?0dlLHiPEJOW49U_{6XG`|Hjh##iBOX7tuftO%IgWUf!jCPLwDjUsK z2MMPJGM19G5uH>vR#Ztci7ZLJlCe@V8OI)gP?97eTwBhm#QNnhkY&PKl!?ws=^~qc zQ}TvXp&z_649ik*K0NcfhXqMUL^`W(XU)}gB-IlkV*NsjNxV5NxPw3j#g@}?iP|Dj z*GTjBC!~79OOgq;nAI*WY-f{s%FqBy%``olcfqphMP^7*wgt)f&fv@NoJ=ydr3>nV zD%7VxnN&uWiJGGPI6RXATfS0>&BV-`Q6}V4Jz)iT`g1aoNj?|Q^!5yErKYTjuM_)H z{Wq=9ZuZ_=L?k}NhRktQ$aK@*-vFUoQn|$-v4XY@0*X(g^*_ySmP$r%Gt8;}s5)tE zNtRn;=iEe3HuG;YPNKa}qBU|lp31I?xB4j=Mlq{XT-eDn(IkrJuhRCXL8>GZYfhgJ zQZ{^Mos|w+;!F}ETuB0w0#jnT=1)xam1gQPnh=HTEWUv57m7?WB^j1ns+ZXQ144>I z`&1#jUpOAv+Xys_DPT%KTG5zEatJ^-OZ~$^MX^Q#wDBX}6rjz9G1W(CQ03h-0e97- zkNq(U`)8?S*99Z|80ybJq+eRjI`Hw4P$uok5{bjze|3W526{NyXr+-^PzhpLk5n|8 zl!P%d-HgPNen~Lz9}C9;)B6UGSaMwwvXY~#7Y{)xCHwV^g9KOTDx499fp`4QE;uEa z-ea}m!09f%y+_dyg!pK=aSEv;d>Vcgp-QLL12J7erzb24-KO`Kv8MOg)kNY%dk=F` zv?rjcZ0yPHEZmaiotKn1j<72nM}>{PDNOxcVZ-spA4&lpo)*d8Gtquk5)AR@lKm|( zxW=^AKpJUTx9Pq68K^oC7z;$N7Ibk^@ zca>3Eji;^djt@)vpG^7-S0}18l06YuiS1%EcXdLt_fNBT7qojOfdu$nb}eL)y<0=x zrH&=|y(~D~IiL&5oKQmURD26#5?$y8T=Fi4MX@qUuPJ zh`1e0irM=~`UJKlkSVwdycNIiU&)8npuqQ{Qn<{=3D&#&*cN8iE!_>`&r_!=ZXJ_zx+eQSEgVd z*^FjTXT1rQrkr^G{)GE?w%Xe`#5`KlIZ>Cs8!!Z`ZAG0Sw zGKkg%qWu97?L8uaSCj6gP8F%cNhC0hgxE*#L3J!ba1DCb2i;%%`oN38By59T6=PN8 z@Dqq69@^Y{pbm!O)l`3tv9Ic3KG#1;_TFc&`Uh`=WPWZmAkgz1tdq+QtP?m{AOHPz z!Wz~I{MoB;=mp_~M5ZH$9DEu8j&<%CX0&c9c`$&uj)TWCT>LdC8Vwv78|*Lze+@+9 zRS*bQ4g@!+anJU~f;3zMHuaZ#}nv@oMpK0T8d9#ka^amyh}vl2?GFZ zkIz-!B~0LSN1uc~g>V-j1df>D5I80Ux!g|{2?{ +#include +#include + +#include + +#include "f_lowercase_abs.h" + +int f_lowercase_abs(const char *testid) { + Param *param; + char *name = "file"; + char *idx = "aname"; + char result[PARAM_MAX_VALUE_LEN]; + int rows; + int retVal; + int myRetVal; + +#ifdef VERBOSE + printf("%s : Param_getFilename: Lowercase input on correct statements.\n", testid); +#endif + + param = malloc(sizeof(Param)); + conParam(param); + + retVal = Param_getFilename(param, name, idx, &rows, result); + if ((rows == 1) && result && (strcmp(result, "/test0.blob") == 0) && (retVal == 0)) { + myRetVal = 0; + printf("%s : Passed.\n", testid); + } else { +#ifdef VERBOSE + printf("%s : Failed. Rows: %d, result: \'%s\', return Value: %d.\n", testid, rows, result, retVal); + printf("%s : Error string: %s\n", testid, Param_getErrStr(param)); + myRetVal = -1; +#else + printf("%s : Failed.\n", testid); +#endif + } + + desParam(param); + free(param); + + return myRetVal; +} + diff --git a/allParam/test/filename/f_lowercase_abs.h b/allParam/test/filename/f_lowercase_abs.h new file mode 100644 index 0000000..59f754e --- /dev/null +++ b/allParam/test/filename/f_lowercase_abs.h @@ -0,0 +1,6 @@ +#ifndef F_LOWERCASE_ABS_H +#define F_LOWERCASE_ABS_H + +int f_lowercase_abs(const char *); + +#endif diff --git a/allParam/test/filename/f_lowercase_rel.c b/allParam/test/filename/f_lowercase_rel.c index 1cc9994..bb5a955 100644 --- a/allParam/test/filename/f_lowercase_rel.c +++ b/allParam/test/filename/f_lowercase_rel.c @@ -1,11 +1,13 @@ #include +#include #include #include #include "f_lowercase_rel.h" -int f_lowercase_rel(const char *testid, const Param *param) { +int f_lowercase_rel(const char *testid) { + Param *param; char *name = "file"; char *idx = "rname"; char result[PARAM_MAX_VALUE_LEN]; @@ -17,8 +19,11 @@ int f_lowercase_rel(const char *testid, const Param *param) { printf("%s : Param_getFilename: Lowercase input on correct statements.\n", testid); #endif + param = malloc(sizeof(Param)); + conParam(param); + retVal = Param_getFilename(param, name, idx, &rows, result); - if ((rows == 1) && result && (strcmp(result, "test/blob/BLOB") == 0) && (retVal == 0)) { + if ((rows == 1) && result && (strcmp(result, "blob/test0.blob") == 0) && (retVal == 0)) { myRetVal = 0; printf("%s : Passed.\n", testid); } else { @@ -30,6 +35,10 @@ int f_lowercase_rel(const char *testid, const Param *param) { printf("%s : Failed.\n", testid); #endif } + + desParam(param); + free(param); + return myRetVal; } diff --git a/allParam/test/filename/f_lowercase_rel.h b/allParam/test/filename/f_lowercase_rel.h index 1a3e4b5..994daea 100644 --- a/allParam/test/filename/f_lowercase_rel.h +++ b/allParam/test/filename/f_lowercase_rel.h @@ -1,8 +1,6 @@ #ifndef F_LOWERCASE_REL_H #define F_LOWERCASE_REL_H -#include - -int f_lowercase_rel(const char *, const Param *); +int f_lowercase_rel(const char *); #endif diff --git a/allParam/test/filename/f_lowercase_rel_no_basedir.c b/allParam/test/filename/f_lowercase_rel_no_basedir.c new file mode 100644 index 0000000..2333c9b --- /dev/null +++ b/allParam/test/filename/f_lowercase_rel_no_basedir.c @@ -0,0 +1,45 @@ +#include +#include +#include + +#include + +#include "f_lowercase_rel_no_basedir.h" + +int f_lowercase_rel_no_basedir(const char *testid) { + Param *param; + char *name = "file"; + char *idx = "rname"; + char result[PARAM_MAX_VALUE_LEN]; + int rows; + int retVal; + int myRetVal; + +#ifdef VERBOSE + printf("%s : Param_getFilename: Lowercase input on correct statements.\n", testid); + printf("%s : No glob(basedir) specified in parameter source.\n", testid); +#endif + + param = malloc(sizeof(Param)); + conSetupParam(param, "test"); + + retVal = Param_getFilename(param, name, idx, &rows, result); + if ((rows == 1) && result && (strcmp(result, "test0.blob") == 0) && (retVal == 0)) { + myRetVal = 0; + printf("%s : Passed.\n", testid); + } else { +#ifdef VERBOSE + printf("%s : Failed. Rows: %d, result: \'%s\', return Value: %d.\n", testid, rows, result, retVal); + printf("%s : Error string: %s\n", testid, Param_getErrStr(param)); + myRetVal = -1; +#else + printf("%s : Failed.\n", testid); +#endif + } + + desParam(param); + free(param); + + return myRetVal; +} + diff --git a/allParam/test/filename/f_lowercase_rel_no_basedir.h b/allParam/test/filename/f_lowercase_rel_no_basedir.h new file mode 100644 index 0000000..7fb6df1 --- /dev/null +++ b/allParam/test/filename/f_lowercase_rel_no_basedir.h @@ -0,0 +1,6 @@ +#ifndef F_LOWERCASE_REL_NO_BASEDIR_H +#define F_LOWERCASE_REL_NO_BASEDIR_H + +int f_lowercase_rel_no_basedir(const char *); + +#endif diff --git a/allParam/test/filename/fa_lowercase.c b/allParam/test/filename/fa_lowercase.c new file mode 100644 index 0000000..2961e17 --- /dev/null +++ b/allParam/test/filename/fa_lowercase.c @@ -0,0 +1,74 @@ +#include +#include +#include + +#include + +#include "fa_lowercase.h" + +#define NUM1 8 + +int fa_lowercase(const char *testid) { + Param *param; + char *name = "file"; + char *idx = "namea"; + char *result[NUM1]; + int rows; + int retVal; + int myRetVal; + int i; + +#ifdef VERBOSE + printf("%s : Param_getFilenameArray: Lowercase input on correct statements.\n", testid); + printf("%s : glob(basedir) set to \"blob\" in the parameter source.\n", testid); +#endif + + param = malloc(sizeof(Param)); + conParam(param); + + for (i = 0 ; i < NUM1 ; i++) { + result[i] = malloc(PARAM_MAX_VALUE_LEN * sizeof(char)); + } + + retVal = Param_getFilenameArray(param, name, idx, NUM1, &rows, result); + if ((rows == NUM1) && + result[0] && (strcmp(result[0], "blob/test1.blob") == 0) && + result[1] && (strcmp(result[1], "/test0.blob") == 0) && + result[2] && (strcmp(result[2], "blob/test3.blob") == 0) && + result[3] && (strcmp(result[3], "/test2.blob") == 0) && + result[4] && (strcmp(result[4], "blob/test5.blob") == 0) && + result[5] && (strcmp(result[5], "/test4.blob") == 0) && + result[6] && (strcmp(result[6], "blob/test7.blob") == 0) && + result[7] && (strcmp(result[7], "/test6.blob") == 0) && + (retVal == 0)) { + myRetVal = 0; + printf("%s : Passed.\n", testid); + } else { +#ifdef VERBOSE + printf("%s : Failed. Rows: %d, result array:\n%s\n\n%s\n\n%s\n\n%s\n\n%s\n\n%s\n\n%s\n\n%s\nreturn Value: %d.\n", testid, rows, + result[0], + result[1], + result[2], + result[3], + result[4], + result[5], + result[6], + result[7], + retVal); + printf("%s : Error string: %s\n", testid, Param_getErrStr(param)); +#else + printf("%s : Failed.\n", testid); +#endif + myRetVal = -1; + } + + for (i = 0 ; i < NUM1 ; i++) { + free(result[i]); + } + + desParam(param); + free(param); + + return myRetVal; +} + diff --git a/allParam/test/filename/fa_lowercase.h b/allParam/test/filename/fa_lowercase.h new file mode 100644 index 0000000..44d2002 --- /dev/null +++ b/allParam/test/filename/fa_lowercase.h @@ -0,0 +1,6 @@ +#ifndef FA_LOWERCASE_H +#define FA_LOWERCASE_H + +int fa_lowercase(const char *); + +#endif diff --git a/allParam/test/filename/fa_lowercase_no_basedir.c b/allParam/test/filename/fa_lowercase_no_basedir.c new file mode 100644 index 0000000..c81af1d --- /dev/null +++ b/allParam/test/filename/fa_lowercase_no_basedir.c @@ -0,0 +1,74 @@ +#include +#include +#include + +#include + +#include "fa_lowercase_no_basedir.h" + +#define NUM1 8 + +int fa_lowercase_no_basedir(const char *testid) { + Param *param; + char *name = "file"; + char *idx = "namea"; + char *result[NUM1]; + int rows; + int retVal; + int myRetVal; + int i; + +#ifdef VERBOSE + printf("%s : Param_getFilenameArray: Lowercase input on correct statements.\n", testid); + printf("%s : No glob(basedir) specified in the parameter source.\n", testid); +#endif + + param = malloc(sizeof(Param)); + conSetupParam(param, "test"); + + for (i = 0 ; i < NUM1 ; i++) { + result[i] = malloc(PARAM_MAX_VALUE_LEN * sizeof(char)); + } + + retVal = Param_getFilenameArray(param, name, idx, NUM1, &rows, result); + if ((rows == NUM1) && + result[0] && (strcmp(result[0], "test1.blob") == 0) && + result[1] && (strcmp(result[1], "/test0.blob") == 0) && + result[2] && (strcmp(result[2], "test3.blob") == 0) && + result[3] && (strcmp(result[3], "/test2.blob") == 0) && + result[4] && (strcmp(result[4], "test5.blob") == 0) && + result[5] && (strcmp(result[5], "/test4.blob") == 0) && + result[6] && (strcmp(result[6], "test7.blob") == 0) && + result[7] && (strcmp(result[7], "/test6.blob") == 0) && + (retVal == 0)) { + myRetVal = 0; + printf("%s : Passed.\n", testid); + } else { +#ifdef VERBOSE + printf("%s : Failed. Rows: %d, result array:\n%s\n\n%s\n\n%s\n\n%s\n\n%s\n\n%s\n\n%s\n\n%s\nreturn Value: %d.\n", testid, rows, + result[0], + result[1], + result[2], + result[3], + result[4], + result[5], + result[6], + result[7], + retVal); + printf("%s : Error string: %s\n", testid, Param_getErrStr(param)); +#else + printf("%s : Failed.\n", testid); +#endif + myRetVal = -1; + } + + for (i = 0 ; i < NUM1 ; i++) { + free(result[i]); + } + + desParam(param); + free(param); + + return myRetVal; +} + diff --git a/allParam/test/filename/fa_lowercase_no_basedir.h b/allParam/test/filename/fa_lowercase_no_basedir.h new file mode 100644 index 0000000..45d09e3 --- /dev/null +++ b/allParam/test/filename/fa_lowercase_no_basedir.h @@ -0,0 +1,6 @@ +#ifndef FA_LOWERCASE_NO_BASEDIR_H +#define FA_LOWERCASE_NO_BASEDIR_H + +int fa_lowercase_no_basedir(const char *); + +#endif diff --git a/allParam/test/middle.c b/allParam/test/middle.c index c623f51..9ccd053 100644 --- a/allParam/test/middle.c +++ b/allParam/test/middle.c @@ -1,11 +1,7 @@ int main(int argc, char *argv[]) { - Param *param; int errors = 0; - param = malloc(sizeof(Param)); - conParam(param); - printf("================================================================================\n"); printf("%s : Starting test ...\n", argv[0]); printf("================================================================================\n"); diff --git a/allParam/test/param.tcl b/allParam/test/param.tcl index ab1740d..1f3be28 100644 --- a/allParam/test/param.tcl +++ b/allParam/test/param.tcl @@ -1,7 +1,9 @@ set glob(basedir) blob -set file(rname) test.blob -set file(aname) /test.blob +set file(rname) test0.blob +set file(aname) /test0.blob +set file(rnamellarge) test1.blob +set file(rnameodd) test2.blob set file(namea0) test1.blob set file(namea1) /test0.blob @@ -13,6 +15,7 @@ set file(namea6) test7.blob set file(namea7) /test6.blob set file(namea9) test10.blob +set tname(twhitespace) "test100 whith whitespace" set tname(tstring) test100 set tname(tint) 100 diff --git a/allParam/test/s_store.tcl b/allParam/test/s_store.tcl new file mode 100644 index 0000000..1c9a1c8 --- /dev/null +++ b/allParam/test/s_store.tcl @@ -0,0 +1 @@ +set tname(tnewstr) "tnewvalue" diff --git a/allParam/test/s_store_existing.tcl b/allParam/test/s_store_existing.tcl new file mode 100644 index 0000000..6a9e774 --- /dev/null +++ b/allParam/test/s_store_existing.tcl @@ -0,0 +1 @@ +set tname(tstring) "tnewvalue" diff --git a/allParam/test/s_store_multiple.tcl b/allParam/test/s_store_multiple.tcl new file mode 100644 index 0000000..5774114 --- /dev/null +++ b/allParam/test/s_store_multiple.tcl @@ -0,0 +1,2 @@ +set tname(tnewstr) "toldvaluex" +set tname(tnewstr) "tnewvalue" diff --git a/allParam/test/s_store_whitespace.tcl b/allParam/test/s_store_whitespace.tcl new file mode 100644 index 0000000..af6f6c2 --- /dev/null +++ b/allParam/test/s_store_whitespace.tcl @@ -0,0 +1 @@ +set tname(tnewstr) "test new value" diff --git a/allParam/test/string/s_array.c b/allParam/test/string/s_array.c index e0b97b6..233b1c2 100644 --- a/allParam/test/string/s_array.c +++ b/allParam/test/string/s_array.c @@ -1,11 +1,13 @@ #include +#include #include #include #include "s_array.h" -int s_array(const char *testid, const Param *param) { +int s_array(const char *testid) { + Param *param; char *name = "tname"; char *idx = "tstringa"; char result[PARAM_MAX_VALUE_LEN]; @@ -17,6 +19,9 @@ int s_array(const char *testid, const Param *param) { printf("%s : Param_getString: Request for Array value.\n", testid); #endif + param = malloc(sizeof(Param)); + conParam(param); + retVal = Param_getString(param, name, idx, &rows, result); if ((rows == 1) && result && (strcmp(result, "test1") == 0) && @@ -32,6 +37,10 @@ int s_array(const char *testid, const Param *param) { #endif myRetVal = -1; } + + desParam(param); + free(param); + return myRetVal; } diff --git a/allParam/test/string/s_array.h b/allParam/test/string/s_array.h index 107f344..9bc19e8 100644 --- a/allParam/test/string/s_array.h +++ b/allParam/test/string/s_array.h @@ -1,8 +1,6 @@ #ifndef S_ARRAY_H #define S_ARRAY_H -#include - -int s_array(const char *, const Param *); +int s_array(const char *); #endif diff --git a/allParam/test/string/s_int_available.c b/allParam/test/string/s_int_available.c index adde0a9..a90930f 100644 --- a/allParam/test/string/s_int_available.c +++ b/allParam/test/string/s_int_available.c @@ -1,11 +1,13 @@ #include +#include #include #include #include "s_int_available.h" -int s_int_available(const char *testid, const Param *param) { +int s_int_available(const char *testid) { + Param *param; char *name = "tname"; char *idx = "tint"; char result[PARAM_MAX_VALUE_LEN]; @@ -17,6 +19,9 @@ int s_int_available(const char *testid, const Param *param) { printf("%s : Param_getString: String is wanted but int-like value found.\n", testid); #endif + param = malloc(sizeof(Param)); + conParam(param); + retVal = Param_getString(param, name, idx, &rows, result); if ((rows == 1) && result && (strcmp(result, "100") == 0) && (retVal == 0)) { myRetVal = 0; @@ -30,6 +35,10 @@ int s_int_available(const char *testid, const Param *param) { #endif myRetVal = -1; } + + desParam(param); + free(param); + return myRetVal; } diff --git a/allParam/test/string/s_int_available.h b/allParam/test/string/s_int_available.h index 90e8436..333ef6e 100644 --- a/allParam/test/string/s_int_available.h +++ b/allParam/test/string/s_int_available.h @@ -1,8 +1,6 @@ #ifndef S_INT_AVAILABLE_H #define S_INT_AVAILABLE_H -#include - -int s_int_available(const char *, const Param *); +int s_int_available(const char *); #endif diff --git a/allParam/test/string/s_lowercase.c b/allParam/test/string/s_lowercase.c index 452ccd0..d03b0d5 100644 --- a/allParam/test/string/s_lowercase.c +++ b/allParam/test/string/s_lowercase.c @@ -1,11 +1,13 @@ #include +#include #include #include #include "s_lowercase.h" -int s_lowercase(const char *testid, const Param *param) { +int s_lowercase(const char *testid) { + Param *param; char *name = "tname"; char *idx = "tstring"; char result[PARAM_MAX_VALUE_LEN]; @@ -17,6 +19,9 @@ int s_lowercase(const char *testid, const Param *param) { printf("%s : Param_getString: Lowercase input on correct statements.\n", testid); #endif + param = malloc(sizeof(Param)); + conParam(param); + retVal = Param_getString(param, name, idx, &rows, result); if ((rows == 1) && result && (strcmp(result, "test100") == 0) && (retVal == 0)) { myRetVal = 0; @@ -30,6 +35,10 @@ int s_lowercase(const char *testid, const Param *param) { printf("%s : Failed.\n", testid); #endif } + + desParam(param); + free(param); + return myRetVal; } diff --git a/allParam/test/string/s_lowercase.h b/allParam/test/string/s_lowercase.h index 37a1d34..07f419a 100644 --- a/allParam/test/string/s_lowercase.h +++ b/allParam/test/string/s_lowercase.h @@ -1,8 +1,6 @@ #ifndef S_LOWERCASE_H #define S_LOWERCASE_H -#include - -int s_lowercase(const char *, const Param *); +int s_lowercase(const char *); #endif diff --git a/allParam/test/string/s_no_index.c b/allParam/test/string/s_no_index.c index 6e8d5a3..dc5c186 100644 --- a/allParam/test/string/s_no_index.c +++ b/allParam/test/string/s_no_index.c @@ -1,11 +1,13 @@ #include +#include #include #include #include "s_no_index.h" -int s_no_index(const char *testid, const Param *param) { +int s_no_index(const char *testid) { + Param *param; char *name = "tname"; char *idx = "bla"; char result[PARAM_MAX_VALUE_LEN]; @@ -17,6 +19,9 @@ int s_no_index(const char *testid, const Param *param) { printf("%s : Param_getString: Non-existing idx.\n", testid); #endif + param = malloc(sizeof(Param)); + conParam(param); + retVal = Param_getString(param, name, idx, &rows, result); if ((rows == 0) && (retVal == 0)) { myRetVal = 0; @@ -30,6 +35,10 @@ int s_no_index(const char *testid, const Param *param) { #endif myRetVal = -1; } + + desParam(param); + free(param); + return myRetVal; } diff --git a/allParam/test/string/s_no_index.h b/allParam/test/string/s_no_index.h index 3f61605..aff578e 100644 --- a/allParam/test/string/s_no_index.h +++ b/allParam/test/string/s_no_index.h @@ -1,8 +1,6 @@ #ifndef S_NO_INDEX_H #define S_NO_INDEX_H -#include - -int s_no_index(const char *, const Param *); +int s_no_index(const char *); #endif diff --git a/allParam/test/string/s_store.c b/allParam/test/string/s_store.c new file mode 100644 index 0000000..bf92dc1 --- /dev/null +++ b/allParam/test/string/s_store.c @@ -0,0 +1,61 @@ +#include +#include +#include +#include + +#include + +#include "s_store.h" + +int s_store(const char *testid) { + Param *param; + const char *name = "tname"; + const char *idx = "tnewstr"; + const char *tostore = "tnewvalue"; + char result[PARAM_MAX_VALUE_LEN]; + int rows; + int retVal1; + int retVal2; + int myRetVal; + +#ifdef VERBOSE + printf("%s : Param_storeString: Simple.\n", testid); +#endif + + truncate("storage.tcl", 0); + + param = malloc(sizeof(Param)); + conParam(param); + + retVal1 = Param_storeString(param, name, idx, tostore); + retVal2 = Param_getString(param, name, idx, &rows, result); + + desParam(param); + free(param); + + if ((rows == 1) && result && (strcmp(result, tostore) == 0) && (retVal1 == 0) && (retVal2 == 0)) { + if(system("diff storage.tcl s_store.tcl")) { +#ifdef VERBOSE + printf("%s : Failed: Files \"storage.tcl\" and \"s_store.tcl\" differ.\n", testid); + printf("%s : Error string: %s\n", testid, Param_getErrStr(param)); + myRetVal = -1; +#else + printf("%s : Failed.\n", testid); +#endif + } else { + myRetVal = 0; + printf("%s : Passed.\n", testid); + } + } else { +#ifdef VERBOSE + printf("%s : Failed. Rows: %d, result: \'%s\'\nreturn Value of store call: %d\nreturn Value of get call: %d.\n", testid, rows, result, retVal1, retVal2); + printf("%s : Error string: %s\n", testid, Param_getErrStr(param)); + myRetVal = -1; +#else + printf("%s : Failed.\n", testid); +#endif + } + + return myRetVal; +} + diff --git a/allParam/test/string/s_store.h b/allParam/test/string/s_store.h new file mode 100644 index 0000000..f39c079 --- /dev/null +++ b/allParam/test/string/s_store.h @@ -0,0 +1,6 @@ +#ifndef S_STORE_H +#define S_STORE_H + +int s_store(const char *); + +#endif diff --git a/allParam/test/string/s_store_existing.c b/allParam/test/string/s_store_existing.c new file mode 100644 index 0000000..01ffd93 --- /dev/null +++ b/allParam/test/string/s_store_existing.c @@ -0,0 +1,61 @@ +#include +#include +#include +#include + +#include + +#include "s_store_existing.h" + +int s_store_existing(const char *testid) { + Param *param; + const char *name = "tname"; + const char *idx = "tstring"; + const char *tostore = "tnewvalue"; + char result[PARAM_MAX_VALUE_LEN]; + int rows; + int retVal1; + int retVal2; + int myRetVal; + +#ifdef VERBOSE + printf("%s : Param_storeString: Store a Parameter already existing in the source.\n", testid); +#endif + + truncate("storage.tcl", 0); + + param = malloc(sizeof(Param)); + conParam(param); + + retVal1 = Param_storeString(param, name, idx, tostore); + retVal2 = Param_getString(param, name, idx, &rows, result); + + desParam(param); + free(param); + + if ((rows == 1) && result && (strcmp(result, tostore) == 0) && (retVal1 == 0) && (retVal2 == 0)) { + if(system("diff storage.tcl s_store_existing.tcl")) { +#ifdef VERBOSE + printf("%s : Failed: Files \"storage.tcl\" and \"s_store_existing.tcl\" differ.\n", testid); + printf("%s : Error string: %s\n", testid, Param_getErrStr(param)); + myRetVal = -1; +#else + printf("%s : Failed.\n", testid); +#endif + } else { + myRetVal = 0; + printf("%s : Passed.\n", testid); + } + } else { +#ifdef VERBOSE + printf("%s : Failed. Rows: %d, result: \'%s\'\nreturn Value of store call: %d\nreturn Value of get call: %d.\n", testid, rows, result, retVal1, retVal2); + printf("%s : Error string: %s\n", testid, Param_getErrStr(param)); + myRetVal = -1; +#else + printf("%s : Failed.\n", testid); +#endif + } + + return myRetVal; +} + diff --git a/allParam/test/string/s_store_existing.h b/allParam/test/string/s_store_existing.h new file mode 100644 index 0000000..becab49 --- /dev/null +++ b/allParam/test/string/s_store_existing.h @@ -0,0 +1,6 @@ +#ifndef S_STORE_H +#define S_STORE_H + +int s_store_existing(const char *); + +#endif diff --git a/allParam/test/string/s_store_multiple.c b/allParam/test/string/s_store_multiple.c new file mode 100644 index 0000000..e994363 --- /dev/null +++ b/allParam/test/string/s_store_multiple.c @@ -0,0 +1,64 @@ +#include +#include +#include +#include + +#include + +#include "s_store_multiple.h" + +int s_store_multiple(const char *testid) { + Param *param; + const char *name = "tname"; + const char *idx = "tnewstr"; + const char *old = "toldvaluex"; + const char *new = "tnewvalue"; + char result[PARAM_MAX_VALUE_LEN]; + int rows; + int retVal1; + int retVal2; + int retVal3; + int myRetVal; + +#ifdef VERBOSE + printf("%s : Param_storeString: Storing a value multiple.\n", testid); +#endif + + truncate("storage.tcl", 0); + + param = malloc(sizeof(Param)); + conParam(param); + + retVal1 = Param_storeString(param, name, idx, old); + retVal2 = Param_storeString(param, name, idx, new); + retVal3 = Param_getString(param, name, idx, &rows, result); + + desParam(param); + free(param); + + if ((rows == 1) && result && (strcmp(result, new) == 0) && (retVal1 == 0) && (retVal2 == 0) && (retVal3 == 0)) { + if(system("diff storage.tcl s_store_multiple.tcl")) { +#ifdef VERBOSE + printf("%s : Failed: Files \"storage.tcl\" and \"s_store_multiple.tcl\" differ.\n", testid); + printf("%s : Error string: %s\n", testid, Param_getErrStr(param)); + myRetVal = -1; +#else + printf("%s : Failed.\n", testid); +#endif + } else { + myRetVal = 0; + printf("%s : Passed.\n", testid); + } + } else { +#ifdef VERBOSE + printf("%s : Failed. Rows: %d, result: \'%s\'\nreturn Value of first store call: %d\nreturn Value of second store call: %d\nreturn Value of get call: %d.\n", testid, rows, result, retVal1, retVal2, retVal3); + printf("%s : Error string: %s\n", testid, Param_getErrStr(param)); + myRetVal = -1; +#else + printf("%s : Failed.\n", testid); +#endif + } + + return myRetVal; +} + diff --git a/allParam/test/string/s_store_multiple.h b/allParam/test/string/s_store_multiple.h new file mode 100644 index 0000000..b9983ef --- /dev/null +++ b/allParam/test/string/s_store_multiple.h @@ -0,0 +1,6 @@ +#ifndef S_STORE_MULTIPLE_H +#define S_STORE_MULTIPLE_H + +int s_store_multiple(const char *); + +#endif diff --git a/allParam/test/string/s_store_whitespace.c b/allParam/test/string/s_store_whitespace.c new file mode 100644 index 0000000..a2da2d9 --- /dev/null +++ b/allParam/test/string/s_store_whitespace.c @@ -0,0 +1,61 @@ +#include +#include +#include +#include + +#include + +#include "s_store_whitespace.h" + +int s_store_whitespace(const char *testid) { + Param *param; + const char *name = "tname"; + const char *idx = "tnewstr"; + const char *tostore = "test new value"; + char result[PARAM_MAX_VALUE_LEN]; + int rows; + int retVal1; + int retVal2; + int myRetVal; + +#ifdef VERBOSE + printf("%s : Param_storeString: Store a string containing a whitespace.\n", testid); +#endif + + truncate("storage.tcl", 0); + + param = malloc(sizeof(Param)); + conParam(param); + + retVal1 = Param_storeString(param, name, idx, tostore); + retVal2 = Param_getString(param, name, idx, &rows, result); + + desParam(param); + free(param); + + if ((rows == 1) && result && (strcmp(result, tostore) == 0) && (retVal1 == 0) && (retVal2 == 0)) { + if(system("diff storage.tcl s_store_whitespace.tcl")) { +#ifdef VERBOSE + printf("%s : Failed: Files \"storage.tcl\" and \"s_store_whitespace.tcl\" differ.\n", testid); + printf("%s : Error string: %s\n", testid, Param_getErrStr(param)); + myRetVal = -1; +#else + printf("%s : Failed.\n", testid); +#endif + } else { + myRetVal = 0; + printf("%s : Passed.\n", testid); + } + } else { +#ifdef VERBOSE + printf("%s : Failed. Rows: %d, result: \'%s\', return Value of store call: %d, return Value of get call: %d.\n", testid, rows, result, retVal1, retVal2); + printf("%s : Error string: %s\n", testid, Param_getErrStr(param)); + myRetVal = -1; +#else + printf("%s : Failed.\n", testid); +#endif + } + + return myRetVal; +} + diff --git a/allParam/test/string/s_store_whitespace.h b/allParam/test/string/s_store_whitespace.h new file mode 100644 index 0000000..2d027f2 --- /dev/null +++ b/allParam/test/string/s_store_whitespace.h @@ -0,0 +1,6 @@ +#ifndef S_STORE_WHITESPACE_H +#define S_STORE_WHITESPACE_H + +int s_store_whitespace(const char *); + +#endif diff --git a/allParam/test/string/s_uppercase.c b/allParam/test/string/s_uppercase.c index c87a4ed..147a4c6 100644 --- a/allParam/test/string/s_uppercase.c +++ b/allParam/test/string/s_uppercase.c @@ -1,11 +1,13 @@ #include +#include #include #include #include "s_uppercase.h" -int s_uppercase(const char *testid, const Param *param) { +int s_uppercase(const char *testid) { + Param *param; char *name = "TNAME"; char *idx = "TSTRING"; char result[PARAM_MAX_VALUE_LEN]; @@ -17,6 +19,9 @@ int s_uppercase(const char *testid, const Param *param) { printf("%s : Param_getString: Uppercase input on correct statements.\n", testid); #endif + param = malloc(sizeof(Param)); + conParam(param); + retVal = Param_getString(param, name, idx, &rows, result); if ((rows == 1) && result && (strcmp(result, "test100") == 0) && (retVal == 0)) { myRetVal = 0; @@ -30,6 +35,10 @@ int s_uppercase(const char *testid, const Param *param) { #endif myRetVal = -1; } + + desParam(param); + free(param); + return myRetVal; } diff --git a/allParam/test/string/s_uppercase.h b/allParam/test/string/s_uppercase.h index 442510a..bc665a5 100644 --- a/allParam/test/string/s_uppercase.h +++ b/allParam/test/string/s_uppercase.h @@ -1,8 +1,6 @@ #ifndef S_UPPERCASE_H #define S_UPPERCASE_H -#include - -int s_uppercase(const char *, const Param *); +int s_uppercase(const char *); #endif diff --git a/allParam/test/string/s_whitespace.c b/allParam/test/string/s_whitespace.c new file mode 100644 index 0000000..9a30a22 --- /dev/null +++ b/allParam/test/string/s_whitespace.c @@ -0,0 +1,44 @@ +#include +#include +#include + +#include + +#include "s_whitespace.h" + +int s_whitespace(const char *testid) { + Param *param; + char *name = "tname"; + char *idx = "twhitespace"; + char result[PARAM_MAX_VALUE_LEN]; + int rows; + int retVal; + int myRetVal; + +#ifdef VERBOSE + printf("%s : Param_getString: Lowercase input on correct statements.\n", testid); +#endif + + param = malloc(sizeof(Param)); + conParam(param); + + retVal = Param_getString(param, name, idx, &rows, result); + if ((rows == 1) && result && (strcmp(result, "test100 whith whitespace") == 0) && (retVal == 0)) { + myRetVal = 0; + printf("%s : Passed.\n", testid); + } else { +#ifdef VERBOSE + printf("%s : Failed. Rows: %d, result: \'%s\', return Value: %d.\n", testid, rows, result, retVal); + printf("%s : Error string: %s\n", testid, Param_getErrStr(param)); + myRetVal = -1; +#else + printf("%s : Failed.\n", testid); +#endif + } + + desParam(param); + free(param); + + return myRetVal; +} + diff --git a/allParam/test/string/s_whitespace.h b/allParam/test/string/s_whitespace.h new file mode 100644 index 0000000..e390993 --- /dev/null +++ b/allParam/test/string/s_whitespace.h @@ -0,0 +1,6 @@ +#ifndef S_WHITESPACE_H +#define S_WHITESPACE_H + +int s_whitespace(const char *); + +#endif diff --git a/allParam/test/string/sa_int_available.c b/allParam/test/string/sa_int_available.c index 73fb1a3..48b5abe 100644 --- a/allParam/test/string/sa_int_available.c +++ b/allParam/test/string/sa_int_available.c @@ -1,12 +1,15 @@ #include -#include #include +#include #include #include "sa_int_available.h" -int sa_int_available(const char *testid, const Param *param) { +#define NUM2 32 + +int sa_int_available(const char *testid) { + Param *param; char *name = "tname"; char *idx = "tinta"; char *result[NUM2]; @@ -15,13 +18,17 @@ int sa_int_available(const char *testid, const Param *param) { int myRetVal; int i; - for (i = 0 ; i < NUM2 ; i++) { - result[i] = malloc(PARAM_MAX_VALUE_LEN * sizeof(char)); - } #ifdef VERBOSE printf("%s : Param_getStringArray: String is wanted but Int-like values found.\n", testid); #endif + param = malloc(sizeof(Param)); + conParam(param); + + for (i = 0 ; i < NUM2 ; i++) { + result[i] = malloc(PARAM_MAX_VALUE_LEN * sizeof(char)); + } + retVal = Param_getStringArray(param, name, idx, NUM2, &rows, result); if ((rows == NUM2) && result[0] && (strcmp(result[0], "1") == 0) && @@ -71,6 +78,10 @@ int sa_int_available(const char *testid, const Param *param) { for (i = 0 ; i < NUM2 ; i++) { free(result[i]); } + + desParam(param); + free(param); + return myRetVal; } diff --git a/allParam/test/string/sa_int_available.h b/allParam/test/string/sa_int_available.h index d73f9c4..1f6984b 100644 --- a/allParam/test/string/sa_int_available.h +++ b/allParam/test/string/sa_int_available.h @@ -1,10 +1,6 @@ #ifndef SA_INT_AVAILABLE_H #define SA_INT_AVAILABLE_H -#include - -#define NUM2 32 - -int sa_int_available(const char *, const Param *); +int sa_int_available(const char *); #endif diff --git a/allParam/test/string/sa_long_array.c b/allParam/test/string/sa_long_array.c index 7e459e9..f78ad15 100644 --- a/allParam/test/string/sa_long_array.c +++ b/allParam/test/string/sa_long_array.c @@ -1,12 +1,16 @@ #include -#include #include +#include #include #include "sa_long_array.h" -int sa_long_array(const char *testid, const Param *param) { +#define NUM1 8 +#define NUM5 4 + +int sa_long_array(const char *testid) { + Param *param; char *name = "tname"; char *idx = "tstringa"; char *result[NUM5]; @@ -15,13 +19,17 @@ int sa_long_array(const char *testid, const Param *param) { int myRetVal; int i; - for (i = 0 ; i < NUM5 ; i++) { - result[i] = malloc(PARAM_MAX_VALUE_LEN * sizeof(char)); - } #ifdef VERBOSE printf("%s : Param_getStringArray: To many array members available.\n", testid); #endif + param = malloc(sizeof(Param)); + conParam(param); + + for (i = 0 ; i < NUM5 ; i++) { + result[i] = malloc(PARAM_MAX_VALUE_LEN * sizeof(char)); + } + retVal = Param_getStringArray(param, name, idx, NUM5, &rows, result); if ((rows == NUM5) && result[0] && (strcmp(result[0], "test1") == 0) && @@ -43,6 +51,10 @@ int sa_long_array(const char *testid, const Param *param) { for (i = 0 ; i < NUM5 ; i++) { free(result[i]); } + + desParam(param); + free(param); + return myRetVal; } diff --git a/allParam/test/string/sa_long_array.h b/allParam/test/string/sa_long_array.h index d87e4e5..7529248 100644 --- a/allParam/test/string/sa_long_array.h +++ b/allParam/test/string/sa_long_array.h @@ -1,11 +1,6 @@ #ifndef SA_LONG_ARRAY_H #define SA_LONG_ARRAY_H -#include - -#define NUM1 8 -#define NUM5 4 - -int sa_long_array(const char *, const Param *); +int sa_long_array(const char *); #endif diff --git a/allParam/test/string/sa_lowercase.c b/allParam/test/string/sa_lowercase.c index 6c38c2d..2bef853 100644 --- a/allParam/test/string/sa_lowercase.c +++ b/allParam/test/string/sa_lowercase.c @@ -1,12 +1,15 @@ #include -#include #include +#include #include #include "sa_lowercase.h" -int sa_lowercase(const char *testid, const Param *param) { +#define NUM1 8 + +int sa_lowercase(const char *testid) { + Param *param; char *name = "tname"; char *idx = "tstringa"; char *result[NUM1]; @@ -15,13 +18,17 @@ int sa_lowercase(const char *testid, const Param *param) { int myRetVal; int i; - for (i = 0 ; i < NUM1 ; i++) { - result[i] = malloc(PARAM_MAX_VALUE_LEN * sizeof(char)); - } #ifdef VERBOSE printf("%s : Param_getStringArray: Lowercase input on correct statements.\n", testid); #endif + param = malloc(sizeof(Param)); + conParam(param); + + for (i = 0 ; i < NUM1 ; i++) { + result[i] = malloc(PARAM_MAX_VALUE_LEN * sizeof(char)); + } + retVal = Param_getStringArray(param, name, idx, NUM1, &rows, result); if ((rows == NUM1) && result[0] && (strcmp(result[0], "test1") == 0) && @@ -53,9 +60,14 @@ int sa_lowercase(const char *testid, const Param *param) { #endif myRetVal = -1; } + for (i = 0 ; i < NUM1 ; i++) { free(result[i]); } + + desParam(param); + free(param); + return myRetVal; } diff --git a/allParam/test/string/sa_lowercase.h b/allParam/test/string/sa_lowercase.h index 07ec0c5..e6169b0 100644 --- a/allParam/test/string/sa_lowercase.h +++ b/allParam/test/string/sa_lowercase.h @@ -1,10 +1,6 @@ #ifndef SA_LOWERCASE_H #define SA_LOWERCASE_H -#include - -#define NUM1 8 - -int sa_lowercase(const char *, const Param *); +int sa_lowercase(const char *); #endif diff --git a/allParam/test/string/sa_no_index.c b/allParam/test/string/sa_no_index.c index dac8f49..0baab58 100644 --- a/allParam/test/string/sa_no_index.c +++ b/allParam/test/string/sa_no_index.c @@ -1,12 +1,15 @@ #include -#include #include +#include #include #include "sa_no_index.h" -int sa_no_index(const char *testid, const Param *param) { +#define NUM1 8 + +int sa_no_index(const char *testid) { + Param *param; char *name = "tname"; char *idx = "bla"; char *result[NUM1]; @@ -15,13 +18,17 @@ int sa_no_index(const char *testid, const Param *param) { int myRetVal; int i; - for (i = 0 ; i < NUM1 ; i++) { - result[i] = malloc(PARAM_MAX_VALUE_LEN * sizeof(char)); - } #ifdef VERBOSE printf("%s : Param_getStringArray: Non-existing idx.\n", testid); #endif + param = malloc(sizeof(Param)); + conParam(param); + + for (i = 0 ; i < NUM1 ; i++) { + result[i] = malloc(PARAM_MAX_VALUE_LEN * sizeof(char)); + } + retVal = Param_getStringArray(param, name, idx, NUM1, &rows, result); if ((rows == 0) && (retVal == 0)) { myRetVal = 0; @@ -35,9 +42,14 @@ int sa_no_index(const char *testid, const Param *param) { #endif myRetVal = -1; } + for (i = 0 ; i < NUM1 ; i++) { free(result[i]); } + + desParam(param); + free(param); + return myRetVal; } diff --git a/allParam/test/string/sa_no_index.h b/allParam/test/string/sa_no_index.h index fda7240..9847930 100644 --- a/allParam/test/string/sa_no_index.h +++ b/allParam/test/string/sa_no_index.h @@ -1,10 +1,6 @@ #ifndef SA_NO_INDEX_H #define SA_NO_INDEX_H -#include - -#define NUM1 8 - -int sa_no_index(const char *, const Param *); +int sa_no_index(const char *); #endif diff --git a/allParam/test/string/sa_scalar.c b/allParam/test/string/sa_scalar.c index 4699bf8..f072735 100644 --- a/allParam/test/string/sa_scalar.c +++ b/allParam/test/string/sa_scalar.c @@ -1,12 +1,15 @@ #include -#include #include +#include #include #include "sa_scalar.h" -int sa_scalar(const char *testid, const Param *param) { +#define NUM1 8 + +int sa_scalar(const char *testid) { + Param *param; char *name = "tname"; char *idx = "tstring"; char *result[NUM1]; @@ -15,13 +18,17 @@ int sa_scalar(const char *testid, const Param *param) { int retVal; int myRetVal; - for (i = 0 ; i < NUM1 ; i++) { - result[i] = malloc(PARAM_MAX_VALUE_LEN * sizeof(char)); - } #ifdef VERBOSE printf("%s : Param_getStringArray: Request for a scalar value.\n", testid); #endif + param = malloc(sizeof(Param)); + conParam(param); + + for (i = 0 ; i < NUM1 ; i++) { + result[i] = malloc(PARAM_MAX_VALUE_LEN * sizeof(char)); + } + retVal = Param_getStringArray(param, name, idx, NUM1, &rows, result); if ((rows == 1) && result && (strcmp(result[0], "test100") == 0) && (retVal == 0)) { myRetVal = 0; @@ -35,9 +42,14 @@ int sa_scalar(const char *testid, const Param *param) { #endif myRetVal = -1; } + for (i = 0 ; i < NUM1 ; i++) { free(result[i]); } + + desParam(param); + free(param); + return myRetVal; } diff --git a/allParam/test/string/sa_scalar.h b/allParam/test/string/sa_scalar.h index 1eff646..9f38e42 100644 --- a/allParam/test/string/sa_scalar.h +++ b/allParam/test/string/sa_scalar.h @@ -1,10 +1,6 @@ #ifndef SA_SCALAR_H #define SA_SCALAR_H -#include - -#define NUM1 8 - -int sa_scalar(const char *, const Param *); +int sa_scalar(const char *); #endif diff --git a/allParam/test/string/sa_short_array.c b/allParam/test/string/sa_short_array.c index f46e62c..6296ab7 100644 --- a/allParam/test/string/sa_short_array.c +++ b/allParam/test/string/sa_short_array.c @@ -1,12 +1,16 @@ #include -#include #include +#include #include #include "sa_short_array.h" -int sa_short_array(const char *testid, const Param *param) { +#define NUM1 8 +#define NUM3 16 + +int sa_short_array(const char *testid) { + Param *param; char *name = "tname"; char *idx = "tstringa"; char *result[NUM3]; @@ -15,13 +19,17 @@ int sa_short_array(const char *testid, const Param *param) { int myRetVal; int i; - for (i = 0 ; i < NUM3 ; i++) { - result[i] = malloc(PARAM_MAX_VALUE_LEN * sizeof(char)); - } #ifdef VERBOSE printf("%s : Param_getStringArray: To few array members available.\n", testid); #endif + param = malloc(sizeof(Param)); + conParam(param); + + for (i = 0 ; i < NUM3 ; i++) { + result[i] = malloc(PARAM_MAX_VALUE_LEN * sizeof(char)); + } + retVal = Param_getStringArray(param, name, idx, NUM3, &rows, result); if ((rows == NUM1) && result[0] && (strcmp(result[0], "test1") == 0) && @@ -44,9 +52,14 @@ int sa_short_array(const char *testid, const Param *param) { #endif myRetVal = -1; } + for (i = 0 ; i < NUM3 ; i++) { free(result[i]); } + + desParam(param); + free(param); + return myRetVal; } diff --git a/allParam/test/string/sa_short_array.h b/allParam/test/string/sa_short_array.h index 95fd0d6..d46d5c5 100644 --- a/allParam/test/string/sa_short_array.h +++ b/allParam/test/string/sa_short_array.h @@ -1,11 +1,6 @@ #ifndef SA_SHORT_ARRAY_H #define SA_SHORT_ARRAY_H -#include - -#define NUM1 8 -#define NUM3 16 - -int sa_short_array(const char *, const Param *); +int sa_short_array(const char *); #endif diff --git a/allParam/test/string/sa_uppercase.c b/allParam/test/string/sa_uppercase.c index 33c3dad..b5dbb3d 100644 --- a/allParam/test/string/sa_uppercase.c +++ b/allParam/test/string/sa_uppercase.c @@ -1,12 +1,15 @@ #include -#include #include +#include #include #include "sa_uppercase.h" -int sa_uppercase(const char *testid, const Param *param) { +#define NUM1 8 + +int sa_uppercase(const char *testid) { + Param *param; char *name = "TNAME"; char *idx = "TSTRINGA"; char *result[NUM1]; @@ -15,13 +18,17 @@ int sa_uppercase(const char *testid, const Param *param) { int myRetVal; int i; - for (i = 0 ; i < NUM1 ; i++) { - result[i] = malloc(PARAM_MAX_VALUE_LEN * sizeof(char)); - } #ifdef VERBOSE printf("%s : Param_getStringArray: Uppercase input on correct statements.\n", testid); #endif + param = malloc(sizeof(Param)); + conParam(param); + + for (i = 0 ; i < NUM1 ; i++) { + result[i] = malloc(PARAM_MAX_VALUE_LEN * sizeof(char)); + } + retVal = Param_getStringArray(param, name, idx, NUM1, &rows, result); if ((rows == NUM1) && result[0] && (strcmp(result[0], "test1") == 0) && @@ -53,9 +60,14 @@ int sa_uppercase(const char *testid, const Param *param) { #endif myRetVal = -1; } + for (i = 0 ; i < NUM1 ; i++) { free(result[i]); } + + desParam(param); + free(param); + return myRetVal; } diff --git a/allParam/test/string/sa_uppercase.h b/allParam/test/string/sa_uppercase.h index 2ab07e6..96b634b 100644 --- a/allParam/test/string/sa_uppercase.h +++ b/allParam/test/string/sa_uppercase.h @@ -1,10 +1,6 @@ #ifndef SA_UPPERCASE_H #define SA_UPPERCASE_H -#include - -#define NUM1 8 - -int sa_uppercase(const char *, const Param *); +int sa_uppercase(const char *); #endif diff --git a/allParam/test/test_p.tcl b/allParam/test/test_p.tcl index 146eeae..b50fe28 100644 --- a/allParam/test/test_p.tcl +++ b/allParam/test/test_p.tcl @@ -1,5 +1,7 @@ -set file(rname) test.blob -set file(aname) /test.blob +set file(rname) test0.blob +set file(aname) /test0.blob +set file(rnamellarge) test1.blob +set file(rnameodd) test2.blob set file(namea0) test1.blob set file(namea1) /test0.blob -- 2.43.0