@spearwolf/twopoint5d
Version:
a library to create 2.5d realtime graphics and pixelart with three.js
52 lines • 2.24 kB
JavaScript
import { Vector2 } from 'three';
import { describe, expect, it } from 'vitest';
import { fitIntoRectangle } from './fitIntoRectangle.js';
describe('fitIntoRectangle', () => {
it('pixelZoom', () => {
const target = new Vector2();
expect(fitIntoRectangle(new Vector2(640, 400), { pixelZoom: 2 }, target)).toBe(target);
expect(target.width).toBe(320);
expect(target.height).toBe(200);
});
it('fill', () => {
const target = new Vector2();
expect(fitIntoRectangle(new Vector2(640, 400), { fit: 'fill' }, target)).toBe(target);
expect(target.width).toBe(640);
expect(target.height).toBe(400);
});
it('contain & width', () => {
const target = new Vector2();
expect(fitIntoRectangle(new Vector2(640, 400), { fit: 'contain', width: 400 }, target)).toBe(target);
expect(target.width).toBe(400);
expect(target.height).toBe(250);
});
it('contain & width & minPixelZoom', () => {
const target = new Vector2();
expect(fitIntoRectangle(new Vector2(640, 400), { fit: 'contain', width: 400, minPixelZoom: 2 }, target)).toBe(target);
expect(target.width).toBe(320);
expect(target.height).toBe(200);
expect(fitIntoRectangle(new Vector2(640, 400), {
fit: 'contain',
width: 400,
minPixelZoom: 1,
}).toArray()).toEqual([400, 250]);
});
it('contain & width & maxPixelZoom', () => {
const target = new Vector2();
expect(fitIntoRectangle(new Vector2(640, 400), { fit: 'contain', width: 100, maxPixelZoom: 7 }, target)).toBe(target);
expect(target.width).toBe(100);
expect(target.height).toBe(62.5);
expect(fitIntoRectangle(new Vector2(640, 400), {
fit: 'contain',
width: 100,
maxPixelZoom: 2,
}).toArray()).toEqual([320, 200]);
});
it('contain & height', () => {
const target = new Vector2();
expect(fitIntoRectangle(new Vector2(640, 400), { fit: 'contain', height: 100 }, target)).toBe(target);
expect(target.width).toBe(160);
expect(target.height).toBe(100);
});
});
//# sourceMappingURL=fitIntoRectangle.spec.js.map