IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 42005


Ignore:
Timestamp:
Feb 1, 2022, 9:45:55 AM (4 years ago)
Author:
eugene
Message:

adjust output for easier parsing

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ipp-20211108/ippTests/ippCheck/src/ippCheckKeys.c

    r42003 r42005  
    22# include <pslib.h>
    33
    4 bool PrintMismatchedKeys (psMetadata *list, psMetadata *v1, psMetadata *v2);
     4bool PrintMismatchedKeys (psMetadata *list, psMetadata *v1, psMetadata *v2, char *prefix);
     5bool PrintMissingKeys (psMetadata *list, char *prefix);
    56
    67int main(int argc, char **argv) {
     
    7576# define SAVE_ITEM_TWO                                                  \
    7677        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;                                                   \
    8081        }                                                               \
    8182        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;                                                   \
    8586        }                                                               \
    8687        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;                                                   \
    9091        }                                                               \
    9192        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;                                                   \
    9596        }
    9697
     
    153154    }
    154155
    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    }
    178195
    179196    exit (0);
     
    181198
    182199// we only need to support 4 types: BOOL, STRING, S32, S64, F32, F64:
    183 bool PrintMismatchedKeys (psMetadata *list, psMetadata *v1, psMetadata *v2) {
     200bool PrintMismatchedKeys (psMetadata *list, psMetadata *v1, psMetadata *v2, char *prefix) {
    184201
    185202    // compare keywords
     
    200217          case PS_DATA_BOOL:
    201218            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'));
    203220            } 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'));
    205222            }
    206223            break;
     
    209226              float ratio = delta / (float) i1->data.S32;
    210227              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);
    214231              }
    215232              break; }
     
    218235              float ratio = delta / (float) i1->data.S64;
    219236              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);
    223240              }
    224241              break; }
     
    227244              double ratio = delta / (double) i1->data.F32;
    228245              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);
    232249              }
    233250              break; }
     
    236253              psF64 ratio = delta / (psF64) i1->data.F64;
    237254              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);
    241258              }
    242259              break; }
    243260          case PS_DATA_STRING:
    244261            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);
    246263            } 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:
     275bool 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);
    248326            }
    249327            break;
Note: See TracChangeset for help on using the changeset viewer.