feat: add structured placement properties
This commit is contained in:
@@ -871,6 +871,23 @@ test('typed properties are validated, versioned and undoable through the documen
|
||||
assert.equal(facade.app.document.getObject('pad')?.properties.find((property) => property.name === 'Length')?.value, 50)
|
||||
})
|
||||
|
||||
test('Placement properties are deeply cloned, validated, undoable and persisted', async () => {
|
||||
const facade = createMockFacade()
|
||||
const placement = { position: { x: 10, y: -2, z: 4 }, rotation: { axis: { x: 0, y: 1, z: 0 }, angle: 45 } }
|
||||
facade.app.document.setProperty({ objectId: 'pad', propertyName: 'Placement', value: placement })
|
||||
placement.position.x = 999
|
||||
const stored = facade.app.document.getObject('pad')?.properties.find((property) => property.name === 'Placement')?.value
|
||||
assert.deepEqual(stored, { position: { x: 10, y: -2, z: 4 }, rotation: { axis: { x: 0, y: 1, z: 0 }, angle: 45 } })
|
||||
assert.throws(() => facade.app.document.setProperty({ objectId: 'pad', propertyName: 'Placement', value: { position: { x: 0, y: 0, z: 0 }, rotation: { axis: { x: 0, y: 0, z: 0 }, angle: 0 } } }), /axis cannot be zero/)
|
||||
facade.history.undo()
|
||||
assert.deepEqual(facade.app.document.getObject('pad')?.properties.find((property) => property.name === 'Placement')?.value, { position: { x: 0, y: 0, z: 0 }, rotation: { axis: { x: 0, y: 0, z: 1 }, angle: 0 } })
|
||||
facade.history.redo()
|
||||
const persistence = createSqliteProjectPersistence()
|
||||
await persistence.save(facade.app.document.getActive())
|
||||
assert.deepEqual((await persistence.load('doc-pump-housing'))?.objects.find((object) => object.id === 'pad')?.properties.find((property) => property.name === 'Placement')?.value, stored)
|
||||
await persistence.dispose()
|
||||
})
|
||||
|
||||
test('LinkSub properties preserve versioned TopoRefs and create topology dependencies', async () => {
|
||||
const facade = createMockFacade()
|
||||
const face = { vertexCoord: [0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 2, 0], normalCoord: [], triIndexes: [0, 1, 2, 0, 2, 3] }
|
||||
|
||||
Reference in New Issue
Block a user