Skip to content

Commit

Permalink
Merge 'rafaeltoledo/cn-master'
Browse files Browse the repository at this point in the history
  • Loading branch information
cs-bruno-silva committed Dec 3, 2018
2 parents a6c058f + e567644 commit 7d5b062
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 2 deletions.
@@ -1,5 +1,7 @@
package br.com.concrete.canarinho.formatador;

import android.os.Build;

import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
Expand Down Expand Up @@ -71,8 +73,15 @@ public String desformata(String value) {
realValue = value.substring(offset);
}

final BigDecimal valor = (BigDecimal) FORMATADOR_MOEDA.parse(realValue,
new ParsePosition(0));
final BigDecimal valor;
if (Build.VERSION.SDK_INT < 28) {
valor = (BigDecimal) FORMATADOR_MOEDA.parse(realValue,
new ParsePosition(0));
} else {
// Implementando o parse manual devido a um bug na API 28
valor = new BigDecimal(realValue.replaceAll("\\.", "")
.replace(",", "."));
}
return valor.toPlainString();
}

Expand Down
@@ -0,0 +1,29 @@
package br.com.concrete.canarinho.sample;

import android.support.test.filters.SdkSuppress;
import android.support.test.runner.AndroidJUnit4;

import org.junit.Test;
import org.junit.runner.RunWith;

import br.com.concrete.canarinho.formatador.Formatador;

import static org.junit.Assert.assertEquals;

@RunWith(AndroidJUnit4.class)
public class BugOnApi28Test {

@Test
@SdkSuppress(minSdkVersion = 28)
public void moneyFormatSuccessfulRunsOnApi28() {
final String value = "1.000.000,00";
assertEquals("1000000.00", Formatador.VALOR.desformata(value));
}

@Test
@SdkSuppress(maxSdkVersion = 27)
public void moneyFormatSuccessfulRunsOnApi27() {
final String value = "1.000.000,00";
assertEquals("1000000.00", Formatador.VALOR.desformata(value));
}
}

0 comments on commit 7d5b062

Please sign in to comment.