fix unit tests
This commit is contained in:
@ -641,13 +641,22 @@ describe('Testing removeSingleConstraintInfo', () => {
|
||||
const pathToNode = getNodePathFromSourceRange(ast, range)
|
||||
let argPosition: SimplifiedVarValue
|
||||
if (key === 'arrayIndex' && typeof value === 'number') {
|
||||
argPosition = { type: 'arrayItem', argIndex: 0, index: value ? 0 : 1 }
|
||||
argPosition = {
|
||||
type: 'arrayItem',
|
||||
index: value === 0 ? 0 : 1,
|
||||
argIndex: 0,
|
||||
}
|
||||
} else if (key === 'objectProperty' && typeof value === 'string') {
|
||||
argPosition = {
|
||||
type: 'objectProperty',
|
||||
key: value as VarValueKeys,
|
||||
argIndex: 0,
|
||||
}
|
||||
} else if (key === '') {
|
||||
argPosition = {
|
||||
type: 'singleValue',
|
||||
argIndex: 0,
|
||||
}
|
||||
} else {
|
||||
throw new Error('argPosition is undefined')
|
||||
}
|
||||
@ -688,7 +697,11 @@ describe('Testing removeSingleConstraintInfo', () => {
|
||||
]
|
||||
let argPosition: SimplifiedVarValue
|
||||
if (key === 'arrayIndex' && typeof value === 'number') {
|
||||
argPosition = { type: 'arrayItem', argIndex: 0, index: value ? 0 : 1 }
|
||||
argPosition = {
|
||||
type: 'arrayItem',
|
||||
argIndex: 0,
|
||||
index: value === 0 ? 0 : 1,
|
||||
}
|
||||
} else if (key === 'objectProperty' && typeof value === 'string') {
|
||||
argPosition = {
|
||||
type: 'objectProperty',
|
||||
|
||||
@ -131,12 +131,10 @@ const constrainInfo = (
|
||||
argPosition:
|
||||
g === 'singleValue'
|
||||
? { type: 'singleValue', argIndex: 0 }
|
||||
: g === 1 || g === 0
|
||||
: typeof g === 'number'
|
||||
? { type: 'arrayItem', index: g, argIndex: 0 }
|
||||
: typeof g === 'string'
|
||||
? { type: 'objectProperty', key: g, argIndex: 0 }
|
||||
: g && 'type' in g
|
||||
? g
|
||||
: undefined,
|
||||
pathToNode: e,
|
||||
stdLibFnName: f,
|
||||
@ -163,8 +161,12 @@ const commonConstraintInfoHelper = (
|
||||
const firstArg = callExp.arguments?.[0]
|
||||
const isArr = firstArg.type === 'ArrayExpression'
|
||||
if (!isArr && firstArg.type !== 'ObjectExpression') return []
|
||||
const pipeExpressionIndex = pathToNode.findIndex(
|
||||
(x) => x[1] === 'PipeExpression'
|
||||
)
|
||||
const pathToBase = pathToNode.slice(0, pipeExpressionIndex + 2)
|
||||
const pathToArrayExpression: PathToNode = [
|
||||
...pathToNode,
|
||||
...pathToBase,
|
||||
['arguments', 'CallExpression'],
|
||||
[0, 'index'],
|
||||
isArr
|
||||
@ -463,7 +465,7 @@ export const line: SketchLineHelper = {
|
||||
varExpression: createLiteral(roundOff(to[1] - from[1], 2)),
|
||||
varDetails: {
|
||||
type: 'arrayItem',
|
||||
index: 0,
|
||||
index: 1,
|
||||
argType: 'yRelative',
|
||||
value: createLiteral(roundOff(to[1] - from[1], 2)),
|
||||
argIndex: 0,
|
||||
|
||||
@ -442,9 +442,8 @@ const setHorVertDistanceForXYLines =
|
||||
const setHorzVertDistanceConstraintLineCreateNode =
|
||||
(isX: boolean): TransformInfo['createNode'] =>
|
||||
({ referenceSegName, tag, inputs }) => {
|
||||
const varVal = (
|
||||
isX ? inputs[0].varExpression : inputs[1].varExpression
|
||||
) as BinaryPart
|
||||
let varVal = isX ? inputs[1].varExpression : inputs[0].varExpression
|
||||
varVal = isExprBinaryPart(varVal) ? varVal : createLiteral(0)
|
||||
const varValBinExp = createBinaryExpressionWithUnary([
|
||||
createLastSeg(!isX),
|
||||
varVal,
|
||||
@ -641,7 +640,7 @@ const transformMap: TransformMap = {
|
||||
createNode:
|
||||
({ tag }) =>
|
||||
(args) =>
|
||||
createCallWrapper('yLine', args[1].varExpression, tag),
|
||||
createCallWrapper('yLine', args[0].varExpression, tag),
|
||||
},
|
||||
setHorzDistance: {
|
||||
tooltip: 'lineTo',
|
||||
@ -699,7 +698,7 @@ const transformMap: TransformMap = {
|
||||
createNode:
|
||||
({ tag }) =>
|
||||
(args) =>
|
||||
createCallWrapper('yLineTo', args[1].varExpression, tag),
|
||||
createCallWrapper('yLineTo', args[0].varExpression, tag),
|
||||
},
|
||||
},
|
||||
xAbsolute: {
|
||||
@ -849,7 +848,7 @@ const transformMap: TransformMap = {
|
||||
createNode:
|
||||
({ tag }) =>
|
||||
(args) =>
|
||||
createCallWrapper('yLine', args[1].varExpression, tag),
|
||||
createCallWrapper('yLine', args[0].varExpression, tag),
|
||||
},
|
||||
horizontal: {
|
||||
tooltip: 'xLine',
|
||||
@ -940,9 +939,12 @@ const transformMap: TransformMap = {
|
||||
equalLength: {
|
||||
tooltip: 'angledLineOfXLength',
|
||||
createNode: ({ referenceSegName, inputs, tag }) => {
|
||||
const input =
|
||||
inputs.find((a) => a.varDetails.argType === 'xRelative') ||
|
||||
inputs[0]
|
||||
const [minVal, legAngle] = getMinAndSegAngVals(
|
||||
referenceSegName,
|
||||
inputs[0].varExpression
|
||||
input.varExpression
|
||||
)
|
||||
return (args) =>
|
||||
createCallWrapper(
|
||||
@ -988,7 +990,7 @@ const transformMap: TransformMap = {
|
||||
createNode:
|
||||
({ tag }) =>
|
||||
(args) =>
|
||||
createCallWrapper('yLine', args[1].varExpression, tag),
|
||||
createCallWrapper('yLine', args[0].varExpression, tag),
|
||||
},
|
||||
},
|
||||
angle: {
|
||||
@ -1106,7 +1108,7 @@ const transformMap: TransformMap = {
|
||||
createNode:
|
||||
({ tag }) =>
|
||||
(args) =>
|
||||
createCallWrapper('yLineTo', args[1].varExpression, tag),
|
||||
createCallWrapper('yLineTo', args[0].varExpression, tag),
|
||||
},
|
||||
},
|
||||
angle: {
|
||||
@ -1371,22 +1373,23 @@ export function removeSingleConstraint({
|
||||
if (inputDetails.type === 'arrayItem') {
|
||||
const values = inputs.map(({ varDetails: varValue }) => {
|
||||
if (
|
||||
(varValue.type === 'arrayItem' ||
|
||||
varValue.type === 'arrayOrObjItem') &&
|
||||
varValue.index === inputDetails.index
|
||||
) {
|
||||
const literal = rawValues.find(
|
||||
(rawValue) =>
|
||||
(rawValue.varDetails.type === 'arrayItem' ||
|
||||
rawValue.varDetails.type === 'arrayOrObjItem') &&
|
||||
rawValue.varDetails.index === inputDetails.index
|
||||
)?.varDetails?.value
|
||||
return (
|
||||
(varValue.index === inputDetails.index && literal) ||
|
||||
varValue.value
|
||||
!(
|
||||
(varValue.type === 'arrayItem' ||
|
||||
varValue.type === 'arrayOrObjItem') &&
|
||||
varValue.index === inputDetails.index
|
||||
)
|
||||
}
|
||||
return varValue.value
|
||||
)
|
||||
return varValue.value
|
||||
const literal = rawValues.find(
|
||||
(rawValue) =>
|
||||
(rawValue.varDetails.type === 'arrayItem' ||
|
||||
rawValue.varDetails.type === 'arrayOrObjItem') &&
|
||||
rawValue.varDetails.index === inputDetails.index
|
||||
)?.varDetails?.value
|
||||
return (
|
||||
(varValue.index === inputDetails.index && literal) ||
|
||||
varValue.value
|
||||
)
|
||||
})
|
||||
return createStdlibCallExpression(
|
||||
callExp.node.callee.name as any,
|
||||
@ -1440,7 +1443,8 @@ export function removeSingleConstraint({
|
||||
] = rawLiteralArrayInObject.varDetails.value
|
||||
} else if (
|
||||
inputDetails.type === 'objectProperty' &&
|
||||
rawLiteralObjProp?.varDetails.type === 'objectProperty' &&
|
||||
(rawLiteralObjProp?.varDetails.type === 'objectProperty' ||
|
||||
rawLiteralObjProp?.varDetails.type === 'arrayOrObjItem') &&
|
||||
rawLiteralObjProp?.varDetails.key === inputDetails.key &&
|
||||
varValue.key === inputDetails.key
|
||||
) {
|
||||
|
||||
Reference in New Issue
Block a user