UNPKG

@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
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); }); }); });