//----------------------------------------------------------------------------// // // // F i l a m e n t T e s t // // // //----------------------------------------------------------------------------// // <editor-fold defaultstate="collapsed" desc="hdr"> // // Copyright (C) Hervé Bitteur 2000-2011. All rights reserved. // // This software is released under the GNU General Public License. // // Goto http://kenai.com/projects/audiveris to report bugs or suggestions. // //----------------------------------------------------------------------------// // </editor-fold> package omr.grid; import omr.lag.BasicLag; import omr.lag.Lag; import omr.lag.Section; import omr.run.Orientation; import omr.run.Run; import omr.sheet.Scale; import org.junit.After; import org.junit.AfterClass; import static org.junit.Assert.*; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import java.awt.Point; import java.awt.geom.Point2D; /** * Unitary tests for {@link Filament} class. * * @author Hervé Bitteur */ public class FilamentTest { //~ Instance fields -------------------------------------------------------- private Scale scale = new Scale(20, 3); private Orientation orientation; private Lag lag; //~ Constructors ----------------------------------------------------------- /** * Creates a new FilamentTest object. */ public FilamentTest () { System.out.println("FilamentTest"); } //~ Methods ---------------------------------------------------------------- @Before public void setUp () { System.out.println("setUp"); } @BeforeClass public static void setUpClass () throws Exception { System.out.println("setUpClass"); } @After public void tearDown () { System.out.println("tearDown"); } @AfterClass public static void tearDownClass () throws Exception { System.out.println("tearDownClass"); } /** * Test of addSection method, of class Filament. */ @Test public void testAddSection () { System.out.println("+++ addSection"); for (Orientation ori : Orientation.values()) { setOrientation(ori); Filament instance = createNakedInstance(); Section section = createSectionOne(); instance.addSection(section); System.out.println(instance.asciiDrawing()); System.out.println(instance.dumpOf()); } } /** * Test of containsSection method, of class Filament. */ @Test public void testContainsSection () { System.out.println("+++ containsSection"); for (Orientation ori : Orientation.values()) { setOrientation(ori); Filament instance = createFil(); int id = 2; boolean expResult = true; boolean result = instance.containsSection(id); assertEquals(expResult, result); } } /** * Test of dumpOf method, of class Filament. */ @Test public void testDump () { System.out.println("+++ dump"); for (Orientation ori : Orientation.values()) { setOrientation(ori); Filament instance = createFil(); instance.asciiDrawing(); instance.dumpOf(); } } /** * Test of getAncestor method, of class Filament. */ @Test public void testGetAncestor () { System.out.println("+++ getAncestor"); for (Orientation ori : Orientation.values()) { setOrientation(ori); Filament instance = createFil(); Filament expResult = instance; Filament result = (Filament) instance.getAncestor(); assertEquals(expResult, result); } } /** * Test of getPositionAt method, of class Filament. */ @Test public void testGetPositionAt () { System.out.println("+++ getPositionAt"); for (Orientation ori : Orientation.values()) { setOrientation(ori); Filament instance = createFil(); instance.asciiDrawing(); double coord = 100; double expResult = 25.5; double result = instance.getPositionAt(coord, orientation); assertEquals(expResult, result, 0.0); coord = 115; expResult = 28.9; result = instance.getPositionAt(coord, orientation); assertEquals(expResult, result, 0.1); coord = 119; expResult = 29.5; result = instance.getPositionAt(coord, orientation); assertEquals(expResult, result, 0.1); coord = 158; expResult = 30; result = instance.getPositionAt(coord, orientation); assertEquals(expResult, result, 0.1); coord = 160; expResult = 29.7; result = instance.getPositionAt(coord, orientation); assertEquals(expResult, result, 0.1); coord = 170; expResult = 28; result = instance.getPositionAt(coord, orientation); assertEquals(expResult, result, 0.1); coord = 180; expResult = 28; result = instance.getPositionAt(coord, orientation); assertEquals(expResult, result, 0.1); } } /** * Test of getProbeWidth method, of class Filament. */ @Test public void testGetProbeWidth () { // System.out.println("getProbeWidth"); // Fraction expResult = null; // Fraction result = Filament.getProbeWidth(); // assertEquals(expResult, result); // fail("The test case is a prototype."); } /** * Test of getStartPoint method, of class Filament. */ @Test public void testGetStartPoint () { System.out.println("+++ getStartPoint"); for (Orientation ori : Orientation.values()) { setOrientation(ori); Filament instance = createFil(); Point2D expResult = orientation.absolute( new Point2D.Double(100, 25.5)); Point2D result = instance.getStartPoint(Orientation.HORIZONTAL); instance.asciiDrawing(); assertEquals(expResult, result); } } /** * Test of getStopPoint method, of class Filament. */ @Test public void testGetStopPoint () { System.out.println("+++ getStopPoint"); for (Orientation ori : Orientation.values()) { setOrientation(ori); Filament instance = createFil(); Point2D expResult = orientation.absolute( new Point2D.Double(171, 27.8)); Point2D result = instance.getStopPoint(Orientation.HORIZONTAL); assertEquals(expResult.getX(), result.getX(), 0.1); assertEquals(expResult.getY(), result.getY(), 0.1); } } /** * Test of getThicknessAt method, of class Filament. */ @Test public void testGetThicknessAt () { System.out.println("+++ getThicknessAt"); double delta = 0.5; for (Orientation ori : Orientation.values()) { setOrientation(ori); Filament instance = createFil(); instance.asciiDrawing(); int coord = 100; int expResult = 2; double result = instance.getThicknessAt(coord, orientation); assertEquals(expResult, result, delta); coord = 105; expResult = 2; result = instance.getThicknessAt(coord, orientation); assertEquals(expResult, result, delta); coord = 110; expResult = 2; result = instance.getThicknessAt(coord, orientation); assertEquals(expResult, result, delta); coord = 111; expResult = 2; result = instance.getThicknessAt(coord, orientation); assertEquals(expResult, result, delta); coord = 115; expResult = 1; result = instance.getThicknessAt(coord, orientation); assertEquals(expResult, result, delta); coord = 125; expResult = 0; result = instance.getThicknessAt(coord, orientation); assertEquals(expResult, result, delta); } } /** * Test of includeSections method, of class Filament. */ @Test public void testInclude () { System.out.println("+++ include"); for (Orientation ori : Orientation.values()) { setOrientation(ori); Filament instance = createFil(); Filament that = createFilTwo(); instance.stealSections(that); that = createFilThree(); instance.stealSections(that); that = createFilFour(); instance.stealSections(that); instance.asciiDrawing(); instance.dumpOf(); } } /** * Test of invalidateCache method, of class Filament. */ @Test public void testInvalidateCache () { System.out.println("+++ invalidateCache"); for (Orientation ori : Orientation.values()) { setOrientation(ori); Filament instance = createFil(); instance.invalidateCache(); } } /** * Test of renderLine method, of class Filament. */ @Test public void testRenderLine () { // System.out.println("renderLine"); // Graphics2D g = null; // Filament instance = null; // instance.renderLine(g); // fail("The test case is a prototype."); } /** * Test of setEndingPoints method, of class Filament. */ @Test public void testSetEndingPoints () { System.out.println("+++ setEndingPoints"); for (Orientation ori : Orientation.values()) { setOrientation(ori); Filament instance = createFil(); instance.stealSections(createFilTwo()); instance.stealSections(createFilThree()); instance.stealSections(createFilFour()); Point pStart = new Point(80, 26); Point2D pStop = instance.getStopPoint(Orientation.HORIZONTAL); instance.setEndingPoints(pStart, pStop); instance.asciiDrawing(); instance.dumpOf(); } } /** * Test of slopeAt method, of class Filament. */ @Test public void testSlopeAt () { System.out.println("+++ slopeAt"); for (Orientation ori : Orientation.values()) { setOrientation(ori); Filament instance = createFil(); instance.asciiDrawing(); assertEquals(0.2, instance.slopeAt(100, ori), 0.1); assertEquals(0.2, instance.slopeAt(110, ori), 0.1); assertEquals(0.1, instance.slopeAt(120, ori), 0.1); assertEquals(0.1, instance.slopeAt(125, ori), 0.1); assertEquals(0.1, instance.slopeAt(130, ori), 0.1); assertEquals(0.0, instance.slopeAt(135, ori), 0.1); assertEquals(-0.1, instance.slopeAt(155, ori), 0.1); assertEquals(-0.2, instance.slopeAt(171, ori), 0.1); } } /** * Test of trueLength method, of class Filament. */ @Test public void testTrueLength () { System.out.println("+++ trueLength"); for (Orientation ori : Orientation.values()) { setOrientation(ori); Filament instance = createFil(); instance.asciiDrawing(); instance.dumpOf(); int expResult = 39; int result = instance.trueLength(); assertEquals(expResult, result); } } private Filament createFil () { Filament fil = createNakedInstance(); fil.addSection(createSectionOne()); fil.addSection(createSectionTwo()); fil.addSection(createSectionThree()); return fil; } private Filament createFilFour () { Filament fil = createNakedInstance(); final int level = 127; Run r1 = new Run(260, 5, level); Section s = lag.createSection(35, r1); fil.addSection(s); return fil; } private Filament createFilThree () { Filament fil = createNakedInstance(); final int level = 127; Run r1 = new Run(227, 35, level); Section s = lag.createSection(37, r1); fil.addSection(s); return fil; } private Filament createFilTwo () { Filament fil = createNakedInstance(); final int level = 127; Run r1 = new Run(200, 5, level); Section s = lag.createSection(34, r1); Run r2 = new Run(198, 10, level); s.append(r2); fil.addSection(s); return fil; } private Filament createNakedInstance () { lag = new BasicLag("lag", orientation); return new Filament(scale); } private Section createSectionOne () { final int level = 127; Run r1 = new Run(100, 10, level); Section s = lag.createSection(25, r1); Run r2 = new Run(100, 20, level); s.append(r2); //s.dumpOf(); return s; } private Section createSectionThree () { final int level = 127; Run r1 = new Run(160, 10, level); Section s = lag.createSection(27, r1); Run r2 = new Run(160, 12, level); s.append(r2); Run r3 = new Run(160, 5, level); s.append(r3); //s.dumpOf(); return s; } private Section createSectionTwo () { final int level = 127; Run r1 = new Run(130, 20, level); Section s = lag.createSection(30, r1); Run r2 = new Run(131, 20, level); s.append(r2); Run r3 = new Run(132, 20, level); s.append(r3); //s.dumpOf(); return s; } private void setOrientation (Orientation orientation) { this.orientation = orientation; System.out.println("Orientation: " + orientation); } }