Skip to content

Commit 116124d

Browse files
committed
Fixup FenceStepTest so that we don't need so much forStepNoRoundtrip.
1 parent 15670fa commit 116124d

File tree

1 file changed

+32
-38
lines changed

1 file changed

+32
-38
lines changed

testlib/src/test/java/com/diffplug/spotless/generic/FenceStepTest.java

Lines changed: 32 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,11 @@
1616
package com.diffplug.spotless.generic;
1717

1818
import java.io.File;
19-
import java.io.Serializable;
2019
import java.util.Arrays;
21-
import java.util.Objects;
22-
23-
import javax.annotation.Nullable;
2420

2521
import org.junit.jupiter.api.Test;
2622

2723
import com.diffplug.common.base.StringPrinter;
28-
import com.diffplug.spotless.FormatterFunc;
2924
import com.diffplug.spotless.FormatterStep;
3025
import com.diffplug.spotless.ResourceHarness;
3126
import com.diffplug.spotless.StepHarness;
@@ -34,8 +29,8 @@ class FenceStepTest extends ResourceHarness {
3429
@Test
3530
void single() {
3631
FormatterStep fence = FenceStep.named("fence").openClose("spotless:off", "spotless:on")
37-
.preserveWithin(Arrays.asList(createNeverUpToDateSerializable("lowercase", String::toLowerCase)));
38-
StepHarness harness = StepHarness.forStepNoRoundtrip(fence);
32+
.preserveWithin(Arrays.asList(ToCaseStep.lower()));
33+
StepHarness harness = StepHarness.forStep(fence);
3934
harness.test(
4035
StringPrinter.buildStringFromLines(
4136
"A B C",
@@ -54,8 +49,8 @@ void single() {
5449
@Test
5550
void multiple() {
5651
FormatterStep fence = FenceStep.named("fence").openClose("spotless:off", "spotless:on")
57-
.preserveWithin(Arrays.asList(createNeverUpToDateSerializable("lowercase", String::toLowerCase)));
58-
StepHarness harness = StepHarness.forStepNoRoundtrip(fence);
52+
.preserveWithin(Arrays.asList(ToCaseStep.lower()));
53+
StepHarness harness = StepHarness.forStep(fence);
5954
harness.test(
6055
StringPrinter.buildStringFromLines(
6156
"A B C",
@@ -88,7 +83,7 @@ void multiple() {
8883
@Test
8984
void broken() {
9085
FormatterStep fence = FenceStep.named("fence").openClose("spotless:off", "spotless:on")
91-
.preserveWithin(Arrays.asList(createNeverUpToDateSerializable("uppercase", String::toUpperCase)));
86+
.preserveWithin(Arrays.asList(ToCaseStep.upper()));
9287
// this fails because uppercase turns spotless:off into SPOTLESS:OFF, etc
9388
StepHarness.forStepNoRoundtrip(fence).testExceptionMsg(StringPrinter.buildStringFromLines("A B C",
9489
"spotless:off",
@@ -100,8 +95,8 @@ void broken() {
10095
@Test
10196
void andApply() {
10297
FormatterStep fence = FenceStep.named("fence").openClose("<lower>", "</lower>")
103-
.applyWithin(Arrays.asList(createNeverUpToDateSerializable("lowercase", String::toLowerCase)));
104-
StepHarness.forStepNoRoundtrip(fence).test(
98+
.applyWithin(Arrays.asList(ToCaseStep.lower()));
99+
StepHarness.forStep(fence).test(
105100
StringPrinter.buildStringFromLines(
106101
"A B C",
107102
"<lower>",
@@ -116,46 +111,45 @@ void andApply() {
116111
"G H I"));
117112
}
118113

119-
/**
120-
* @param name
121-
* The name of the formatter step
122-
* @param function
123-
* The function used by the formatter step
124-
* @return A FormatterStep which will never report that it is up-to-date, because
125-
* it is not equal to the serialized representation of itself.
126-
*/
127-
static <T extends FormatterFunc & Serializable> FormatterStep createNeverUpToDateSerializable(
128-
String name,
129-
T function) {
130-
Objects.requireNonNull(function, "function");
131-
return new NeverUpToDateSerializable(name, function);
132-
}
114+
static class ToCaseStep implements FormatterStep {
115+
static ToCaseStep upper() {
116+
return new ToCaseStep(true);
117+
}
133118

134-
static class NeverUpToDateSerializable<T extends FormatterFunc & Serializable> implements FormatterStep, Serializable {
135-
private final String name;
136-
private final T formatterFunc;
119+
static ToCaseStep lower() {
120+
return new ToCaseStep(false);
121+
}
122+
123+
private final boolean uppercase;
137124

138-
private NeverUpToDateSerializable(String name, T formatterFunc) {
139-
this.name = name;
140-
this.formatterFunc = formatterFunc;
125+
ToCaseStep(boolean uppercase) {
126+
this.uppercase = uppercase;
141127
}
142128

143129
@Override
144130
public String getName() {
145-
return name;
131+
return uppercase ? "uppercase" : "lowercase";
146132
}
147133

148-
@Nullable
134+
@org.jetbrains.annotations.Nullable
149135
@Override
150136
public String format(String rawUnix, File file) throws Exception {
151-
return formatterFunc.apply(rawUnix, file);
137+
return uppercase ? rawUnix.toUpperCase() : rawUnix.toLowerCase();
152138
}
153139

154140
@Override
155141
public void close() throws Exception {
156-
if (formatterFunc instanceof FormatterFunc.Closeable) {
157-
((FormatterFunc.Closeable) formatterFunc).close();
158-
}
142+
143+
}
144+
145+
@Override
146+
public int hashCode() {
147+
return getName().hashCode();
148+
}
149+
150+
@Override
151+
public boolean equals(Object obj) {
152+
return obj instanceof ToCaseStep && getName().equals(((ToCaseStep) obj).getName());
159153
}
160154
}
161155
}

0 commit comments

Comments
 (0)