void testFlower_getEndNumber(CuTest *testCase) { /* * Tests the different end number functions. */ cactusFlowerTestSetup(); CuAssertTrue(testCase, flower_getEndNumber(flower) == 0); CuAssertTrue(testCase, flower_getBlockEndNumber(flower) == 0); CuAssertTrue(testCase, flower_getStubEndNumber(flower) == 0); CuAssertTrue(testCase, flower_getFreeStubEndNumber(flower) == 0); CuAssertTrue(testCase, flower_getAttachedStubEndNumber(flower) == 0); int64_t blockNumber = 10; int64_t freeStubEndNumber = 5; int64_t attachedStubEndNumber = 3; int64_t i; for (i = 0; i < blockNumber; i++) { block_construct(1, flower); } for (i = 0; i < freeStubEndNumber; i++) { end_construct(0, flower); } for (i = 0; i < attachedStubEndNumber; i++) { end_construct(1, flower); } CuAssertTrue(testCase, flower_getEndNumber(flower) == blockNumber*2 + freeStubEndNumber + attachedStubEndNumber); CuAssertTrue(testCase, flower_getBlockEndNumber(flower) == blockNumber*2); CuAssertTrue(testCase, flower_getStubEndNumber(flower) == freeStubEndNumber + attachedStubEndNumber); CuAssertTrue(testCase, flower_getFreeStubEndNumber(flower) == freeStubEndNumber); CuAssertTrue(testCase, flower_getAttachedStubEndNumber(flower) == attachedStubEndNumber); cactusFlowerTestTeardown(); }
bool flower_isTerminal(Flower *flower) { return flower_isLeaf(flower) && flower_getGroupNumber(flower) <= 1 && flower_getStubEndNumber(flower) == flower_getEndNumber(flower); }
int64_t flower_getAttachedStubEndNumber(Flower *flower) { return flower_getStubEndNumber(flower) - flower_getFreeStubEndNumber(flower); }