FontScaleConverterFactoryTest: 15x perf increase

Most of the time is spent in object allocation for the assert. Check
to see if the calculation would fail, and only actually run the assert
if it fails.

Test: atest FontScaleConverterFactoryTest#allFeasibleScalesAndConversionsDoNotCrash
Bug: 270054472
Change-Id: Id879c5442869766ec89e5e8173152d2db6631fd4
This commit is contained in:
Tim Murray
2023-02-27 11:33:46 -08:00
committed by Tyler Freeman
parent f19df858fa
commit 9753dd7438

View File

@@ -90,9 +90,13 @@ class FontScaleConverterFactoryTest {
}
.forEach { (table, sp) ->
try {
assertWithMessage("convertSpToDp(%s) on table: %s", sp, table)
.that(table.convertSpToDp(sp))
.isFinite()
// Truth is slow because it creates a bunch of
// objects. Don't use it unless we need to.
if (!table.convertSpToDp(sp).isFinite()) {
assertWithMessage("convertSpToDp(%s) on table: %s", sp, table)
.that(table.convertSpToDp(sp))
.isFinite()
}
} catch (e: Exception) {
throw AssertionError("Exception during convertSpToDp($sp) on table: $table", e)
}