/**
* Copyright (C) 2010-14 diirt developers. See COPYRIGHT.TXT
* All rights reserved. Use is subject to license terms. See LICENSE.TXT
*/
package org.diirt.graphene;
import org.diirt.util.stats.Range;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.time.Duration;
import java.time.Instant;
import org.diirt.util.stats.Ranges;
import org.diirt.util.time.TimeInterval;
import org.junit.Test;
import static org.junit.Assert.*;
import static org.hamcrest.Matchers.*;
import org.junit.Ignore;
/**
*
* @author carcassi
*/
public class TemporalGraph2DRendererTest {
@Test
public void aggregateTimeInterval1() {
Instant time = Instant.now();
TimeInterval interval1 = TimeInterval.after(Duration.ofSeconds(1), time);
TimeInterval interval2 = TimeInterval.after(Duration.ofSeconds(2), time);
assertThat(TemporalGraph2DRenderer.aggregateTimeInterval(interval1, interval2), sameInstance(interval2));
assertThat(TemporalGraph2DRenderer.aggregateTimeInterval(interval2, interval1), sameInstance(interval2));
}
@Test
public void aggregateTimeInterval2() {
Instant time = Instant.now();
TimeInterval interval1 = TimeInterval.after(Duration.ofSeconds(1), time);
TimeInterval interval2 = TimeInterval.around(Duration.ofSeconds(4), time);
assertThat(TemporalGraph2DRenderer.aggregateTimeInterval(interval1, interval2), sameInstance(interval2));
assertThat(TemporalGraph2DRenderer.aggregateTimeInterval(interval2, interval1), sameInstance(interval2));
}
@Test
public void aggregateTimeInterval4() {
Instant time = Instant.now();
TimeInterval interval1 = TimeInterval.around(Duration.ofSeconds(1), time);
TimeInterval interval2 = TimeInterval.after(Duration.ofSeconds(1), time);
TimeInterval total = TimeInterval.between(interval1.getStart(), interval2.getEnd());
assertThat(TemporalGraph2DRenderer.aggregateTimeInterval(interval1, interval2), equalTo(total));
assertThat(TemporalGraph2DRenderer.aggregateTimeInterval(interval2, interval1), equalTo(total));
}
@Test
public void aggregateTimeInterval3() {
Instant time = Instant.now();
TimeInterval interval1 = TimeInterval.before(Duration.ofSeconds(1), time);
TimeInterval interval2 = TimeInterval.after(Duration.ofSeconds(1), time.plus(Duration.ofSeconds(1)));
TimeInterval total = TimeInterval.between(interval1.getStart(), interval2.getEnd());
assertThat(TemporalGraph2DRenderer.aggregateTimeInterval(interval1, interval2), equalTo(total));
assertThat(TemporalGraph2DRenderer.aggregateTimeInterval(interval2, interval1), equalTo(total));
}
@Test
public void calculateRanges1() throws Exception {
TemporalGraph2DRenderer renderer = new TemporalGraph2DRenderer(300, 200) {
@Override
public TemporalGraph2DRendererUpdate newUpdate() {
return new TemporalGraph2DRendererUpdate();
}
};
BufferedImage image = new BufferedImage(300, 200, BufferedImage.TYPE_3BYTE_BGR);
Graphics2D graphics = (Graphics2D) image.getGraphics();
renderer.g = graphics;
Range initialRange = Ranges.range(0, 10);
Instant now = Instant.now();
TimeInterval initialTimeInterval = TimeInterval.between(now, now.plus(Duration.ofSeconds(1)));
renderer.calculateRanges(initialRange, initialTimeInterval);
assertThat(renderer.getPlotRange(), sameInstance(initialRange));
assertThat(renderer.getPlotTimeInterval(), sameInstance(initialTimeInterval));
Range newRange = Ranges.range(5, 15);
TimeInterval newTimeInterval = TimeInterval.between(now.minus(Duration.ofSeconds(1)), now);
renderer.calculateRanges(newRange, newTimeInterval);
assertThat(renderer.getPlotRange().getMinimum(), equalTo(Ranges.range(0, 15).getMinimum()));
assertThat(renderer.getPlotRange().getMaximum(), equalTo(Ranges.range(0, 15).getMaximum()));
assertThat(renderer.getPlotTimeInterval(), sameInstance(newTimeInterval));
}
@Test
public void timeGraphArea1() throws Exception {
TemporalGraph2DRenderer renderer = new TemporalGraph2DRenderer(300, 200) {
@Override
public TemporalGraph2DRendererUpdate newUpdate() {
return new TemporalGraph2DRendererUpdate();
}
};
BufferedImage image = new BufferedImage(300, 200, BufferedImage.TYPE_3BYTE_BGR);
Graphics2D graphics = (Graphics2D) image.getGraphics();
renderer.g = graphics;
Instant start = TimeScalesTest.create(2013, 1, 1, 12, 0, 0, 0);
Instant end = TimeScalesTest.create(2013, 1, 1, 12, 0, 2, 0);
renderer.calculateRanges(Ranges.range(0, 10), TimeInterval.between(start, end));
renderer.calculateGraphArea();
renderer.drawGraphArea();
ImageAssert.compareImages("timeGraph2DArea.1", image);
}
@Test
@Ignore
public void timeGraphAreaHours2() throws Exception {
// TODO: Fix multi-line labels
TemporalGraph2DRenderer renderer = new TemporalGraph2DRenderer(1000, 400) {
@Override
public TemporalGraph2DRendererUpdate newUpdate() {
return new TemporalGraph2DRendererUpdate();
}
};
BufferedImage image = new BufferedImage(1000, 400, BufferedImage.TYPE_3BYTE_BGR);
Graphics2D graphics = (Graphics2D) image.getGraphics();
renderer.g = graphics;
Instant start = TimeScalesTest.create( 2014 , 12 , 2 , 8 , 8 , 8 , 0 );
Instant end = TimeScalesTest.create( 2014 , 12 , 3 , 8 , 8 , 8 , 0 );
renderer.calculateRanges(Ranges.range(0, 10), TimeInterval.between(start, end));
renderer.calculateGraphArea();
renderer.drawGraphArea();
ImageAssert.compareImages( "timeGraph2DArea2" , image );
}
@Test
@Ignore
public void timeGraphAreaDays1() throws Exception {
// TODO: Fix multi-line labels
TemporalGraph2DRenderer renderer = new TemporalGraph2DRenderer(1000, 400) {
@Override
public TemporalGraph2DRendererUpdate newUpdate() {
return new TemporalGraph2DRendererUpdate();
}
};
BufferedImage image = new BufferedImage(1000, 400, BufferedImage.TYPE_3BYTE_BGR);
Graphics2D graphics = (Graphics2D) image.getGraphics();
renderer.g = graphics;
Instant start = TimeScalesTest.create( 2014 , 1 , 2 , 8 , 8 , 8 , 0 );
Instant end = TimeScalesTest.create( 2014 , 1 , 23 , 8 , 8 , 8 , 0 );
renderer.calculateRanges(Ranges.range(0, 10), TimeInterval.between(start, end));
renderer.calculateGraphArea();
renderer.drawGraphArea();
ImageAssert.compareImages( "timeGraph2DAreaDays1" , image );
//File f = new File( "src/test/resources/org/epics/graphene/timeGraph2DAreaDays1.png" );
//ImageIO.write( image , "png" , f );
}
}