static void test_stSortedSetIterator(CuTest* testCase) { sonLibSortedSetTestSetup(); int32_t i; for(i=0; i<size; i++) { stSortedSet_insert(sortedSet, stIntTuple_construct(1, input[i])); } stSortedSetIterator *iterator = stSortedSet_getIterator(sortedSet); CuAssertTrue(testCase, iterator != NULL); for(i=0; i<sortedSize; i++) { CuAssertIntEquals(testCase, sortedInput[i], stIntTuple_getPosition(stSortedSet_getNext(iterator), 0)); } CuAssertTrue(testCase, stSortedSet_getNext(iterator) == NULL); stSortedSetIterator *iterator2 = stSortedSet_copyIterator(iterator); CuAssertTrue(testCase, iterator2 != NULL); for(i=0; i<sortedSize; i++) { CuAssertIntEquals(testCase, sortedInput[sortedSize - 1 - i], stIntTuple_getPosition(stSortedSet_getPrevious(iterator), 0)); CuAssertIntEquals(testCase, sortedInput[sortedSize - 1 - i], stIntTuple_getPosition(stSortedSet_getPrevious(iterator2), 0)); } CuAssertTrue(testCase, stSortedSet_getPrevious(iterator) == NULL); CuAssertTrue(testCase, stSortedSet_getPrevious(iterator2) == NULL); stSortedSet_destructIterator(iterator); stSortedSet_destructIterator(iterator2); sonLibSortedSetTestTeardown(); }
stSortedSetIterator *stSortedSet_getIteratorFrom(stSortedSet *items, void *item) { stSortedSetIterator *iterator = stSortedSet_getIterator(items); if(avl_t_find(&iterator->traverser, items->sortedSet, item) == NULL) { stThrowNew(SORTED_SET_EXCEPTION_ID, "Tried to create an iterator with an item that is not in the list of items"); } stSortedSet_getPrevious(iterator); return iterator; }
Segment *block_getPrevious(Block_InstanceIterator *iterator) { return block_getInstanceP(iterator->block, stSortedSet_getPrevious(iterator->iterator)); }
Event *eventTree_getPrevious(EventTree_Iterator *iterator) { return stSortedSet_getPrevious(iterator); }
Face *flower_getPreviousFace(Flower_FaceIterator *faceIterator) { return stSortedSet_getPrevious(faceIterator); }
Chain *flower_getPreviousChain(Flower_ChainIterator *chainIterator) { return stSortedSet_getPrevious(chainIterator); }
Group *flower_getPreviousGroup(Flower_GroupIterator *groupIterator) { return stSortedSet_getPrevious(groupIterator); }
Block *flower_getPreviousBlock(Flower_BlockIterator *blockIterator) { return stSortedSet_getPrevious(blockIterator); }
Segment *flower_getPreviousSegment(Flower_SegmentIterator *segmentIterator) { return stSortedSet_getPrevious(segmentIterator); }
End *flower_getPreviousEnd(Flower_EndIterator *endIterator) { return stSortedSet_getPrevious(endIterator); }
Cap *flower_getPreviousCap(Flower_CapIterator *capIterator) { return stSortedSet_getPrevious(capIterator); }
Sequence *flower_getPreviousSequence(Flower_SequenceIterator *sequenceIterator) { return stSortedSet_getPrevious(sequenceIterator); }