Changeset 42005
- Timestamp:
- Feb 1, 2022, 9:45:55 AM (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ipp-20211108/ippTests/ippCheck/src/ippCheckKeys.c
r42003 r42005 2 2 # include <pslib.h> 3 3 4 bool PrintMismatchedKeys (psMetadata *list, psMetadata *v1, psMetadata *v2); 4 bool PrintMismatchedKeys (psMetadata *list, psMetadata *v1, psMetadata *v2, char *prefix); 5 bool PrintMissingKeys (psMetadata *list, char *prefix); 5 6 6 7 int main(int argc, char **argv) { … … 75 76 # define SAVE_ITEM_TWO \ 76 77 if (fabs(ratio) > 1.0) { \ 77 psMetadataItem *newItem = psMetadataItemCopy(item_2);\78 psMetadataAddItem (off100, newItem, PS_LIST_TAIL, PS_META_REPLACE); \79 continue; \78 psMetadataItem *newItem = psMetadataItemCopy(item_2); \ 79 psMetadataAddItem (off100, newItem, PS_LIST_TAIL, PS_META_REPLACE); \ 80 continue; \ 80 81 } \ 81 82 if (fabs(ratio) > 0.1) { \ 82 psMetadataItem *newItem = psMetadataItemCopy(item_2);\83 psMetadataAddItem (off010, newItem, PS_LIST_TAIL, PS_META_REPLACE); \84 continue; \83 psMetadataItem *newItem = psMetadataItemCopy(item_2); \ 84 psMetadataAddItem (off010, newItem, PS_LIST_TAIL, PS_META_REPLACE); \ 85 continue; \ 85 86 } \ 86 87 if (fabs(ratio) > 0.01) { \ 87 psMetadataItem *newItem = psMetadataItemCopy(item_2);\88 psMetadataAddItem (off001, newItem, PS_LIST_TAIL, PS_META_REPLACE); \89 continue; \88 psMetadataItem *newItem = psMetadataItemCopy(item_2); \ 89 psMetadataAddItem (off001, newItem, PS_LIST_TAIL, PS_META_REPLACE); \ 90 continue; \ 90 91 } \ 91 92 if (fabs(ratio) <= 0.01) { \ 92 psMetadataItem *newItem = psMetadataItemCopy(item_2);\93 psMetadataAddItem (offlow, newItem, PS_LIST_TAIL, PS_META_REPLACE); \94 continue; \93 psMetadataItem *newItem = psMetadataItemCopy(item_2); \ 94 psMetadataAddItem (offlow, newItem, PS_LIST_TAIL, PS_META_REPLACE); \ 95 continue; \ 95 96 } 96 97 … … 153 154 } 154 155 155 fprintf (stdout, "\n --- Keys missing from file 2 ---\n"); 156 psMetadataPrint (0, missing, 1); 157 158 fprintf (stdout, "\n --- Keys with inconsistent types ---\n"); 159 psMetadataPrint (0, badtype, 1); 160 161 fprintf (stdout, "\n --- Keys with mismatched strings ---\n"); 162 PrintMismatchedKeys (offstr, head_1, head_2); 163 164 fprintf (stdout, "\n --- Keys with mismatched boolean values ---\n"); 165 PrintMismatchedKeys (badbool, head_1, head_2); 166 167 fprintf (stdout, "\n --- Keys inconsistent by 100%% or more ---\n"); 168 PrintMismatchedKeys (off100, head_1, head_2); 169 170 fprintf (stdout, "\n --- Keys inconsistent by 10 - 100%% or more ---\n"); 171 PrintMismatchedKeys (off010, head_1, head_2); 172 173 fprintf (stdout, "\n --- Keys inconsistent by 1 - 10%% or more ---\n"); 174 PrintMismatchedKeys (off001, head_1, head_2); 175 176 fprintf (stdout, "\n --- Keys inconsistent by < 1%% ---\n"); 177 PrintMismatchedKeys (offlow, head_1, head_2); 156 if (psListLength(missing->list)) { 157 fprintf (stdout, "\n# --- Keys missing from file 2 ---\n"); 158 PrintMissingKeys (missing, "MISS"); 159 } 160 161 if (psListLength(badtype->list)) { 162 fprintf (stdout, "\n# --- Keys with inconsistent types ---\n"); 163 PrintMissingKeys (badtype, "TYPE"); 164 } 165 166 if (psListLength(offstr->list)) { 167 fprintf (stdout, "\n# --- Keys with mismatched strings ---\n"); 168 PrintMismatchedKeys (offstr, head_1, head_2, "STR "); 169 } 170 171 if (psListLength(badbool->list)) { 172 fprintf (stdout, "\n# --- Keys with mismatched boolean values ---\n"); 173 PrintMismatchedKeys (badbool, head_1, head_2, "BOOL"); 174 } 175 176 if (psListLength(off100->list)) { 177 fprintf (stdout, "\n# --- Keys inconsistent by 100%% or more ---\n"); 178 PrintMismatchedKeys (off100, head_1, head_2, "D100"); 179 } 180 181 if (psListLength(off010->list)) { 182 fprintf (stdout, "\n# --- Keys inconsistent by 10 - 100%% or more ---\n"); 183 PrintMismatchedKeys (off010, head_1, head_2, "D010"); 184 } 185 186 if (psListLength(off001->list)) { 187 fprintf (stdout, "\n# --- Keys inconsistent by 1 - 10%% or more ---\n"); 188 PrintMismatchedKeys (off001, head_1, head_2, "D001"); 189 } 190 191 if (psListLength(offlow->list)) { 192 fprintf (stdout, "\n# --- Keys inconsistent by < 1%% ---\n"); 193 PrintMismatchedKeys (offlow, head_1, head_2, "D000"); 194 } 178 195 179 196 exit (0); … … 181 198 182 199 // we only need to support 4 types: BOOL, STRING, S32, S64, F32, F64: 183 bool PrintMismatchedKeys (psMetadata *list, psMetadata *v1, psMetadata *v2 ) {200 bool PrintMismatchedKeys (psMetadata *list, psMetadata *v1, psMetadata *v2, char *prefix) { 184 201 185 202 // compare keywords … … 200 217 case PS_DATA_BOOL: 201 218 if (longName) { 202 fprintf (stdout, " %32s : %12c vs %12c\n", item->name, (i1->data.B ? 'T' : 'F'), (i2->data.B ? 'T' : 'F'));219 fprintf (stdout, "%4s %32s : %12c vs %12c\n", prefix, item->name, (i1->data.B ? 'T' : 'F'), (i2->data.B ? 'T' : 'F')); 203 220 } else { 204 fprintf (stdout, " %8s : %12c vs %12c\n", item->name, (i1->data.B ? 'T' : 'F'), (i2->data.B ? 'T' : 'F'));221 fprintf (stdout, "%4s %8s : %12c vs %12c\n", prefix, item->name, (i1->data.B ? 'T' : 'F'), (i2->data.B ? 'T' : 'F')); 205 222 } 206 223 break; … … 209 226 float ratio = delta / (float) i1->data.S32; 210 227 if (longName) { 211 fprintf (stdout, " %32s : %12d vs %12d : %12.5g\n", item->name, i1->data.S32, i2->data.S32, ratio);212 } else { 213 fprintf (stdout, " %8s : %12d vs %12d : %12.5g\n", item->name, i1->data.S32, i2->data.S32, ratio);228 fprintf (stdout, "%4s %32s : %12d vs %12d : %12.5g\n", prefix, item->name, i1->data.S32, i2->data.S32, ratio); 229 } else { 230 fprintf (stdout, "%4s %8s : %12d vs %12d : %12.5g\n", prefix, item->name, i1->data.S32, i2->data.S32, ratio); 214 231 } 215 232 break; } … … 218 235 float ratio = delta / (float) i1->data.S64; 219 236 if (longName) { 220 fprintf (stdout, " %32s : %12ld vs %12ld : %12.5g\n", item->name, i1->data.S64, i2->data.S64, ratio);221 } else { 222 fprintf (stdout, " %8s : %12ld vs %12ld : %12.5g\n", item->name, i1->data.S64, i2->data.S64, ratio);237 fprintf (stdout, "%4s %32s : %12ld vs %12ld : %12.5g\n", prefix, item->name, i1->data.S64, i2->data.S64, ratio); 238 } else { 239 fprintf (stdout, "%4s %8s : %12ld vs %12ld : %12.5g\n", prefix, item->name, i1->data.S64, i2->data.S64, ratio); 223 240 } 224 241 break; } … … 227 244 double ratio = delta / (double) i1->data.F32; 228 245 if (longName) { 229 fprintf (stdout, " %32s : %12.5g vs %12.5g : %12.5g\n", item->name, i1->data.F32, i2->data.F32, ratio);230 } else { 231 fprintf (stdout, " %8s : %12.5g vs %12.5g : %12.5g\n", item->name, i1->data.F32, i2->data.F32, ratio);246 fprintf (stdout, "%4s %32s : %12.5g vs %12.5g : %12.5g\n", prefix, item->name, i1->data.F32, i2->data.F32, ratio); 247 } else { 248 fprintf (stdout, "%4s %8s : %12.5g vs %12.5g : %12.5g\n", prefix, item->name, i1->data.F32, i2->data.F32, ratio); 232 249 } 233 250 break; } … … 236 253 psF64 ratio = delta / (psF64) i1->data.F64; 237 254 if (longName) { 238 fprintf (stdout, " %32s : %12.5g vs %12.5g : %12.5g\n", item->name, i1->data.F64, i2->data.F64, ratio);239 } else { 240 fprintf (stdout, " %8s : %12.5g vs %12.5g : %12.5g\n", item->name, i1->data.F64, i2->data.F64, ratio);255 fprintf (stdout, "%4s %32s : %12.5g vs %12.5g : %12.5g\n", prefix, item->name, i1->data.F64, i2->data.F64, ratio); 256 } else { 257 fprintf (stdout, "%4s %8s : %12.5g vs %12.5g : %12.5g\n", prefix, item->name, i1->data.F64, i2->data.F64, ratio); 241 258 } 242 259 break; } 243 260 case PS_DATA_STRING: 244 261 if (longName) { 245 fprintf (stdout, " %32s : %60s vs %60s\n", item->name, i1->data.str, i2->data.str);262 fprintf (stdout, "%4s %32s : %60s vs %60s\n", prefix, item->name, i1->data.str, i2->data.str); 246 263 } else { 247 fprintf (stdout, " %8s : %60s vs %60s\n", item->name, i1->data.str, i2->data.str); 264 fprintf (stdout, "%4s %8s : %60s vs %60s\n", prefix, item->name, i1->data.str, i2->data.str); 265 } 266 break; 267 default: 268 psAbort ("impossible!"); 269 } 270 } 271 return true; 272 } 273 274 // we only need to support 4 types: BOOL, STRING, S32, S64, F32, F64: 275 bool PrintMissingKeys (psMetadata *list, char *prefix) { 276 277 // compare keywords 278 psMetadataIterator *iter = psMetadataIteratorAlloc (list, PS_LIST_HEAD, NULL); 279 psMetadataItem *item = NULL; 280 while ((item = psMetadataGetAndIncrement (iter)) != NULL) { 281 282 int longName = (strlen(item->name) > 8); 283 longName = true; 284 285 switch (item->type) { 286 case PS_DATA_BOOL: 287 if (longName) { 288 fprintf (stdout, "%4s %32s : %12c\n", prefix, item->name, (item->data.B ? 'T' : 'F')); 289 } else { 290 fprintf (stdout, "%4s %8s : %12c\n", prefix, item->name, (item->data.B ? 'T' : 'F')); 291 } 292 break; 293 case PS_DATA_S32: { 294 if (longName) { 295 fprintf (stdout, "%4s %32s : %12d\n", prefix, item->name, item->data.S32); 296 } else { 297 fprintf (stdout, "%4s %8s : %12d\n", prefix, item->name, item->data.S32); 298 } 299 break; } 300 case PS_DATA_S64: { 301 if (longName) { 302 fprintf (stdout, "%4s %32s : %12ld\n", prefix, item->name, item->data.S64); 303 } else { 304 fprintf (stdout, "%4s %8s : %12ld\n", prefix, item->name, item->data.S64); 305 } 306 break; } 307 case PS_DATA_F32: { 308 if (longName) { 309 fprintf (stdout, "%4s %32s : %12.5g\n", prefix, item->name, item->data.F32); 310 } else { 311 fprintf (stdout, "%4s %8s : %12.5g\n", prefix, item->name, item->data.F32); 312 } 313 break; } 314 case PS_DATA_F64: { 315 if (longName) { 316 fprintf (stdout, "%4s %32s : %12.5g\n", prefix, item->name, item->data.F64); 317 } else { 318 fprintf (stdout, "%4s %8s : %12.5g\n", prefix, item->name, item->data.F64); 319 } 320 break; } 321 case PS_DATA_STRING: 322 if (longName) { 323 fprintf (stdout, "%4s %32s : %60s\n", prefix, item->name, item->data.str); 324 } else { 325 fprintf (stdout, "%4s %8s : %60s\n", prefix, item->name, item->data.str); 248 326 } 249 327 break;
Note:
See TracChangeset
for help on using the changeset viewer.
