void run_sort_algorithms(t_info *info) { t_algo *best; t_algo *b_sort; t_algo *s_sort; t_algo *d_sort; b_sort = new_algo(info); s_sort = new_algo(info); d_sort = new_algo(info); info->in_count = dumb_sort(d_sort, info); compress_ops(d_sort->operations, &info->in_count); best = d_sort; bubble_sort(b_sort, info); compress_ops(b_sort->operations, &b_sort->op_count); if (b_sort->op_count < best->op_count && stack_sorted(b_sort->stack_a)) best = b_sort; split_sort(s_sort, info); print_stacks(s_sort->stack_a, s_sort->stack_b, info); print_steps(s_sort->operations); compress_ops(s_sort->operations, &s_sort->op_count); if (s_sort->op_count < best->op_count && stack_sorted(s_sort->stack_a)) best = s_sort; run_test2(best, info); delete_algo(&b_sort); delete_algo(&s_sort); delete_algo(&d_sort); }
int main() { int i, c; for (i = 0; i < TEST_COUNT; i++) run_test(i); for (i = 0; i < TEST2_COUNT; i++) for (c = 0; c < CASE2_COUNT; c++) run_test2(i,c); return 0; }
int processAnnunRdr(SaHpiSessionIdT sessionId, SaHpiResourceIdT resourceId, SaHpiRdrT * rdr, SaHpiAnnunciatorRecT * annunRec) { SaErrorT status; int retval = SAF_TEST_NOTSUPPORT; SaHpiAnnunciatorNumT a_num = annunRec->AnnunciatorNum; SaHpiSeverityT severity; SaHpiBoolT found; status = getUnusedSeverity(sessionId, resourceId, a_num, SAHPI_TRUE, &severity, &found); if (status != SA_OK) { e_trace(); retval = SAF_TEST_UNRESOLVED; } else if (found) { retval = run_test1(sessionId, resourceId, a_num, severity); } else { retval = run_test2(sessionId, resourceId, annunRec, SAHPI_INFORMATIONAL); } return retval; }
/* * Test a single dictionary */ static int run_test1(void) { int i, j; xmlDictPtr dict; int ret = 0; xmlChar prefix[40]; xmlChar *cur, *pref; const xmlChar *tmp; dict = xmlDictCreate(); if (dict == NULL) { fprintf(stderr, "Out of memory while creating dictionary\n"); exit(1); } memset(test1, 0, sizeof(test1)); /* * Fill in NB_STRINGS_MIN, at this point the dictionary should not grow * and we allocate all those doing the fast key computations */ for (i = 0;i < NB_STRINGS_MIN;i++) { test1[i] = xmlDictLookup(dict, strings1[i], -1); if (test1[i] == NULL) { fprintf(stderr, "Failed lookup for '%s'\n", strings1[i]); ret = 1; nbErrors++; } } j = NB_STRINGS_MAX - NB_STRINGS_NS; /* ":foo" like strings1 */ for (i = 0;i < NB_STRINGS_MIN;i++, j++) { test1[j] = xmlDictLookup(dict, strings1[j], xmlStrlen(strings1[j])); if (test1[j] == NULL) { fprintf(stderr, "Failed lookup for '%s'\n", strings1[j]); ret = 1; nbErrors++; } } /* "a:foo" like strings1 */ j = NB_STRINGS_MAX - NB_STRINGS_MIN; for (i = 0;i < NB_STRINGS_MIN;i++, j++) { test1[j] = xmlDictLookup(dict, strings1[j], xmlStrlen(strings1[j])); if (test1[j] == NULL) { fprintf(stderr, "Failed lookup for '%s'\n", strings1[j]); ret = 1; nbErrors++; } } /* * At this point allocate all the strings * the dictionary will grow in the process, reallocate more string tables * and switch to the better key generator */ for (i = 0;i < NB_STRINGS_MAX;i++) { if (test1[i] != NULL) continue; test1[i] = xmlDictLookup(dict, strings1[i], -1); if (test1[i] == NULL) { fprintf(stderr, "Failed lookup for '%s'\n", strings1[i]); ret = 1; nbErrors++; } } /* * Now we can start to test things, first that all strings1 belongs to * the dict */ for (i = 0;i < NB_STRINGS_MAX;i++) { if (!xmlDictOwns(dict, test1[i])) { fprintf(stderr, "Failed ownership failure for '%s'\n", strings1[i]); ret = 1; nbErrors++; } } /* * Then that another lookup to the string will return the same */ for (i = 0;i < NB_STRINGS_MAX;i++) { if (xmlDictLookup(dict, strings1[i], -1) != test1[i]) { fprintf(stderr, "Failed re-lookup check for %d, '%s'\n", i, strings1[i]); ret = 1; nbErrors++; } } /* * More complex, check the QName lookups */ for (i = NB_STRINGS_MAX - NB_STRINGS_NS;i < NB_STRINGS_MAX;i++) { cur = strings1[i]; pref = &prefix[0]; while (*cur != ':') *pref++ = *cur++; cur++; *pref = 0; tmp = xmlDictQLookup(dict, &prefix[0], cur); if (tmp != test1[i]) { fprintf(stderr, "Failed lookup check for '%s':'%s'\n", &prefix[0], cur); ret = 1; nbErrors++; } } run_test2(dict); xmlDictFree(dict); return(ret); }