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