type converter : formatter
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
package hello.typeconverter.fomatter;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.format.Formatter;
|
||||
|
||||
import java.text.NumberFormat;
|
||||
import java.text.ParseException;
|
||||
import java.util.Locale;
|
||||
|
||||
@Slf4j
|
||||
public class MyNumberFormatter implements Formatter<Number> {
|
||||
|
||||
@Override
|
||||
public Number parse(String text, Locale locale) throws ParseException {
|
||||
log.info("text={}, locale={}", text, locale);
|
||||
// "1,000" -> 1000
|
||||
NumberFormat format = NumberFormat.getInstance(locale);
|
||||
return format.parse(text);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String print(Number object, Locale locale) {
|
||||
log.info("object={}, locale={}", object, locale);
|
||||
return NumberFormat.getInstance(locale).format(object);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package hello.typeconverter.fomatter;
|
||||
|
||||
import org.assertj.core.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.util.Locale;
|
||||
|
||||
import static org.assertj.core.api.Assertions.*;
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
class MyNumberFormatterTest {
|
||||
|
||||
MyNumberFormatter formatter = new MyNumberFormatter();
|
||||
|
||||
@Test
|
||||
void parse() throws ParseException {
|
||||
Number result = formatter.parse("1,000", Locale.KOREA);
|
||||
assertThat(result).isEqualTo(1000L);
|
||||
}
|
||||
|
||||
@Test
|
||||
void print() {
|
||||
String result = formatter.print(1000, Locale.KOREA);
|
||||
assertThat(result).isEqualTo("1,000");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user