package org.projectusus.ui.internal; import static org.junit.Assert.assertEquals; import java.util.ArrayList; import org.junit.Test; import org.projectusus.core.basis.CodeProportion; import org.projectusus.core.basis.FileHotspot; import org.projectusus.core.basis.Histogram; import org.projectusus.core.basis.Hotspot; import org.projectusus.core.basis.SourceCodeLocation; public class AnalysisDisplayEntryTest { @Test public void noHistory_noHotspots() { AnalysisDisplayEntry entry = new AnalysisDisplayEntry( codeProportion( 0.5 ) ); assertEquals( 0, entry.getTrend() ); assertEquals( 0, entry.getAdvancedTrend() ); } @Test public void smallChangeInHistory_noHotspots() { AnalysisDisplayEntry entry = new AnalysisDisplayEntry( codeProportion( 0.5 ) ); entry.setCodeProportion( codeProportion( 1.49 ) ); assertEquals( 0, entry.getTrend() ); assertEquals( 0, entry.getAdvancedTrend() ); } @Test public void largeChangeInHistory_noHotspots() { AnalysisDisplayEntry entry = new AnalysisDisplayEntry( codeProportion( 0.5 ) ); entry.setCodeProportion( codeProportion( 1.5 ) ); assertEquals( 1, entry.getTrend() ); assertEquals( 1, entry.getAdvancedTrend() ); } @Test public void noHistory_hasEmptyListOfHotspots() { AnalysisDisplayEntry entry = new AnalysisDisplayEntry( codeProportion( 0.5, new ArrayList<Hotspot>() ) ); assertEquals( 0, entry.getTrend() ); assertEquals( 0, entry.getAdvancedTrend() ); } @Test public void noHistory_hasOneHotspot() { ArrayList<Hotspot> hotspots = new ArrayList<Hotspot>(); hotspots.add( hotspot( "A", 5 ) ); AnalysisDisplayEntry entry = new AnalysisDisplayEntry( codeProportion( 0.5, hotspots ) ); assertEquals( 0, entry.getTrend() ); assertEquals( 0, entry.getAdvancedTrend() ); } @Test public void largeChangeInHistory_hasOneHotspot_hotspotRemainsConstant() { ArrayList<Hotspot> hotspots = new ArrayList<Hotspot>(); hotspots.add( hotspot( "A", 5 ) ); AnalysisDisplayEntry entry = new AnalysisDisplayEntry( codeProportion( 0.5, hotspots ) ); entry.setCodeProportion( codeProportion( 2.5, hotspots ) ); assertEquals( 0, entry.getTrend() ); assertEquals( 0, entry.getAdvancedTrend() ); } @Test public void hotspotGotWorse() { ArrayList<Hotspot> hotspots = new ArrayList<Hotspot>(); hotspots.add( hotspot( "A", 5 ) ); AnalysisDisplayEntry entry = new AnalysisDisplayEntry( codeProportion( 0.5, hotspots ) ); ArrayList<Hotspot> newHotspots = new ArrayList<Hotspot>(); newHotspots.add( hotspot( "A", 10 ) ); entry.setCodeProportion( codeProportion( 0.5, newHotspots ) ); assertEquals( 0, entry.getTrend() ); assertEquals( 5, entry.getAdvancedTrend() ); } @Test public void hotspotGotBetter() { ArrayList<Hotspot> hotspots = new ArrayList<Hotspot>(); hotspots.add( hotspot( "A", 5 ) ); AnalysisDisplayEntry entry = new AnalysisDisplayEntry( codeProportion( 0.5, hotspots ) ); ArrayList<Hotspot> newHotspots = new ArrayList<Hotspot>(); newHotspots.add( hotspot( "A", 1 ) ); entry.setCodeProportion( codeProportion( 0.5, newHotspots ) ); assertEquals( 0, entry.getTrend() ); assertEquals( -4, entry.getAdvancedTrend() ); } @Test public void hotspotWasAdded() { ArrayList<Hotspot> hotspots = new ArrayList<Hotspot>(); hotspots.add( hotspot( "A", 5 ) ); AnalysisDisplayEntry entry = new AnalysisDisplayEntry( codeProportion( 0.5, hotspots ) ); ArrayList<Hotspot> newHotspots = new ArrayList<Hotspot>(); newHotspots.add( hotspot( "A", 5 ) ); newHotspots.add( hotspot( "B", 10 ) ); entry.setCodeProportion( codeProportion( 0.5, newHotspots ) ); assertEquals( 1, entry.getTrend() ); assertEquals( 10, entry.getAdvancedTrend() ); } @Test public void hotspotWasRemoved() { ArrayList<Hotspot> hotspots = new ArrayList<Hotspot>(); hotspots.add( hotspot( "A", 5 ) ); hotspots.add( hotspot( "B", 5 ) ); AnalysisDisplayEntry entry = new AnalysisDisplayEntry( codeProportion( 0.5, hotspots ) ); ArrayList<Hotspot> newHotspots = new ArrayList<Hotspot>(); newHotspots.add( hotspot( "A", 5 ) ); entry.setCodeProportion( codeProportion( 0.5, newHotspots ) ); assertEquals( 0, entry.getTrend() ); // TODO ?!?! assertEquals( -5, entry.getAdvancedTrend() ); } private static CodeProportion codeProportion( double average ) { return new CodeProportion( null, null, 0, null, average ); } private static CodeProportion codeProportion( double average, ArrayList<Hotspot> hotspots ) { return new CodeProportion( null, null, null, 0, null, average, hotspots, new Histogram(), null ); } private static FileHotspot hotspot( String name, int metricsValue ) { return new FileHotspot( new SourceCodeLocation( name, 0, 0 ), metricsValue, null ); } }