Skip to content

Commit 8b29ef9

Browse files
committed
F!! AwtApprovals.verifySequenceWithTimings
1 parent 8d96bd2 commit 8b29ef9

File tree

5 files changed

+45
-16
lines changed

5 files changed

+45
-16
lines changed

approvaltests-tests/src/test/java/org/approvaltests/awt/ApprovalsTest.java

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
11
package org.approvaltests.awt;
22

3-
import com.spun.util.Tuple;
43
import java.time.Duration;
4+
55
import org.approvaltests.core.Options;
6-
import org.approvaltests.reporters.*;
6+
import org.approvaltests.reporters.FileCaptureReporter;
7+
import org.approvaltests.reporters.ImageWebReporter;
8+
import org.approvaltests.reporters.UseReporter;
79
import org.junit.jupiter.api.Disabled;
810
import org.junit.jupiter.api.Test;
911
import org.junit.jupiter.api.condition.DisabledOnJre;
1012
import org.junit.jupiter.api.condition.EnabledOnJre;
1113
import org.junit.jupiter.api.condition.JRE;
1214

15+
import com.spun.util.Tuple;
16+
1317
//@UseReporter({FileCaptureReporter.class})
1418
public class ApprovalsTest
1519
{
@@ -41,7 +45,15 @@ void testSequence()
4145
{
4246
SquareDrawer squareDrawer = new SquareDrawer();
4347
AwtApprovals.verifySequence(5, f -> squareDrawer.setSquareSize(f * 10));
44-
// AwtApprovals.verifySequence(5, Duration.ofMillis(500), f -> squareDrawer.setSquareSize(f * 10));
45-
// AwtApprovals.verifySequence(5, f -> new Tuple(squareDrawer.setSquareSize(f * 10), Duration.ofMillis(500));
48+
// AwtApprovals.verifySequence(5, Duration.ofMillis(500), f -> squareDrawer.setSquareSize(f * 10));
49+
}
50+
@Test
51+
@UseReporter(ImageWebReporter.class)
52+
void testSequenceWithTimings()
53+
{
54+
SquareDrawer squareDrawer = new SquareDrawer();
55+
AwtApprovals.verifySequenceWithTimings(5,
56+
f -> new Tuple<>(squareDrawer.setSquareSize(f * 10), Duration.ofSeconds(1 + f)));
57+
// TODO: write documentation
4658
}
4759
}
1.28 KB
Loading

approvaltests/src/main/java/org/approvaltests/awt/AwtApprovals.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.awt.Component;
44
import java.awt.Image;
55
import java.awt.image.BufferedImage;
6+
import java.time.Duration;
67

78
import org.approvaltests.Approvals;
89
import org.approvaltests.core.Options;
@@ -14,6 +15,7 @@
1415
import org.lambda.functions.Function1;
1516

1617
import com.spun.swing.Paintable;
18+
import com.spun.util.Tuple;
1719
import com.spun.util.images.ImageWriter;
1820

1921
public class AwtApprovals
@@ -57,9 +59,20 @@ public static void verifySequence(int numberOfFrames, Function1<Integer, Paintab
5759
{
5860
verifySequence(numberOfFrames, sequenceRenderer, new Options());
5961
}
62+
public static void verifySequenceWithTimings(int numberOfFrames,
63+
Function1<Integer, Tuple<Paintable, Duration>> sequenceRenderer)
64+
{
65+
verifySequenceWithTimings(numberOfFrames, sequenceRenderer, new Options());
66+
}
67+
public static void verifySequenceWithTimings(int numberOfFrames,
68+
Function1<Integer, Tuple<Paintable, Duration>> sequenceRenderer, Options options)
69+
{
70+
Approvals.verify(new PaintableMultiframeWriter(numberOfFrames, sequenceRenderer), options);
71+
}
6072
public static void verifySequence(int numberOfFrames, Function1<Integer, Paintable> sequenceRenderer,
6173
Options options)
6274
{
63-
Approvals.verify(new PaintableMultiframeWriter(numberOfFrames, sequenceRenderer), options);
75+
Approvals.verify(new PaintableMultiframeWriter(numberOfFrames,
76+
c -> new Tuple<>(sequenceRenderer.call(c), Duration.ofMillis(500))), options);
6477
}
6578
}

approvaltests/src/main/java/org/approvaltests/awt/GifSequenceWriter.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
// License. To view a copy of this license, visit
99
// http://creativecommons.org/licenses/by/3.0/ or send a letter to Creative
1010
// Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.
11+
import com.spun.util.Tuple;
1112
import java.awt.image.BufferedImage;
1213
import java.awt.image.RenderedImage;
1314
import java.io.File;
@@ -16,6 +17,7 @@
1617
import java.util.ArrayList;
1718
import java.util.Iterator;
1819

20+
import java.util.List;
1921
import javax.imageio.IIOException;
2022
import javax.imageio.IIOImage;
2123
import javax.imageio.ImageIO;
@@ -88,16 +90,16 @@ public static byte[] getBytesForLoopContinuously(boolean loopContinuously)
8890
byte[] once = {1, 1, 0};
8991
return loopContinuously ? loop : once;
9092
}
91-
static File writeAnimatedGif(File imageFile, ArrayList<BufferedImage> images, Duration timeBetweenFrames)
93+
static File writeAnimatedGif(File imageFile, List<Tuple<BufferedImage, Duration>> images)
9294
{
9395
try (ImageOutputStream output = new FileImageOutputStream(imageFile))
9496
{
95-
try (GifSequenceWriter writer = new GifSequenceWriter(output, images.get(0).getType(), timeBetweenFrames,
97+
try (GifSequenceWriter writer = new GifSequenceWriter(output, images.get(0).getFirst().getType(), Duration.ZERO,
9698
true))
9799
{
98-
for (BufferedImage image : images)
100+
for (Tuple<BufferedImage, Duration> image : images)
99101
{
100-
writer.writeToSequence(image, timeBetweenFrames);
102+
writer.writeToSequence(image.getFirst(), image.getSecond());
101103
}
102104
}
103105
}

approvaltests/src/main/java/org/approvaltests/awt/PaintableMultiframeWriter.java

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.approvaltests.awt;
22

3+
import com.spun.util.Tuple;
34
import java.awt.image.BufferedImage;
45
import java.io.File;
56
import java.time.Duration;
@@ -14,24 +15,25 @@
1415
public class PaintableMultiframeWriter implements ApprovalWriter
1516
{
1617
private int numberOfFrames;
17-
private Function1<Integer, Paintable> frameGetter;
18-
public PaintableMultiframeWriter(int numberOfFrames, Function1<Integer, Paintable> frameGetter)
18+
private Function1<Integer, Tuple<Paintable,Duration>> frameGetter;
19+
public PaintableMultiframeWriter(int numberOfFrames, Function1<Integer, Tuple<Paintable,Duration>> frameGetter)
1920
{
2021
this.numberOfFrames = numberOfFrames;
2122
this.frameGetter = frameGetter;
2223
}
2324
@Override
2425
public File writeReceivedFile(File received)
2526
{
26-
return GifSequenceWriter.writeAnimatedGif(received, getBufferedImages(), Duration.ofMillis(500));
27+
return GifSequenceWriter.writeAnimatedGif(received, getBufferedImages());
2728
}
28-
private ArrayList<BufferedImage> getBufferedImages()
29+
private ArrayList<Tuple<BufferedImage, Duration>> getBufferedImages()
2930
{
30-
ArrayList<BufferedImage> images = new ArrayList<>();
31+
ArrayList<Tuple<BufferedImage, Duration>> images = new ArrayList<>();
3132
for (int i = 0; i < numberOfFrames; i++)
3233
{
33-
BufferedImage image = PaintableApprovalWriter.drawComponent(frameGetter.call(i));
34-
images.add(image);
34+
final Tuple<Paintable, Duration> tuple = frameGetter.call(i);
35+
BufferedImage image = PaintableApprovalWriter.drawComponent(tuple.getFirst());
36+
images.add(new Tuple<>(image, tuple.getSecond()));
3537
}
3638
return images;
3739
}

0 commit comments

Comments
 (0)