diff --git a/icu4c/source/test/intltest/intltest.cpp b/icu4c/source/test/intltest/intltest.cpp index 158ac921f18..5fbf2efd874 100644 --- a/icu4c/source/test/intltest/intltest.cpp +++ b/icu4c/source/test/intltest/intltest.cpp @@ -1652,6 +1652,19 @@ UBool IntlTest::assertTrue(const char* message, UBool condition, UBool quiet, UB return condition; } +UBool IntlTest::assertTrue(const char *file, int line, const char* message, UBool condition, UBool quiet, UBool possibleDataError) { + if (!condition) { + if (possibleDataError) { + dataerrln("%s:%d: FAIL: assertTrue() failed: %s", file, line, message); + } else { + errln("%s:%d: FAIL: assertTrue() failed: %s", file, line, message); + } + } else if (!quiet) { + logln("%s:%d: Ok: %s", file, line, message); + } + return condition; +} + UBool IntlTest::assertFalse(const char* message, UBool condition, UBool quiet) { if (condition) { errln("FAIL: assertFalse() failed: %s", message); diff --git a/icu4c/source/test/intltest/intltest.h b/icu4c/source/test/intltest/intltest.h index 3851c712163..f33ea5020ca 100644 --- a/icu4c/source/test/intltest/intltest.h +++ b/icu4c/source/test/intltest/intltest.h @@ -120,6 +120,9 @@ UnicodeString toString(int32_t n); break; \ } +#define TEST_ASSERT_TRUE(x) \ + assertTrue(__FILE__, __LINE__, #x, (x), FALSE, FALSE) + class IntlTest : public TestLog { public: @@ -232,6 +235,7 @@ public: protected: /* JUnit-like assertions. Each returns TRUE if it succeeds. */ UBool assertTrue(const char* message, UBool condition, UBool quiet=FALSE, UBool possibleDataError=FALSE); + UBool assertTrue(const char *file, int line, const char* message, UBool condition, UBool quiet=FALSE, UBool possibleDataError=FALSE); UBool assertFalse(const char* message, UBool condition, UBool quiet=FALSE); UBool assertSuccess(const char* message, UErrorCode ec, UBool possibleDataError=FALSE); UBool assertEquals(const char* message, const UnicodeString& expected, diff --git a/icu4c/source/test/intltest/itutil.cpp b/icu4c/source/test/intltest/itutil.cpp index d9c0784a738..2f726101ce8 100644 --- a/icu4c/source/test/intltest/itutil.cpp +++ b/icu4c/source/test/intltest/itutil.cpp @@ -508,27 +508,51 @@ void EnumSetTest::TestEnumSet() { MAX_NONBOOLEAN+1, LIMIT_BOOLEAN> flags; - infoln("TODO!! This test doesn't fail on error. Convert printf into error assert.\n"); logln("Enum is from [%d..%d]\n", MAX_NONBOOLEAN+1, LIMIT_BOOLEAN); + TEST_ASSERT_TRUE(flags.get(THING1) == FALSE); + TEST_ASSERT_TRUE(flags.get(THING2) == FALSE); + TEST_ASSERT_TRUE(flags.get(THING3) == FALSE); + logln("get(thing1)=%d, get(thing2)=%d, get(thing3)=%d\n", flags.get(THING1), flags.get(THING2), flags.get(THING3)); logln("Value now: %d\n", flags.getAll()); flags.clear(); logln("clear -Value now: %d\n", flags.getAll()); logln("get(thing1)=%d, get(thing2)=%d, get(thing3)=%d\n", flags.get(THING1), flags.get(THING2), flags.get(THING3)); + TEST_ASSERT_TRUE(flags.get(THING1) == FALSE); + TEST_ASSERT_TRUE(flags.get(THING2) == FALSE); + TEST_ASSERT_TRUE(flags.get(THING3) == FALSE); flags.add(THING1); logln("set THING1 -Value now: %d\n", flags.getAll()); + TEST_ASSERT_TRUE(flags.get(THING1) == TRUE); + TEST_ASSERT_TRUE(flags.get(THING2) == FALSE); + TEST_ASSERT_TRUE(flags.get(THING3) == FALSE); logln("get(thing1)=%d, get(thing2)=%d, get(thing3)=%d\n", flags.get(THING1), flags.get(THING2), flags.get(THING3)); flags.add(THING3); logln("set THING3 -Value now: %d\n", flags.getAll()); + TEST_ASSERT_TRUE(flags.get(THING1) == TRUE); + TEST_ASSERT_TRUE(flags.get(THING2) == FALSE); + TEST_ASSERT_TRUE(flags.get(THING3) == TRUE); logln("get(thing1)=%d, get(thing2)=%d, get(thing3)=%d\n", flags.get(THING1), flags.get(THING2), flags.get(THING3)); flags.remove(THING2); + TEST_ASSERT_TRUE(flags.get(THING1) == TRUE); + TEST_ASSERT_TRUE(flags.get(THING2) == FALSE); + TEST_ASSERT_TRUE(flags.get(THING3) == TRUE); logln("remove THING2 -Value now: %d\n", flags.getAll()); logln("get(thing1)=%d, get(thing2)=%d, get(thing3)=%d\n", flags.get(THING1), flags.get(THING2), flags.get(THING3)); flags.remove(THING1); + TEST_ASSERT_TRUE(flags.get(THING1) == FALSE); + TEST_ASSERT_TRUE(flags.get(THING2) == FALSE); + TEST_ASSERT_TRUE(flags.get(THING3) == TRUE); logln("remove THING1 -Value now: %d\n", flags.getAll()); logln("get(thing1)=%d, get(thing2)=%d, get(thing3)=%d\n", flags.get(THING1), flags.get(THING2), flags.get(THING3)); + flags.clear(); + logln("clear -Value now: %d\n", flags.getAll()); + logln("get(thing1)=%d, get(thing2)=%d, get(thing3)=%d\n", flags.get(THING1), flags.get(THING2), flags.get(THING3)); + TEST_ASSERT_TRUE(flags.get(THING1) == FALSE); + TEST_ASSERT_TRUE(flags.get(THING2) == FALSE); + TEST_ASSERT_TRUE(flags.get(THING3) == FALSE); }