@akamfoad/qrcode
Version:
The library is generating QR codes as SVG, HTML5 Canvas, PNG and JPG files, or text.
88 lines (78 loc) • 4.17 kB
text/typescript
import { describe, expect, it } from 'vitest';
import DimensionUtils from '../utils/DimensionUtils';
describe('DimensionUtils', () => {
describe('calculateDimension', () => {
it('should return value if value is number', () => {
expect(DimensionUtils.calculateDimension(100, 400)).toEqual(100);
expect(DimensionUtils.calculateDimension(10, 40)).toEqual(10);
expect(DimensionUtils.calculateDimension(0, 40)).toEqual(0);
expect(DimensionUtils.calculateDimension(42, 100)).toEqual(42);
});
it('should return calculated dimension if value is percentage', () => {
expect(DimensionUtils.calculateDimension('100%', 400)).toEqual(400);
expect(DimensionUtils.calculateDimension('75%', 400)).toEqual(300);
expect(DimensionUtils.calculateDimension('50%', 400)).toEqual(200);
expect(DimensionUtils.calculateDimension('25%', 400)).toEqual(100);
expect(DimensionUtils.calculateDimension('10%', 40)).toEqual(4);
expect(DimensionUtils.calculateDimension('0%', 40)).toEqual(0);
expect(DimensionUtils.calculateDimension('42%', 100)).toEqual(42);
});
it('should parseFloat for other values', () => {
expect(DimensionUtils.calculateDimension('10', 42)).toEqual(10);
expect(DimensionUtils.calculateDimension('10a', 42)).toEqual(10);
expect(DimensionUtils.calculateDimension('10.0', 42)).toEqual(10);
});
});
describe('calculatePosition', () => {
it('should return value if value is number', () => {
expect(DimensionUtils.calculatePosition(100, 200, 400)).toEqual(100);
expect(DimensionUtils.calculatePosition(10, 20, 40)).toEqual(10);
expect(DimensionUtils.calculatePosition(0, 10, 40)).toEqual(0);
expect(DimensionUtils.calculatePosition(42, 50, 100)).toEqual(42);
});
it('should return 0 if value is top or left', () => {
expect(DimensionUtils.calculatePosition('left', 200, 400)).toEqual(0);
expect(DimensionUtils.calculatePosition('top', 20, 40)).toEqual(0);
});
it('should return calculate position for right or bottom', () => {
expect(DimensionUtils.calculatePosition('right', 200, 400)).toEqual(200);
expect(DimensionUtils.calculatePosition('right', 10, 40)).toEqual(30);
expect(DimensionUtils.calculatePosition('bottom', 50, 50)).toEqual(0);
expect(DimensionUtils.calculatePosition('bottom', 10, 40)).toEqual(30);
});
it('should return calculate position for center', () => {
expect(DimensionUtils.calculatePosition('center', 200, 400)).toEqual(100);
expect(DimensionUtils.calculatePosition('center', 10, 40)).toEqual(15);
expect(DimensionUtils.calculatePosition('center', 50, 50)).toEqual(0);
expect(DimensionUtils.calculatePosition('center', 12, 42)).toEqual(15);
});
it('should return calculate position if value is percentage', () => {
expect(DimensionUtils.calculatePosition('10%', 200, 400)).toEqual(40);
expect(DimensionUtils.calculatePosition('20%', 200, 400)).toEqual(80);
expect(DimensionUtils.calculatePosition('50%', 200, 400)).toEqual(200);
expect(DimensionUtils.calculatePosition('100%', 200, 400)).toEqual(400);
expect(DimensionUtils.calculatePosition('25%', 10, 40)).toEqual(10);
expect(DimensionUtils.calculatePosition('0%', 10, 40)).toEqual(0);
});
it('should return calculate position if side is provided', () => {
expect(DimensionUtils.calculatePosition('left 10', 200, 400)).toEqual(10);
expect(DimensionUtils.calculatePosition('right 10', 200, 400)).toEqual(
190,
);
expect(DimensionUtils.calculatePosition('left 10%', 200, 400)).toEqual(
40,
);
expect(DimensionUtils.calculatePosition('right 10%', 200, 400)).toEqual(
160,
);
expect(DimensionUtils.calculatePosition('left 50%', 200, 400)).toEqual(
200,
);
expect(DimensionUtils.calculatePosition('right 50%', 200, 400)).toEqual(
0,
);
expect(DimensionUtils.calculatePosition('left 55', 10, 100)).toEqual(55);
expect(DimensionUtils.calculatePosition('right 55', 10, 100)).toEqual(35);
});
});
});