Fix for InterpolatorType crash
Summary: We're currently getting a redbox in Turkish when we try to convert the string 'easeInEaseOut' to an InterpolatorType. This is because I use toLowerCase() to compare the string without setting a locale; in Turkish, the capital letter 'I' doesn't convert to 'i' when you lowercase it, but rather to 'ı' (http://www.i18nguy.com/unicode/turkish-i18n.html). Passing in a locale param to `toLowerCase()` fixes it. Also updating the test. Differential Revision: D10315474 fbshipit-source-id: 54be3ff1d3f91cb2ec765ff705ac364b976b8c6f
This commit is contained in:
parent
a82f6e164b
commit
01a1004808
|
@ -5,6 +5,8 @@
|
||||||
|
|
||||||
package com.facebook.react.uimanager.layoutanimation;
|
package com.facebook.react.uimanager.layoutanimation;
|
||||||
|
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enum representing the different interpolators that can be used in layout animation configuration.
|
* Enum representing the different interpolators that can be used in layout animation configuration.
|
||||||
*/
|
*/
|
||||||
|
@ -16,7 +18,7 @@ package com.facebook.react.uimanager.layoutanimation;
|
||||||
SPRING;
|
SPRING;
|
||||||
|
|
||||||
public static InterpolatorType fromString(String name) {
|
public static InterpolatorType fromString(String name) {
|
||||||
switch (name.toLowerCase()) {
|
switch (name.toLowerCase(Locale.US)) {
|
||||||
case "linear":
|
case "linear":
|
||||||
return LINEAR;
|
return LINEAR;
|
||||||
case "easein":
|
case "easein":
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
package com.facebook.react.uimanager.layoutanimation;
|
package com.facebook.react.uimanager.layoutanimation;
|
||||||
|
|
||||||
import com.facebook.react.uimanager.layoutanimation.InterpolatorType;
|
import com.facebook.react.uimanager.layoutanimation.InterpolatorType;
|
||||||
|
import java.util.Locale;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
|
@ -32,6 +33,12 @@ public class InterpolatorTypeTest {
|
||||||
assertThat(InterpolatorType.fromString("easeineaseout")).isEqualTo(InterpolatorType.EASE_IN_EASE_OUT);
|
assertThat(InterpolatorType.fromString("easeineaseout")).isEqualTo(InterpolatorType.EASE_IN_EASE_OUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testLocales() {
|
||||||
|
Locale.setDefault(Locale.forLanguageTag("tr-TR"));
|
||||||
|
assertThat(InterpolatorType.fromString("easeInEaseOut")).isEqualTo(InterpolatorType.EASE_IN_EASE_OUT);
|
||||||
|
}
|
||||||
|
|
||||||
@Test(expected = IllegalArgumentException.class)
|
@Test(expected = IllegalArgumentException.class)
|
||||||
public void testInvalidInterpolatorTypes() throws IllegalArgumentException {
|
public void testInvalidInterpolatorTypes() throws IllegalArgumentException {
|
||||||
InterpolatorType.fromString("ease_in_ease_out");
|
InterpolatorType.fromString("ease_in_ease_out");
|
||||||
|
|
Loading…
Reference in New Issue