Browse Source

Add test for calculateCapacity

Issue: SPR-17558
Closes gh-2054
pull/2061/head
Arjen Poutsma 6 years ago committed by Brian Clozel
parent
commit
5a8b8b11e4
  1. 2
      spring-core/src/main/java/org/springframework/core/codec/CharSequenceEncoder.java
  2. 21
      spring-core/src/test/java/org/springframework/core/codec/CharSequenceEncoderTests.java

2
spring-core/src/main/java/org/springframework/core/codec/CharSequenceEncoder.java

@ -99,7 +99,7 @@ public final class CharSequenceEncoder extends AbstractEncoder<CharSequence> {
}); });
} }
private int calculateCapacity(CharSequence sequence, Charset charset) { int calculateCapacity(CharSequence sequence, Charset charset) {
float maxBytesPerChar = this.charsetToMaxBytesPerChar float maxBytesPerChar = this.charsetToMaxBytesPerChar
.computeIfAbsent(charset, cs -> cs.newEncoder().maxBytesPerChar()); .computeIfAbsent(charset, cs -> cs.newEncoder().maxBytesPerChar());
float maxBytesForSequence = sequence.length() * maxBytesPerChar; float maxBytesForSequence = sequence.length() * maxBytesPerChar;

21
spring-core/src/test/java/org/springframework/core/codec/CharSequenceEncoderTests.java

@ -16,11 +16,19 @@
package org.springframework.core.codec; package org.springframework.core.codec;
import java.nio.charset.Charset;
import java.util.stream.Stream;
import org.junit.Test;
import reactor.core.publisher.Flux; import reactor.core.publisher.Flux;
import org.springframework.core.ResolvableType; import org.springframework.core.ResolvableType;
import org.springframework.util.MimeTypeUtils; import org.springframework.util.MimeTypeUtils;
import static java.nio.charset.StandardCharsets.ISO_8859_1;
import static java.nio.charset.StandardCharsets.US_ASCII;
import static java.nio.charset.StandardCharsets.UTF_16;
import static java.nio.charset.StandardCharsets.UTF_8;
import static org.junit.Assert.*; import static org.junit.Assert.*;
/** /**
@ -65,4 +73,17 @@ public class CharSequenceEncoderTests
.verifyComplete()); .verifyComplete());
} }
@Test
public void calculateCapacity() {
String sequence = "Hello World!";
Stream.of(UTF_8, UTF_16, ISO_8859_1, US_ASCII, Charset.forName("BIG5"))
.forEach(charset -> {
int capacity = this.encoder.calculateCapacity(sequence, charset);
int length = sequence.length();
assertTrue(String.format("%s has capacity %d; length %d", charset, capacity, length),
capacity >= length);
});
}
} }

Loading…
Cancel
Save