Boolean addAtFrontWithNoNodes() { NodePtr node = createTestNode(1); addAtFront(testlist, node); myassert(testlist->size == 1) myassert(testlist->head == node) myassert(testlist->tail == node) myassert(testlist->head->next == NULL) myassert(testlist->head->prev == NULL) return TRUE; }
void T_CTEST_EXPORT2 addTest(TestNode** root, TestFunctionPtr test, const char* name ) { TestNode *newNode; /*if this is the first Test created*/ if (*root == NULL) *root = createTestNode("", 0); newNode = addTestNode( *root, name ); assert(newNode != 0 ); /* printf("addTest: nreName = %s\n", newNode->name );*/ newNode->test = test; }
/* non recursive insert function */ static TestNode *addTestNode ( TestNode *root, const char *name ) { const char* nextName; TestNode *nextNode, *curNode; int nameLen; /* length of current 'name' */ /* remove leading slash */ if ( *name == TEST_SEPARATOR ) name++; curNode = root; for(;;) { /* Start with the next child */ nextNode = curNode->child; getNextLevel ( name, &nameLen, &nextName ); /* printf("* %s\n", name );*/ /* if nextNode is already null, then curNode has no children -- add them */ if( nextNode == NULL ) { /* Add all children of the node */ do { /* Get the next component of the name */ getNextLevel(name, &nameLen, &nextName); /* update curName to have the next name segment */ curNode->child = createTestNode(name, nameLen); /* printf("*** added %s\n", curNode->child->name );*/ curNode = curNode->child; name = nextName; } while( name != NULL ); return curNode; } /* Search across for the name */ while (strncmp_nullcheck ( name, nextNode->name, nameLen) != 0 ) { curNode = nextNode; nextNode = nextNode -> sibling; if ( nextNode == NULL ) { /* Did not find 'name' on this level. */ nextNode = createTestNode(name, nameLen); curNode->sibling = nextNode; break; } } /* nextNode matches 'name' */ if (nextName == NULL) /* end of the line */ { return nextNode; } /* Loop again with the next item */ name = nextName; curNode = nextNode; } }