-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPatternTest.java
More file actions
31 lines (27 loc) · 1.12 KB
/
Copy pathPatternTest.java
File metadata and controls
31 lines (27 loc) · 1.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package com.hanserwei.patterns.singleton;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertSame;
import static org.junit.jupiter.api.Assertions.assertTrue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import org.junit.jupiter.api.Test;
/** 验证本模式的协作契约与边界行为. */
public final class PatternTest {
/** 不同任务访问同一策略实例. */
@Test
void sharesIdentityAcrossThreads() throws Exception {
try (ExecutorService executor = Executors.newVirtualThreadPerTaskExecutor()) {
Future<SitePolicy> first = executor.submit(() -> SitePolicy.INSTANCE);
Future<SitePolicy> second = executor.submit(() -> SitePolicy.INSTANCE);
assertSame(first.get(), second.get());
}
}
/** 长度上限包括边界,空白标题被拒绝. */
@Test
void validatesTitleBoundary() {
assertTrue(SitePolicy.INSTANCE.accepts("a".repeat(80)));
assertFalse(SitePolicy.INSTANCE.accepts("a".repeat(81)));
assertFalse(SitePolicy.INSTANCE.accepts(" "));
}
}