Back to home page

Enduro/X

 
 

    


0001 /**
0002  * @brief View access unit test, utility funcs
0003  *
0004  * @file vaccutil.c
0005  */
0006 /* -----------------------------------------------------------------------------
0007  * Enduro/X Middleware Platform for Distributed Transaction Processing
0008  * Copyright (C) 2009-2016, ATR Baltic, Ltd. All Rights Reserved.
0009  * Copyright (C) 2017-2023, Mavimax, Ltd. All Rights Reserved.
0010  * This software is released under one of the following licenses:
0011  * AGPL (with Java and Go exceptions) or Mavimax's license for commercial use.
0012  * See LICENSE file for full text.
0013  * -----------------------------------------------------------------------------
0014  * AGPL license:
0015  *
0016  * This program is free software; you can redistribute it and/or modify it under
0017  * the terms of the GNU Affero General Public License, version 3 as published
0018  * by the Free Software Foundation;
0019  *
0020  * This program is distributed in the hope that it will be useful, but WITHOUT ANY
0021  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
0022  * PARTICULAR PURPOSE. See the GNU Affero General Public License, version 3
0023  * for more details.
0024  *
0025  * You should have received a copy of the GNU Affero General Public License along 
0026  * with this program; if not, write to the Free Software Foundation, Inc.,
0027  * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
0028  *
0029  * -----------------------------------------------------------------------------
0030  * A commercial use license is available from Mavimax, Ltd
0031  * contact@mavimax.com
0032  * -----------------------------------------------------------------------------
0033  */
0034 
0035 #include <stdio.h>
0036 #include <stdlib.h>
0037 #include <unistd.h>
0038 #include <cgreen/cgreen.h>
0039 #include <ubf.h>
0040 #include <ndrstandard.h>
0041 #include <string.h>
0042 #include "test.fd.h"
0043 #include "ndebug.h"
0044 #include <fdatatype.h>
0045 
0046 #include "test040.h"
0047 
0048 /**
0049  * Basic preparation before the test
0050  */
0051 exprivate void basic_setup(void)
0052 {
0053     
0054 }
0055 
0056 exprivate void basic_teardown(void)
0057 {
0058     
0059 }
0060 
0061 /**
0062  * Test Bvget as int
0063  */
0064 Ensure(test_Bvsizeof)
0065 {
0066     struct MYVIEW1 v;
0067     struct MYVIEW3 v3;
0068     
0069     assert_equal(Bvsizeof("MYVIEW1"), sizeof(v));
0070     assert_equal(Bvsizeof("MYVIEW3"), sizeof(v3));
0071 }
0072 
0073 
0074 /**
0075  * Test Bvoccur
0076  */
0077 Ensure(test_Bvoccur)
0078 {
0079     struct MYVIEW1 v;
0080     BFLDOCC maxocc;
0081     BFLDOCC realocc;
0082     long dim_size;
0083     int fldtype;
0084     
0085     init_MYVIEW1(&v);
0086     
0087     assert_equal(Bvoccur((char *)&v, "MYVIEW1", "tshort1", &maxocc, &realocc, &dim_size, &fldtype), 1);
0088     assert_equal(maxocc, 1);
0089     assert_equal(realocc, 1);
0090     assert_equal(dim_size, sizeof(short));
0091     assert_equal(fldtype, BFLD_SHORT);
0092     
0093     assert_equal(Bvoccur((char *)&v, "MYVIEW1", "tshort2", &maxocc, &realocc, &dim_size, NULL), 2);
0094     assert_equal(maxocc, 2);
0095     assert_equal(realocc, 2);
0096     
0097     assert_equal(Bvoccur((char *)&v, "MYVIEW1", "tshort3", &maxocc, &realocc, &dim_size, NULL), 2);
0098     assert_equal(maxocc, 3);
0099     assert_equal(realocc, 2);
0100     
0101     
0102     assert_equal(Bvoccur((char *)&v, "MYVIEW1", "tshort4", NULL, NULL, NULL, NULL), 1);
0103     
0104     v.tint2[1] = 0;
0105     assert_equal(Bvoccur((char *)&v, "MYVIEW1", "tint2", &maxocc, &realocc, &dim_size, &fldtype), 2);
0106     assert_equal(maxocc, 2);
0107     assert_equal(realocc, 1); /* due to last element is NULL */
0108     assert_equal(dim_size, sizeof(int));
0109     assert_equal(fldtype, BFLD_INT);
0110     
0111     assert_equal(Bvoccur((char *)&v, "MYVIEW1", "tchar2", &maxocc, &realocc, &dim_size, &fldtype), 5);
0112     assert_equal(maxocc, 5);
0113     assert_equal(realocc, 5);
0114     assert_equal(fldtype, BFLD_CHAR);
0115     
0116     
0117     v.tchar2[4]='A';
0118     v.tchar2[3]='A';
0119     
0120     assert_equal(Bvoccur((char *)&v, "MYVIEW1", "tchar2", &maxocc, &realocc, &dim_size, NULL), 5);
0121     assert_equal(maxocc, 5);
0122     assert_equal(realocc, 3);
0123     
0124     
0125     assert_equal(Bvoccur((char *)&v, "MYVIEW1", "tchar3", &maxocc, &realocc, &dim_size, NULL), 0);
0126     assert_equal(maxocc, 2);
0127     assert_equal(realocc, 0); /* because count is set to 0 */
0128     
0129     
0130     assert_equal(Bvoccur((char *)&v, "MYVIEW1", "tfloat1", &maxocc, &realocc, &dim_size, &fldtype), 4);
0131     assert_equal(maxocc, 4);
0132     assert_equal(realocc, 4);
0133     assert_equal(dim_size, sizeof(float));
0134     assert_equal(fldtype, BFLD_FLOAT);
0135     
0136     assert_equal(Bvoccur((char *)&v, "MYVIEW1", "tstring0", &maxocc, &realocc, &dim_size, &fldtype), 3);
0137     assert_equal(maxocc, 3);
0138     assert_equal(realocc, 3);
0139     assert_equal(dim_size, 18);
0140     assert_equal(fldtype, BFLD_STRING);
0141     
0142     assert_equal(Bvoccur((char *)&v, "MYVIEW1", "tstring2", &maxocc, &realocc, &dim_size, &fldtype), 2);
0143     assert_equal(maxocc, 3);
0144     assert_equal(realocc, 2);
0145     assert_equal(fldtype, BFLD_STRING);
0146     
0147 }
0148 
0149 
0150 /**
0151  * Test Bvsetoccur
0152  */
0153 Ensure(test_Bvsetoccur)
0154 {
0155     struct MYVIEW1 v;
0156     BFLDOCC maxocc;
0157     memset(&v, 0, sizeof(v));
0158     
0159     assert_equal(Bvsetoccur((char *)&v, "MYVIEW1", "tshort2", 0), 0);
0160     assert_equal(v.C_tshort2, 0);
0161    
0162     assert_equal(Bvsetoccur((char *)&v, "MYVIEW1", "tshort2", 1), 0);
0163     assert_equal(v.C_tshort2, 1);
0164    
0165     assert_equal(Bvsetoccur((char *)&v, "MYVIEW1", "tshort2", 2), 0);
0166     assert_equal(v.C_tshort2, 2);
0167     
0168     assert_equal(Bvsetoccur((char *)&v, "MYVIEW1", "tshort2", 3), -1);
0169     assert_equal(Berror, BEINVAL);
0170     
0171 }
0172 
0173 
0174 Ensure(test_Bvnext)
0175 {
0176     struct MYVIEW1 v;
0177     Bvnext_state_t state;
0178     char cname[NDRX_VIEW_CNAME_LEN+1];
0179     int fldtype=99;
0180     BFLDOCC maxocc;
0181     long dim_size;
0182     
0183     init_MYVIEW1(&v);
0184     
0185     assert_equal(Bvnext (&state, "MYVIEW1", cname, &fldtype, &maxocc, &dim_size), 1);
0186     assert_string_equal(cname, "tshort1");
0187     assert_equal(fldtype, 0);
0188     assert_equal(maxocc, 1);
0189     assert_equal(dim_size, sizeof(short));
0190     
0191     
0192     assert_equal(Bvnext (&state, NULL, cname, &fldtype, &maxocc, &dim_size), 1);
0193     assert_string_equal(cname, "tshort2");
0194     assert_equal(fldtype, BFLD_SHORT);
0195     
0196     assert_equal(Bvnext (&state, NULL, cname, &fldtype, &maxocc, &dim_size), 1);
0197     assert_string_equal(cname, "tshort3");
0198     assert_equal(fldtype, BFLD_SHORT);
0199     
0200     assert_equal(Bvnext (&state, NULL, cname, &fldtype, &maxocc, &dim_size), 1);
0201     assert_string_equal(cname, "tshort4");
0202     assert_equal(fldtype, BFLD_SHORT);
0203     
0204     assert_equal(Bvnext (&state, NULL, cname, &fldtype, &maxocc, &dim_size), 1);
0205     assert_string_equal(cname, "tlong1");
0206     assert_equal(fldtype, BFLD_LONG);
0207     
0208     assert_equal(Bvnext (&state, NULL, cname, &fldtype, &maxocc, &dim_size), 1);
0209     assert_string_equal(cname, "tint2");
0210     assert_equal(fldtype, BFLD_INT);
0211     
0212     assert_equal(Bvnext (&state, NULL, cname, &fldtype, &maxocc, &dim_size), 1);
0213     assert_string_equal(cname, "tint3");
0214     assert_equal(fldtype, BFLD_INT);
0215     
0216     assert_equal(Bvnext (&state, NULL, cname, &fldtype, &maxocc, &dim_size), 1);
0217     assert_string_equal(cname, "tint4");
0218     assert_equal(fldtype, BFLD_INT);
0219     assert_equal(maxocc, 2);
0220     assert_equal(dim_size, sizeof(int));
0221     
0222     assert_equal(Bvnext (&state, NULL, cname, &fldtype, &maxocc, &dim_size), 1);
0223     assert_string_equal(cname, "tchar1");
0224     assert_equal(fldtype, BFLD_CHAR);
0225     
0226     
0227     assert_equal(Bvnext (&state, NULL, cname, &fldtype, &maxocc, &dim_size), 1);
0228     assert_string_equal(cname, "tchar2");
0229     assert_equal(fldtype, BFLD_CHAR);
0230     
0231     assert_equal(Bvnext (&state, NULL, cname, &fldtype, &maxocc, &dim_size), 1);
0232     assert_string_equal(cname, "tchar3");
0233     assert_equal(fldtype, BFLD_CHAR);
0234     
0235     assert_equal(Bvnext (&state, NULL, cname, &fldtype, &maxocc, &dim_size), 1);
0236     assert_string_equal(cname, "tfloat1");
0237     assert_equal(fldtype, BFLD_FLOAT);
0238     
0239     assert_equal(Bvnext (&state, NULL, cname, &fldtype, &maxocc, &dim_size), 1);
0240     assert_string_equal(cname, "tfloat2");
0241     assert_equal(fldtype, BFLD_FLOAT);
0242     
0243     assert_equal(Bvnext (&state, NULL, cname, &fldtype, &maxocc, &dim_size), 1);
0244     assert_string_equal(cname, "tfloat3");
0245     assert_equal(fldtype, BFLD_FLOAT);
0246     
0247     assert_equal(Bvnext (&state, NULL, cname, &fldtype, &maxocc, &dim_size), 1);
0248     assert_string_equal(cname, "tdouble1");
0249     assert_equal(fldtype, BFLD_DOUBLE);
0250     
0251     assert_equal(Bvnext (&state, NULL, cname, &fldtype, &maxocc, &dim_size), 1);
0252     assert_string_equal(cname, "tdouble2");
0253     assert_equal(fldtype, BFLD_DOUBLE);
0254     
0255     assert_equal(Bvnext (&state, NULL, cname, NULL, NULL, NULL), 1);
0256     assert_string_equal(cname, "tstring0");
0257     
0258     assert_equal(Bvnext (&state, NULL, cname, &fldtype, &maxocc, &dim_size), 1);
0259     assert_string_equal(cname, "tstring1");
0260     assert_equal(fldtype, BFLD_STRING);
0261     
0262     assert_equal(Bvnext (&state, NULL, cname, &fldtype, &maxocc, &dim_size), 1);
0263     assert_string_equal(cname, "tstring2");
0264     assert_equal(fldtype, BFLD_STRING);
0265     
0266     assert_equal(Bvnext (&state, NULL, cname, &fldtype, &maxocc, &dim_size), 1);
0267     assert_string_equal(cname, "tstring3");
0268     assert_equal(fldtype, BFLD_STRING);
0269     
0270     assert_equal(maxocc, 4);
0271     assert_equal(dim_size, 20);
0272     
0273     
0274     assert_equal(Bvnext (&state, NULL, cname, &fldtype, &maxocc, &dim_size), 1);
0275     assert_string_equal(cname, "tstring4");
0276     assert_equal(fldtype, BFLD_STRING);
0277     
0278     assert_equal(Bvnext (&state, NULL, cname, &fldtype, &maxocc, &dim_size), 1);
0279     assert_string_equal(cname, "tstring5");
0280     assert_equal(fldtype, BFLD_STRING);
0281     
0282     assert_equal(Bvnext (&state, NULL, cname, &fldtype, &maxocc, &dim_size), 1);
0283     assert_string_equal(cname, "tcarray1");
0284     assert_equal(fldtype, BFLD_CARRAY);
0285     
0286     assert_equal(Bvnext (&state, NULL, cname, &fldtype, &maxocc, &dim_size), 1);
0287     assert_string_equal(cname, "tcarray2");
0288     assert_equal(fldtype, BFLD_CARRAY);
0289     
0290     assert_equal(Bvnext (&state, NULL, cname, &fldtype, &maxocc, &dim_size), 1);
0291     assert_string_equal(cname, "tcarray3");
0292     assert_equal(fldtype, BFLD_CARRAY);
0293     
0294     assert_equal(Bvnext (&state, NULL, cname, &fldtype, &maxocc, &dim_size), 1);
0295     assert_string_equal(cname, "tcarray4");
0296     assert_equal(fldtype, BFLD_CARRAY);
0297     
0298     assert_equal(Bvnext (&state, NULL, cname, &fldtype, &maxocc, &dim_size), 1);
0299     assert_string_equal(cname, "tcarray5");
0300     assert_equal(fldtype, BFLD_CARRAY);
0301     
0302     assert_equal(Bvnext (&state, NULL, cname, &fldtype, &maxocc, &dim_size), 0);
0303     
0304     
0305     /* Test inval param */
0306     assert_equal(Bvnext (NULL, NULL, cname, &fldtype, &maxocc, &dim_size), -1);
0307     assert_equal(Berror, BEINVAL);
0308     
0309     /* Test inval param */
0310     state.v = NULL;
0311     state.vel = NULL;
0312     assert_equal(Bvnext (&state, NULL, cname, &fldtype, &maxocc, &dim_size), -1);
0313     assert_equal(Berror, BEINVAL);
0314     
0315     /* Test eof */
0316     state.v = (char *)0x1;
0317     state.vel = NULL;
0318     assert_equal(Bvnext (&state, NULL, cname, &fldtype, &maxocc, &dim_size), 0);
0319     
0320     
0321 }
0322 
0323 Ensure(test_Bvcpy)
0324 {
0325     struct MYVIEW1 src;
0326     struct MYVIEW1 dst;
0327     init_MYVIEW1(&src);
0328     
0329     memset(&dst, 0, sizeof(dst));
0330     assert_equal(Bvcpy ((char *)&dst, (char *)&src, "MYVIEW1"), sizeof(struct MYVIEW1));
0331     assert_equal(memcmp(&dst, &src, sizeof(struct MYVIEW1)), 0);
0332     
0333 }
0334 /**
0335  * Very basic tests of the framework
0336  * @return
0337  */
0338 TestSuite *vacc_util_tests(void)
0339 {
0340     TestSuite *suite = create_test_suite();
0341     
0342     set_setup(suite, basic_setup);
0343     set_teardown(suite, basic_teardown);
0344 
0345     /* init view test */
0346     add_test(suite, test_Bvsizeof);
0347     add_test(suite, test_Bvoccur);
0348     add_test(suite, test_Bvsetoccur);
0349     add_test(suite, test_Bvnext);
0350     add_test(suite, test_Bvcpy);
0351             
0352     return suite;
0353 }
0354 /* vim: set ts=4 sw=4 et smartindent: */