0001 
0002 
0003 
0004 
0005 
0006 
0007 
0008 
0009 
0010 
0011 
0012 
0013 
0014 
0015 
0016 
0017 
0018 
0019 
0020 
0021 
0022 
0023 
0024 
0025 
0026 
0027 
0028 
0029 
0030 
0031 
0032 
0033 
0034 #include <stdio.h>
0035 #include <stdlib.h>
0036 #include <cgreen/cgreen.h>
0037 #include <ubf.h>
0038 #include <ndrstandard.h>
0039 #include <string.h>
0040 #include "test.fd.h"
0041 #include "ubfunit1.h"
0042 #include <fdatatype.h>
0043 
0044 
0045 void load_fdel_test_data(UBFH *p_ub)
0046 {
0047     short s = 88;
0048     long l = -1021;
0049     char c = 'c';
0050     float f = 17.31;
0051     double d = 12312.1111;
0052     char carr[] = "CARRAY1 TEST STRING DATA";
0053     BFLDLEN len = strlen(carr);
0054 
0055     assert_equal(Bchg(p_ub, T_SHORT_FLD, 0, (char *)&s, 0), EXSUCCEED);
0056     assert_equal(Bchg(p_ub, T_LONG_FLD, 0, (char *)&l, 0), EXSUCCEED);
0057     assert_equal(Bchg(p_ub, T_CHAR_FLD, 0, (char *)&c, 0), EXSUCCEED);
0058     assert_equal(Bchg(p_ub, T_FLOAT_FLD, 0, (char *)&f, 0), EXSUCCEED);
0059     assert_equal(Bchg(p_ub, T_DOUBLE_FLD, 0, (char *)&d, 0), EXSUCCEED);
0060     assert_equal(Bchg(p_ub, T_STRING_FLD, 0, (char *)"TEST STR VAL", 0), EXSUCCEED);
0061     assert_equal(Bchg(p_ub, T_CARRAY_FLD, 0, (char *)carr, len), EXSUCCEED);
0062 
0063     gen_load_ubf(p_ub, 0, 1, 0);
0064     gen_load_view(p_ub, 0, 1, 0);
0065     gen_load_ptr(p_ub, 0, 1, 0);
0066     
0067     
0068     s = 88;
0069     l = -1021;
0070     c = '.';
0071     f = 17.31;
0072     d = 12312.1111;
0073     carr[0] = 'Y';
0074     len = strlen(carr);
0075 
0076     assert_equal(Bchg(p_ub, T_SHORT_FLD, 1, (char *)&s, 0), EXSUCCEED);
0077     assert_equal(Bchg(p_ub, T_LONG_FLD, 1, (char *)&l, 0), EXSUCCEED);
0078     assert_equal(Bchg(p_ub, T_CHAR_FLD, 1, (char *)&c, 0), EXSUCCEED);
0079     assert_equal(Bchg(p_ub, T_FLOAT_FLD, 1, (char *)&f, 0), EXSUCCEED);
0080     assert_equal(Bchg(p_ub, T_DOUBLE_FLD, 1, (char *)&d, 0), EXSUCCEED);
0081     assert_equal(Bchg(p_ub, T_STRING_FLD, 1, (char *)"TEST STRING ARRAY2", 0), EXSUCCEED);
0082     assert_equal(Bchg(p_ub, T_CARRAY_FLD, 1, (char *)carr, len), EXSUCCEED);
0083     
0084     gen_load_ubf(p_ub, 1, 2, 0);
0085     gen_load_view(p_ub, 1, 2, 0);
0086     gen_load_ptr(p_ub, 1, 2, 0);
0087 
0088     s = 212;
0089     l = 212;
0090     c = 'b';
0091     f = 12127;
0092     d = 1231232.1;
0093     carr[0] = 'X';
0094     assert_equal(Bchg(p_ub, T_SHORT_2_FLD, 0, (char *)&s, 0), EXSUCCEED);
0095     assert_equal(Bchg(p_ub, T_LONG_2_FLD, 0, (char *)&l, 0), EXSUCCEED);
0096     assert_equal(Bchg(p_ub, T_CHAR_2_FLD, 0, (char *)&c, 0), EXSUCCEED);
0097     assert_equal(Bchg(p_ub, T_FLOAT_2_FLD, 0, (char *)&f, 0), EXSUCCEED);
0098     assert_equal(Bchg(p_ub, T_DOUBLE_2_FLD, 0, (char *)&d, 0), EXSUCCEED);
0099     assert_equal(Bchg(p_ub, T_STRING_2_FLD, 0, (char *)"XTEST STR VAL", 0), EXSUCCEED);
0100     assert_equal(Bchg(p_ub, T_CARRAY_2_FLD, 0, (char *)carr, len), EXSUCCEED);
0101     
0102     gen_load_ubf(p_ub, 0, 2, 1);
0103     gen_load_view(p_ub, 0, 2, 1);
0104     gen_load_ptr(p_ub, 0, 2, 1);
0105 }
0106 
0107 
0108 
0109 
0110 Ensure(test_Bnext_simple)
0111 {
0112     char fb[1400];
0113     char fb_2[1400];
0114     UBFH *p_ub = (UBFH *)fb;
0115     UBFH *p_ub_2 = (UBFH *)fb_2;
0116     BFLDID bfldid;
0117     BFLDOCC occ;
0118     char data_buf[200];
0119     BVIEWFLD *vf;
0120     BFLDLEN  len;
0121     int fldcount=0;
0122     
0123     assert_equal(Binit(p_ub, sizeof(fb)), EXSUCCEED);
0124     assert_equal(Binit(p_ub_2, sizeof(fb_2)), EXSUCCEED);
0125     load_fdel_test_data(p_ub);
0126     
0127     len = sizeof(data_buf);
0128     bfldid = BFIRSTFLDID;
0129     
0130     while(1==Bnext(p_ub, &bfldid, &occ, data_buf, &len))
0131     {
0132         assert_equal(Bchg(p_ub_2, bfldid, occ, data_buf, len), EXSUCCEED);
0133         
0134         len = sizeof(data_buf);
0135     }
0136     
0137     
0138 
0139     assert_equal(Bcmp(p_ub, p_ub_2),0);
0140 
0141     
0142     bfldid = BFIRSTFLDID;
0143     while(1==Bnext(p_ub_2, &bfldid, &occ, NULL, NULL))
0144     {
0145         fldcount++;
0146     }
0147 
0148     assert_equal(fldcount, 30);
0149 }
0150 
0151 
0152 
0153 
0154 
0155 
0156 Ensure(test_Bnext2_simple)
0157 {
0158     char fb[1400];
0159     char fb_2[1400];
0160     UBFH *p_ub = (UBFH *)fb;
0161     UBFH *p_ub_2 = (UBFH *)fb_2;
0162 
0163     char fb_3[1400];
0164     char fb_4[1400];
0165     UBFH *p_ub_3 = (UBFH *)fb_3;
0166     UBFH *p_ub_4 = (UBFH *)fb_4;
0167 
0168     BFLDID bfldid;
0169     BFLDID bfldid3;
0170     BFLDOCC occ;
0171     BFLDOCC occ3;
0172     char data_buf[200];
0173     BVIEWFLD *vf;
0174     BFLDLEN  len;
0175     char *dptr;
0176     int fldcount=0;
0177 
0178     Bnext_state_t s1, s2;
0179     
0180     assert_equal(Binit(p_ub, sizeof(fb)), EXSUCCEED);
0181     assert_equal(Binit(p_ub_2, sizeof(fb_2)), EXSUCCEED);
0182     load_fdel_test_data(p_ub);
0183 
0184     assert_equal(Binit(p_ub_3, sizeof(fb_3)), EXSUCCEED);
0185     assert_equal(Binit(p_ub_4, sizeof(fb_4)), EXSUCCEED);
0186     load_fdel_test_data(p_ub_3);
0187     
0188     len = sizeof(data_buf);
0189     bfldid = BFIRSTFLDID;
0190     bfldid3 = BFIRSTFLDID;
0191 
0192     while(1==Bnext2(&s1, p_ub, &bfldid, &occ, data_buf, &len, NULL) &&
0193             1==Bnext2(&s2, p_ub_3, &bfldid3, &occ3, NULL, NULL, &dptr))
0194     {
0195         assert_equal(Bchg(p_ub_2, bfldid, occ, data_buf, len), EXSUCCEED);
0196 
0197         
0198         assert_equal(Bchg(p_ub_4, bfldid3, occ3, dptr, len), EXSUCCEED);
0199 
0200         
0201         len = sizeof(data_buf);
0202     }
0203     
0204     
0205 
0206     assert_equal(Bcmp(p_ub, p_ub_2),0);
0207     assert_equal(Bcmp(p_ub, p_ub_4),0);
0208 
0209     
0210     bfldid = BFIRSTFLDID;
0211     while(1==Bnext(p_ub_2, &bfldid, &occ, NULL, NULL))
0212     {
0213         fldcount++;
0214     }
0215 
0216     assert_equal(fldcount, 30);
0217 }
0218 
0219 
0220 
0221 
0222 Ensure(test_Bnext_chk_errors)
0223 {
0224     char fb[1400];
0225     UBFH *p_ub = (UBFH *)fb;
0226     BFLDID bfldid;
0227     BFLDOCC occ;
0228     char data_buf[100];
0229     BFLDLEN  len;
0230 
0231     assert_equal(Binit(p_ub, sizeof(fb)), EXSUCCEED);
0232     load_fdel_test_data(p_ub);
0233 
0234     bfldid = BFIRSTFLDID;
0235     assert_equal(Bnext(p_ub, NULL, &occ, data_buf, &len), EXFAIL);
0236     assert_equal(Berror, BEINVAL);
0237     assert_equal(Bnext(p_ub, &bfldid, NULL, data_buf, &len), EXFAIL);
0238     assert_equal(Berror, BEINVAL);
0239     
0240     bfldid = BFIRSTFLDID;
0241     len = sizeof(data_buf);
0242     assert_equal(Bnext(p_ub, &bfldid, &occ, data_buf, &len), 1);
0243     
0244     assert_equal(Bdel(p_ub, T_SHORT_2_FLD, 0), EXSUCCEED);
0245 
0246     
0247     assert_equal(Bnext(p_ub, &bfldid, &occ, data_buf, &len), EXFAIL);
0248     assert_equal(Berror, BEINVAL);
0249 
0250     
0251     bfldid = BFIRSTFLDID;
0252     assert_equal(Bnext(NULL, &bfldid, &occ, data_buf, &len), EXFAIL);
0253     assert_equal(Berror, BNOTFLD);
0254 }
0255 
0256 
0257 
0258 
0259 
0260 Ensure(test_Bnext_len)
0261 {
0262     char fb[1400];
0263     UBFH *p_ub = (UBFH *)fb;
0264     BFLDID bfldid;
0265     BFLDOCC occ;
0266     BFLDLEN len;
0267     
0268     assert_equal(Binit(p_ub, sizeof(fb)), EXSUCCEED);
0269     
0270     assert_equal(CBchg(p_ub, T_SHORT_FLD, 0, "1", 0L, BFLD_STRING), EXSUCCEED);
0271     assert_equal(CBchg(p_ub, T_LONG_FLD, 0, "1", 0L, BFLD_STRING), EXSUCCEED);
0272     assert_equal(CBchg(p_ub, T_CHAR_FLD, 0, "1", 0L, BFLD_STRING), EXSUCCEED);
0273     assert_equal(CBchg(p_ub, T_FLOAT_FLD, 0, "1", 0L, BFLD_STRING), EXSUCCEED);
0274     assert_equal(CBchg(p_ub, T_DOUBLE_FLD, 0, "1", 0L, BFLD_STRING), EXSUCCEED);
0275     assert_equal(CBchg(p_ub, T_STRING_FLD, 0, "123", 0L, BFLD_STRING), EXSUCCEED);
0276     assert_equal(CBchg(p_ub, T_CARRAY_FLD, 0, "123", 0L, BFLD_STRING), EXSUCCEED);
0277     
0278     gen_load_ubf(p_ub, 0, 1, 0);
0279     gen_load_view(p_ub, 0, 1, 0);
0280     gen_load_ptr(p_ub, 0, 1, 0);
0281     
0282     bfldid = BFIRSTFLDID;
0283     assert_equal(Bnext(p_ub, &bfldid, &occ, NULL, &len), 1);
0284     assert_equal(bfldid, T_SHORT_FLD);
0285     assert_equal(len, sizeof(short));
0286     
0287     assert_equal(Bnext(p_ub, &bfldid, &occ, NULL, &len), 1);
0288     assert_equal(bfldid, T_LONG_FLD);
0289     assert_equal(len, sizeof(long));
0290     
0291     assert_equal(Bnext(p_ub, &bfldid, &occ, NULL, &len), 1);
0292     assert_equal(bfldid, T_CHAR_FLD);
0293     assert_equal(len, sizeof(char));
0294     
0295     assert_equal(Bnext(p_ub, &bfldid, &occ, NULL, &len), 1);
0296     assert_equal(bfldid, T_FLOAT_FLD);
0297     assert_equal(len, sizeof(float));
0298     
0299     assert_equal(Bnext(p_ub, &bfldid, &occ, NULL, &len), 1);
0300     assert_equal(bfldid, T_DOUBLE_FLD);
0301     assert_equal(len, sizeof(double));
0302     
0303     assert_equal(Bnext(p_ub, &bfldid, &occ, NULL, &len), 1);
0304     assert_equal(bfldid, T_STRING_FLD);
0305     assert_equal(len, 4); 
0306     
0307     assert_equal(Bnext(p_ub, &bfldid, &occ, NULL, &len), 1);
0308     assert_equal(bfldid, T_CARRAY_FLD);
0309     assert_equal(len, 3); 
0310     
0311     assert_equal(Bnext(p_ub, &bfldid, &occ, NULL, &len), 1);
0312     assert_equal(bfldid, T_PTR_FLD);
0313     
0314 #ifdef SYS32BIT
0315     
0316     assert_equal(len, 4); 
0317 #else
0318      
0319     assert_equal(len, 8); 
0320 #endif
0321     
0322     assert_equal(Bnext(p_ub, &bfldid, &occ, NULL, &len), 1);
0323     assert_equal( (len > sizeof(UBF_header_t)), EXTRUE );
0324     
0325     
0326     assert_equal( (len < sizeof(UBF_header_t) + 100), EXTRUE );
0327     
0328     assert_equal(Bnext(p_ub, &bfldid, &occ, NULL, &len), 1);
0329     assert_equal(bfldid, T_VIEW_FLD);
0330     assert_equal(len, sizeof(struct UBTESTVIEW2));
0331     
0332 }
0333 
0334 TestSuite *ubf_bnext_tests(void)
0335 {
0336     TestSuite *suite = create_test_suite();
0337 
0338     add_test(suite, test_Bnext_simple);
0339     add_test(suite, test_Bnext2_simple);
0340     add_test(suite, test_Bnext_chk_errors);
0341     add_test(suite, test_Bnext_len);
0342 
0343     return suite;
0344 }
0345