chore(lint): enforce named core types in tests
- Remove the broad test exception for inline named type literals - Replace duplicated Color, Vector, and Rect shapes with shared core types - Keep affected engine tests passing
This commit is contained in:
parent
a63ac93a3d
commit
0af8cd271e
|
|
@ -167,7 +167,6 @@
|
|||
"typescript/no-non-null-assertion": "off",
|
||||
"no-unused-vars": "off",
|
||||
"no-empty-function": "off",
|
||||
"open-pencil/no-inline-named-types": "off",
|
||||
"complexity": "off"
|
||||
}
|
||||
},
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
import { describe, test, expect } from 'bun:test'
|
||||
|
||||
import type { Vector } from '@open-pencil/core'
|
||||
import type { VectorNetwork } from '@open-pencil/core/scene-graph'
|
||||
import { fitCircleArc, isClosedThinCrescent } from '@open-pencil/core/vector'
|
||||
|
||||
|
|
@ -12,13 +13,8 @@ function makeAnnularWedge(
|
|||
sweepDeg: number,
|
||||
segmentsPerArc: number
|
||||
): VectorNetwork {
|
||||
const vertices: { x: number; y: number }[] = []
|
||||
const segments: {
|
||||
start: number
|
||||
end: number
|
||||
tangentStart: { x: number; y: number }
|
||||
tangentEnd: { x: number; y: number }
|
||||
}[] = []
|
||||
const vertices: Vector[] = []
|
||||
const segments: VectorNetwork['segments'] = []
|
||||
|
||||
for (let i = 0; i <= segmentsPerArc; i++) {
|
||||
const angle = ((startDeg + (sweepDeg * i) / segmentsPerArc) * Math.PI) / 180
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import { describe, test, expect } from 'bun:test'
|
||||
|
||||
import { SceneGraph, type Effect } from '@open-pencil/core'
|
||||
import { SceneGraph, type Effect, type Rect } from '@open-pencil/core'
|
||||
|
||||
function pageId(graph: SceneGraph) {
|
||||
return graph.getPages()[0].id
|
||||
|
|
@ -180,7 +180,7 @@ describe('Effect types on scene graph', () => {
|
|||
describe('Resize logic', () => {
|
||||
function applyResize(
|
||||
handle: string,
|
||||
origRect: { x: number; y: number; width: number; height: number },
|
||||
origRect: Rect,
|
||||
startX: number,
|
||||
startY: number,
|
||||
cx: number,
|
||||
|
|
|
|||
|
|
@ -20,12 +20,7 @@ describe('COLOR variable alpha handling', () => {
|
|||
const vars = [...reimported.variables.values()]
|
||||
const colorVar = vars.find((v) => v.name === 'brand')!
|
||||
expect(colorVar.type).toBe('COLOR')
|
||||
const val = Object.values(colorVar.valuesByMode)[0] as {
|
||||
r: number
|
||||
g: number
|
||||
b: number
|
||||
a: number
|
||||
}
|
||||
const val = Object.values(colorVar.valuesByMode)[0] as Color
|
||||
expect(val.r).toBeCloseTo(0.2, 1)
|
||||
expect(val.g).toBeCloseTo(0.4, 1)
|
||||
expect(val.b).toBeCloseTo(0.8, 1)
|
||||
|
|
@ -42,12 +37,7 @@ describe('COLOR variable alpha handling', () => {
|
|||
|
||||
const vars = [...reimported.variables.values()]
|
||||
const colorVar = vars.find((v) => v.name === 'overlay')!
|
||||
const val = Object.values(colorVar.valuesByMode)[0] as {
|
||||
r: number
|
||||
g: number
|
||||
b: number
|
||||
a: number
|
||||
}
|
||||
const val = Object.values(colorVar.valuesByMode)[0] as Color
|
||||
expect(val.a).toBeCloseTo(0.5, 1)
|
||||
})
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,8 @@ import {
|
|||
SceneGraph,
|
||||
FigmaAPI,
|
||||
type SceneNode,
|
||||
type Fill
|
||||
type Fill,
|
||||
type Color
|
||||
} from '@open-pencil/core'
|
||||
|
||||
import { computeContentBounds } from '#core/io/formats/raster/render'
|
||||
|
|
@ -57,12 +58,7 @@ describe('variable roundtrip', () => {
|
|||
const colorVar = vars.find((v) => v.name === 'color/primary')
|
||||
expect(colorVar).toBeDefined()
|
||||
expect(expectDefined(colorVar, 'colorVar').type).toBe('COLOR')
|
||||
const colorVal = Object.values(colorVar.valuesByMode)[0] as {
|
||||
r: number
|
||||
g: number
|
||||
b: number
|
||||
a: number
|
||||
}
|
||||
const colorVal = Object.values(colorVar.valuesByMode)[0] as Color
|
||||
expect(colorVal.r).toBeCloseTo(0.23, 1)
|
||||
|
||||
const floatVar = vars.find((v) => v.name === 'spacing/base')
|
||||
|
|
|
|||
|
|
@ -14,7 +14,8 @@ import {
|
|||
radToDeg,
|
||||
rotatePoint,
|
||||
rotatedCorners,
|
||||
rotatedBBox
|
||||
rotatedBBox,
|
||||
type Vector
|
||||
} from '@open-pencil/core'
|
||||
|
||||
import { computeVisualBounds } from '#core/geometry'
|
||||
|
|
@ -159,7 +160,7 @@ describe('computeBounds', () => {
|
|||
|
||||
describe('computeAbsoluteBounds', () => {
|
||||
const idPos = (id: string) => {
|
||||
const map: Record<string, { x: number; y: number }> = {
|
||||
const map: Record<string, Vector> = {
|
||||
a: { x: 10, y: 20 },
|
||||
b: { x: 50, y: 60 },
|
||||
c: { x: 0, y: 0 }
|
||||
|
|
@ -190,7 +191,7 @@ describe('computeAbsoluteBounds', () => {
|
|||
|
||||
describe('computeVisualBounds', () => {
|
||||
const idPos = (id: string) => {
|
||||
const map: Record<string, { x: number; y: number }> = {
|
||||
const map: Record<string, Vector> = {
|
||||
r1: { x: 100, y: 200 },
|
||||
r2: { x: 300, y: 400 },
|
||||
rotated: { x: 0, y: 0 }
|
||||
|
|
|
|||
|
|
@ -7,20 +7,21 @@ import { renderNodesToImage } from '#core/io/formats/raster'
|
|||
import { SceneGraph } from '#core/scene-graph'
|
||||
import type { SceneNode } from '#core/scene-graph'
|
||||
import { fontManager } from '#core/text'
|
||||
import type { Color, Vector } from '#core/types'
|
||||
|
||||
interface TestCase {
|
||||
text: string
|
||||
fontSize: number
|
||||
offset: { x: number; y: number }
|
||||
offset: Vector
|
||||
radius: number
|
||||
spread: number
|
||||
color: { r: number; g: number; b: number; a: number }
|
||||
color: Color
|
||||
}
|
||||
|
||||
function generateMatrix(): TestCase[] {
|
||||
const cases: TestCase[] = []
|
||||
|
||||
const offsets: Array<{ x: number; y: number }> = [
|
||||
const offsets: Vector[] = [
|
||||
{ x: 0, y: 0 },
|
||||
{ x: 10, y: 10 },
|
||||
{ x: -5, y: 5 },
|
||||
|
|
|
|||
Loading…
Reference in a new issue