|  | @@ -0,0 +1,54 @@
 | 
	
		
			
				|  |  | +import {
 | 
	
		
			
				|  |  | +  MeasureSizeCalculator,
 | 
	
		
			
				|  |  | +} from "../../../src/MusicalScore/Calculation/MeasureSizeCalculator.ts";
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import Vex = require("vexflow");
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +describe("Measure Size Calculator Tests", () => {
 | 
	
		
			
				|  |  | +  // Initialization
 | 
	
		
			
				|  |  | +  let stave: Vex.Flow.Stave = new Vex.Flow.Stave(0, 0, 0);
 | 
	
		
			
				|  |  | +  let voices: Vex.Flow.Voice[];
 | 
	
		
			
				|  |  | +  //let formatter: Vex.Flow.Formatter = new Vex.Flow.Formatter();
 | 
	
		
			
				|  |  | +  let formatter: any;
 | 
	
		
			
				|  |  | +  // Create a voice with a note
 | 
	
		
			
				|  |  | +  let voice: Vex.Flow.Voice;
 | 
	
		
			
				|  |  | +  let note: Vex.Flow.StaveNote;
 | 
	
		
			
				|  |  | +  let calc: MeasureSizeCalculator;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  it("One note", (done: MochaDone) => {
 | 
	
		
			
				|  |  | +    formatter = new Vex.Flow.Formatter();
 | 
	
		
			
				|  |  | +    voice = new Vex.Flow.Voice(undefined);
 | 
	
		
			
				|  |  | +    note = new Vex.Flow.StaveNote({ keys: ["b/4"], "duration": "1" });
 | 
	
		
			
				|  |  | +    voice.addTickables([note]);
 | 
	
		
			
				|  |  | +    voices = [voice];
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    chai.expect(formatter.preCalculateMinTotalWidth(voices)).to.equal(22);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    calc = new MeasureSizeCalculator(
 | 
	
		
			
				|  |  | +      stave, voices, <Vex.Flow.Formatter> formatter
 | 
	
		
			
				|  |  | +    );
 | 
	
		
			
				|  |  | +    chai.expect(calc.getBottomBorder()).to.equal(5);
 | 
	
		
			
				|  |  | +    done();
 | 
	
		
			
				|  |  | +  });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  it("Four quarter notes", (done: MochaDone) => {
 | 
	
		
			
				|  |  | +    formatter = new Vex.Flow.Formatter();
 | 
	
		
			
				|  |  | +    voice = new Vex.Flow.Voice(undefined);
 | 
	
		
			
				|  |  | +    voice.addTickables([
 | 
	
		
			
				|  |  | +      new Vex.Flow.StaveNote({ keys: ["c/4"], "duration": "q" }),
 | 
	
		
			
				|  |  | +      new Vex.Flow.StaveNote({ keys: ["d/4"], "duration": "q" }),
 | 
	
		
			
				|  |  | +      new Vex.Flow.StaveNote({ keys: ["e/4"], "duration": "q" }),
 | 
	
		
			
				|  |  | +      new Vex.Flow.StaveNote({ keys: ["f/4"], "duration": "q" }),
 | 
	
		
			
				|  |  | +    ]);
 | 
	
		
			
				|  |  | +    voices = [voice];
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    chai.expect(formatter.preCalculateMinTotalWidth(voices)).to.equal(64);
 | 
	
		
			
				|  |  | +    calc = new MeasureSizeCalculator(
 | 
	
		
			
				|  |  | +      stave, voices, <Vex.Flow.Formatter> formatter
 | 
	
		
			
				|  |  | +    );
 | 
	
		
			
				|  |  | +    chai.expect(calc.getWidth()).to.equal(64);
 | 
	
		
			
				|  |  | +    chai.expect(calc.getBottomBorder()).to.equal(6);
 | 
	
		
			
				|  |  | +    chai.expect(calc.getTopBorder()).to.equal(0);
 | 
	
		
			
				|  |  | +    done();
 | 
	
		
			
				|  |  | +  });
 | 
	
		
			
				|  |  | +});
 |