package com.xenoage.zong.musiclayout.stampings.bitmap;
import static org.junit.Assert.*;
import com.xenoage.utils.math.Delta;
import com.xenoage.utils.math.Units;
import com.xenoage.zong.musiclayout.stampings.bitmap.BitmapStaff;
import org.junit.Test;
/**
* Test cases for a {@link BitmapStaff}.
*
* @author Andreas Wenger
*/
public class BitmapStaffTest {
@Test public void test8Pixel1() {
//1mm -> 1px, 5 lines, interline: 2 mm. Displayed staff must be 8px high.
float scaling = Units.pxToMm(1, 1);
BitmapStaff ss = new BitmapStaff(5, 2, 0.1f, scaling);
assertEquals(Units.pxToMm(8, scaling), ss.heightMm, Delta.DELTA_FLOAT);
assertEquals(Units.pxToMm(0, scaling), ss.yOffsetMm, Delta.DELTA_FLOAT);
assertEquals(Units.pxToMm(1, scaling), ss.heightScaling, Delta.DELTA_FLOAT);
assertEquals(Units.pxToMm(2, scaling), ss.interlineSpaceMm, Delta.DELTA_FLOAT);
}
@Test public void test16Pixel() {
//1mm -> 2px, 5 lines, interline: 1.8 mm. Displayed staff must be 16px high.
float scaling = Units.pxToMm(2, 1);
BitmapStaff ss = new BitmapStaff(5, 1.8f, 0.1f, scaling);
assertEquals(Units.pxToMm(16, scaling), ss.heightMm, Delta.DELTA_FLOAT);
assertEquals(Units.pxToMm(-1, scaling), ss.yOffsetMm, Delta.DELTA_FLOAT);
assertEquals(16 / (2 * 4 * 1.8f), ss.heightScaling, Delta.DELTA_FLOAT);
assertEquals(Units.pxToMm(4, scaling), ss.interlineSpaceMm, Delta.DELTA_FLOAT);
}
@Test public void test12Pixel() {
//1mm -> 1px, 5 lines, interline: 3.4 mm. Displayed staff must be 12px high.
float scaling = Units.pxToMm(1, 1);
BitmapStaff ss = new BitmapStaff(5, 3.4f, 0.1f, scaling);
assertEquals(Units.pxToMm(12, scaling), ss.heightMm, Delta.DELTA_FLOAT);
assertEquals(Units.pxToMm(1, scaling), ss.yOffsetMm, Delta.DELTA_FLOAT);
assertEquals(12 / (4 * 3.4f), ss.heightScaling, Delta.DELTA_FLOAT_ROUGH);
assertEquals(Units.pxToMm(3, scaling), ss.interlineSpaceMm, Delta.DELTA_FLOAT);
}
@Test public void test13Pixel() {
//1mm -> 1px, 10 lines, interline: 1.4 mm. Displayed simplified staff must be (9*1.4)px high.
float scaling = Units.pxToMm(1, 1);
BitmapStaff ss = new BitmapStaff(10, 1.4f, 0.1f, scaling);
assertTrue(ss.isSimplifiedStaff);
assertEquals(Units.pxToMm(9 * 1.4f, scaling), ss.heightMm, Delta.DELTA_FLOAT_ROUGH);
assertEquals(Units.pxToMm(0, scaling), ss.yOffsetMm, Delta.DELTA_FLOAT);
assertEquals(1, ss.heightScaling, Delta.DELTA_FLOAT);
assertTrue(ss.interlineSpaceMm < 2); //simplified staff
}
@Test public void test2Pixel() {
//1mm -> 1px, 5 lines, interline: 0.55 mm. Displayed simplified staff must be (4*0.55)px high.
float scaling = Units.pxToMm(1, 1);
BitmapStaff ss = new BitmapStaff(5, 0.55f, 0.1f, scaling);
assertTrue(ss.isSimplifiedStaff);
assertEquals(Units.pxToMm(4 * 0.55f, scaling), ss.heightMm, Delta.DELTA_FLOAT);
assertEquals(Units.pxToMm(0, scaling), ss.yOffsetMm, Delta.DELTA_FLOAT);
assertEquals(1, ss.heightScaling, Delta.DELTA_FLOAT);
assertTrue(ss.interlineSpaceMm < 2); //simplified staff
}
}