mirror of
https://github.com/mermaid-js/mermaid.git
synced 2025-08-15 06:19:24 +02:00
chore: Add tests for calculateDeltaAndAngle
This commit is contained in:
@@ -117,6 +117,9 @@ export const getBuildConfig = ({ minify, core, watch, entryName }: BuildOptions)
|
|||||||
output,
|
output,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
define: {
|
||||||
|
'import.meta.vitest': 'undefined',
|
||||||
|
},
|
||||||
resolve: {
|
resolve: {
|
||||||
extensions: [],
|
extensions: [],
|
||||||
},
|
},
|
||||||
|
@@ -2,7 +2,7 @@ import mermaid from './mermaid.js';
|
|||||||
import { mermaidAPI } from './mermaidAPI.js';
|
import { mermaidAPI } from './mermaidAPI.js';
|
||||||
import './diagram-api/diagram-orchestration.js';
|
import './diagram-api/diagram-orchestration.js';
|
||||||
import { addDiagrams } from './diagram-api/diagram-orchestration.js';
|
import { addDiagrams } from './diagram-api/diagram-orchestration.js';
|
||||||
import { beforeAll, describe, it, expect, vi } from 'vitest';
|
import { beforeAll, describe, it, expect, vi, afterEach } from 'vitest';
|
||||||
import type { DiagramDefinition } from './diagram-api/types.js';
|
import type { DiagramDefinition } from './diagram-api/types.js';
|
||||||
|
|
||||||
beforeAll(async () => {
|
beforeAll(async () => {
|
||||||
|
@@ -19,14 +19,14 @@ const markerOffsets = {
|
|||||||
* @returns The angle, deltaX and deltaY
|
* @returns The angle, deltaX and deltaY
|
||||||
*/
|
*/
|
||||||
function calculateDeltaAndAngle(
|
function calculateDeltaAndAngle(
|
||||||
point1: Point | [number, number],
|
point1?: Point | [number, number],
|
||||||
point2: Point | [number, number]
|
point2?: Point | [number, number]
|
||||||
): { angle: number; deltaX: number; deltaY: number } {
|
): { angle: number; deltaX: number; deltaY: number } {
|
||||||
point1 = pointTransformer(point1);
|
|
||||||
point2 = pointTransformer(point2);
|
|
||||||
if (point1 === undefined || point2 === undefined) {
|
if (point1 === undefined || point2 === undefined) {
|
||||||
return { angle: 0, deltaX: 0, deltaY: 0 };
|
return { angle: 0, deltaX: 0, deltaY: 0 };
|
||||||
}
|
}
|
||||||
|
point1 = pointTransformer(point1);
|
||||||
|
point2 = pointTransformer(point2);
|
||||||
const [x1, y1] = [point1.x, point1.y];
|
const [x1, y1] = [point1.x, point1.y];
|
||||||
const [x2, y2] = [point2.x, point2.y];
|
const [x2, y2] = [point2.x, point2.y];
|
||||||
const deltaX = x2 - x1;
|
const deltaX = x2 - x1;
|
||||||
@@ -93,3 +93,44 @@ export const getLineFunctionsWithOffset = (
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (import.meta.vitest) {
|
||||||
|
const { it, expect, describe } = import.meta.vitest;
|
||||||
|
describe('calculateDeltaAndAngle', () => {
|
||||||
|
it('should calculate the angle and deltas between two points', () => {
|
||||||
|
expect(calculateDeltaAndAngle([0, 0], [0, 1])).toStrictEqual({
|
||||||
|
angle: 1.5707963267948966,
|
||||||
|
deltaX: 0,
|
||||||
|
deltaY: 1,
|
||||||
|
});
|
||||||
|
expect(calculateDeltaAndAngle([1, 0], [0, -1])).toStrictEqual({
|
||||||
|
angle: 0.7853981633974483,
|
||||||
|
deltaX: -1,
|
||||||
|
deltaY: -1,
|
||||||
|
});
|
||||||
|
expect(calculateDeltaAndAngle({ x: 1, y: 0 }, [0, -1])).toStrictEqual({
|
||||||
|
angle: 0.7853981633974483,
|
||||||
|
deltaX: -1,
|
||||||
|
deltaY: -1,
|
||||||
|
});
|
||||||
|
expect(calculateDeltaAndAngle({ x: 1, y: 0 }, { x: 1, y: 0 })).toStrictEqual({
|
||||||
|
angle: NaN,
|
||||||
|
deltaX: 0,
|
||||||
|
deltaY: 0,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should calculate the angle and deltas if one point in undefined', () => {
|
||||||
|
expect(calculateDeltaAndAngle(undefined, [0, 1])).toStrictEqual({
|
||||||
|
angle: 0,
|
||||||
|
deltaX: 0,
|
||||||
|
deltaY: 0,
|
||||||
|
});
|
||||||
|
expect(calculateDeltaAndAngle([0, 1], undefined)).toStrictEqual({
|
||||||
|
angle: 0,
|
||||||
|
deltaX: 0,
|
||||||
|
deltaY: 0,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
@@ -2,7 +2,8 @@
|
|||||||
"extends": "../../tsconfig.json",
|
"extends": "../../tsconfig.json",
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"rootDir": "./src",
|
"rootDir": "./src",
|
||||||
"outDir": "./dist"
|
"outDir": "./dist",
|
||||||
|
"types": ["vitest/importMeta"]
|
||||||
},
|
},
|
||||||
"include": ["./src/**/*.ts", "./package.json"]
|
"include": ["./src/**/*.ts", "./package.json"]
|
||||||
}
|
}
|
||||||
|
@@ -24,6 +24,7 @@ export default defineConfig({
|
|||||||
reportsDirectory: './coverage/vitest',
|
reportsDirectory: './coverage/vitest',
|
||||||
exclude: ['**/node_modules/**', '**/tests/**', '**/__mocks__/**'],
|
exclude: ['**/node_modules/**', '**/tests/**', '**/__mocks__/**'],
|
||||||
},
|
},
|
||||||
|
includeSource: ['packages/*/src/**/*.{js,ts}'],
|
||||||
},
|
},
|
||||||
build: {
|
build: {
|
||||||
/** If you set esmExternals to true, this plugins assumes that
|
/** If you set esmExternals to true, this plugins assumes that
|
||||||
@@ -33,4 +34,7 @@ export default defineConfig({
|
|||||||
esmExternals: true,
|
esmExternals: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
define: {
|
||||||
|
'import.meta.vitest': 'undefined',
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
Reference in New Issue
Block a user