优化
This commit is contained in:
+1
-1
@@ -11,7 +11,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
class ReturnCartonBarcodeTest {
|
||||
@ParameterizedTest
|
||||
@ValueSource(strings = {"RC-WH-20260912-480898", "RC-WH-20260912-274178", "RC-1", "RC-MERGED"})
|
||||
@ValueSource(strings = {"RC-0000000000000000000000000", "RC-F5LXX1ZZ5PNORYNQGLHZMSP33", "RC-1", "RC-MERGED"})
|
||||
void decodesTheActualRenderedSvgBarsToTheExactCartonMark(String mark) throws Exception {
|
||||
String svg = ReturnCartonBarcode.svg(mark);
|
||||
var viewBox = Pattern.compile("viewBox=\"0 0 (\\d+) 50\"").matcher(svg);
|
||||
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
package com.baiyue.lastleg.service;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import java.math.BigInteger;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.IntStream;
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
class ReturnBusinessNumberTest {
|
||||
private static final Map<String, String> TYPES = Map.of("RETURN", "RT", "RETURN_RECEIPT", "RR",
|
||||
"RETURN_BATCH", "RB", "RETURN_CARTON", "RC", "RETURN_RELABEL", "RETU");
|
||||
|
||||
@Test
|
||||
void formerlyCollidingInternalIdsAndRepeatedIdsNoLongerDetermineBusinessNumbers() {
|
||||
LastlegOrderNoGenerator generator = new LastlegOrderNoGenerator();
|
||||
long first = 2099800000000781889L, second = first + 1_000_000L;
|
||||
assertEquals(Math.floorMod(first, 1_000_000), Math.floorMod(second, 1_000_000));
|
||||
TYPES.forEach((type, prefix) -> {
|
||||
String a = generator.next(type, "warehouse-LAX-01", first);
|
||||
String b = generator.next(type, "warehouse-LAX-01", second);
|
||||
String c = generator.next(type, "warehouse-LAX-01", first);
|
||||
assertEquals(3, new HashSet<>(java.util.List.of(a, b, c)).size());
|
||||
for (String value : java.util.List.of(a, b, c)) {
|
||||
assertTrue(value.matches(prefix + "-[0-9A-Z]{25}"), value);
|
||||
assertTrue(value.length() <= 32);
|
||||
assertFalse(value.contains(Long.toString(first)));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void encodingPreservesAll128BitsIncludingLeadingZerosAndSignBits() {
|
||||
for (UUID uuid : java.util.List.of(new UUID(0, 0), new UUID(-1, -1), new UUID(Long.MIN_VALUE, 1),
|
||||
UUID.fromString("00000000-0000-4000-8000-000000000001"),
|
||||
UUID.fromString("ffffffff-ffff-4fff-bfff-000000000001"))) {
|
||||
String encoded = LastlegOrderNoGenerator.encodeReturnUuid(uuid);
|
||||
assertEquals(25, encoded.length());
|
||||
assertEquals(new BigInteger(uuid.toString().replace("-", ""), 16), new BigInteger(encoded, 36));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void independentInstancesGenerateDistinctNumbersDuringConcurrentBurst() {
|
||||
var values = IntStream.range(0, 20_000).parallel()
|
||||
.mapToObj(i -> new LastlegOrderNoGenerator().next("RETURN_RECEIPT", "42", 123L)).toList();
|
||||
assertEquals(values.size(), new HashSet<>(values).size());
|
||||
}
|
||||
|
||||
@Test
|
||||
void nonReturnRulesRemainUnchangedAndReturnNormalizationIsLocaleIndependent() {
|
||||
LastlegOrderNoGenerator generator = new LastlegOrderNoGenerator();
|
||||
for (String type : java.util.List.of("OUTBOUND", "RELABEL", "PROCUREMENT", "DISPATCH")) {
|
||||
assertEquals(generator.next(type, "LAX", 123), generator.next(type, "LAX", 1_000_123));
|
||||
}
|
||||
assertTrue(generator.next(" return_receipt ", "42", 1).matches("RR-[0-9A-Z]{25}"));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user