/* * TestsBreakIteratorStatusVals() Test the ubrk_getRuleStatusVec() funciton */ static void TestBreakIteratorStatusVec() { #define RULE_STRING_LENGTH 200 UChar rules[RULE_STRING_LENGTH]; #define TEST_STRING_LENGTH 25 UChar testString[TEST_STRING_LENGTH]; UBreakIterator *bi = NULL; int32_t pos = 0; int32_t vals[10]; int32_t numVals; UErrorCode status = U_ZERO_ERROR; u_uastrncpy(rules, "[A-N]{100}; \n" "[a-w]{200}; \n" "[\\p{L}]{300}; \n" "[\\p{N}]{400}; \n" "[0-5]{500}; \n" "!.*;\n", RULE_STRING_LENGTH); u_uastrncpy(testString, "ABC", TEST_STRING_LENGTH); bi = ubrk_openRules(rules, -1, testString, -1, NULL, &status); TEST_ASSERT_SUCCESS(status); TEST_ASSERT(bi != NULL); /* The TEST_ASSERT above should change too... */ if (bi != NULL) { pos = ubrk_next(bi); TEST_ASSERT(pos == 1); memset(vals, -1, sizeof(vals)); numVals = ubrk_getRuleStatusVec(bi, vals, 10, &status); TEST_ASSERT_SUCCESS(status); TEST_ASSERT(numVals == 2); TEST_ASSERT(vals[0] == 100); TEST_ASSERT(vals[1] == 300); TEST_ASSERT(vals[2] == -1); numVals = ubrk_getRuleStatusVec(bi, vals, 0, &status); TEST_ASSERT(status == U_BUFFER_OVERFLOW_ERROR); TEST_ASSERT(numVals == 2); } ubrk_close(bi); }
int32_t __hs_ubrk_getRuleStatusVec(UBreakIterator *bi, int32_t *fillInVec, int32_t capacity, UErrorCode *status) { return ubrk_getRuleStatusVec(bi, fillInVec, capacity, status); }