Skip to content

Commit 1f57125

Browse files
authored
Add adapter implementation with unit test (#45)
1 parent 3b68b9c commit 1f57125

File tree

6 files changed

+76
-0
lines changed

6 files changed

+76
-0
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package pl.mperor.lab.java.design.pattern.structural.adapter;
2+
3+
@FunctionalInterface
4+
public interface AnalogSignal {
5+
6+
void transmitAnalog();
7+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package pl.mperor.lab.java.design.pattern.structural.adapter;
2+
3+
public record ComputerMonitor() {
4+
5+
void display(AnalogSignal analogSignal) {
6+
System.out.println("🖥️ Computer monitor displaying ...");
7+
analogSignal.transmitAnalog();
8+
}
9+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package pl.mperor.lab.java.design.pattern.structural.adapter;
2+
3+
@FunctionalInterface
4+
public interface DigitalSignal {
5+
6+
void transmitDigital();
7+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package pl.mperor.lab.java.design.pattern.structural.adapter;
2+
3+
public class DigitalToAnalogSignalAdapter implements AnalogSignal {
4+
5+
private final DigitalSignal digitalSignal;
6+
7+
public DigitalToAnalogSignalAdapter(DigitalSignal digitalSignal) {
8+
this.digitalSignal = digitalSignal;
9+
}
10+
11+
@Override
12+
public void transmitAnalog() {
13+
digitalSignal.transmitDigital();
14+
}
15+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package pl.mperor.lab.java.design.pattern.structural.adapter;
2+
3+
import java.util.function.Consumer;
4+
5+
public record VideoCard() {
6+
7+
public void render(Consumer<DigitalSignal> consumer) {
8+
DigitalSignal renderedSignal = () -> System.out.println("Video card rendered signal 🎲");
9+
consumer.accept(renderedSignal);
10+
}
11+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package pl.mperor.lab.java.design.pattern.structural.adapter;
2+
3+
import org.junit.jupiter.api.Assertions;
4+
import org.junit.jupiter.api.Test;
5+
import pl.mperor.lab.common.TestUtils;
6+
7+
public class DigitalToAnalogSignalAdapterTest {
8+
9+
@Test
10+
public void adapterShouldAllowToTransformDigitalSignalToAnalogSignal() {
11+
var out = TestUtils.setTempSystemOut();
12+
13+
var monitor = new ComputerMonitor();
14+
var videoCard = new VideoCard();
15+
16+
videoCard.render(digitalSignal ->
17+
monitor.display(new DigitalToAnalogSignalAdapter(digitalSignal))
18+
);
19+
20+
var outLines = out.lines();
21+
Assertions.assertEquals("🖥️ Computer monitor displaying ...", outLines.getFirst());
22+
Assertions.assertEquals("Video card rendered signal 🎲", outLines.getSecond());
23+
24+
TestUtils.resetSystemOut();
25+
}
26+
27+
}

0 commit comments

Comments
 (0)