static AdjacencySwitch *getBest4EdgeAdjacencySwitchP(stIntTuple *oldEdge1, int64_t node1, stSortedSet *allAdjacencyEdges, stHash *nodesToAllCurrentEdges, stHash *nodesToBridgingAdjacencyEdges) { /* * Returns the best adjacency switch for the given node and edge that * contains 4 existing edges. */ int64_t node4 = getOtherPosition(oldEdge1, node1); AdjacencySwitch *minimumCostAdjacencySwitch = NULL; stList *validEdges = getItemForNode(node1, nodesToBridgingAdjacencyEdges); if (validEdges != NULL) { for (int64_t i = 0; i < stList_length(validEdges); i++) { stIntTuple *newEdge1 = stList_get(validEdges, i); int64_t node2 = getOtherPosition(newEdge1, node1); stList *validEdges2 = getItemForNode(node2, nodesToAllCurrentEdges); assert(validEdges2 != NULL); assert(stList_length(validEdges2) == 1); stIntTuple *oldEdge2 = stList_peek(validEdges2); int64_t node3 = getOtherPosition(oldEdge2, node2); stIntTuple *newEdge2 = getWeightedEdgeFromSet(node3, node4, allAdjacencyEdges); assert(newEdge2 != NULL); int64_t cost = stIntTuple_get(oldEdge1, 2) + stIntTuple_get(oldEdge2, 2) - stIntTuple_get(newEdge1, 2) - stIntTuple_get(newEdge2, 2); minimumCostAdjacencySwitch = adjacencySwitch_update( minimumCostAdjacencySwitch, oldEdge1, oldEdge2, newEdge1, newEdge2, cost); } } return minimumCostAdjacencySwitch; }
void test_stList_peek(CuTest *testCase) { setup(); CuAssertTrue(testCase, stList_peek(list) == strings[stringNumber-1]); teardown(); }