Fix some graph tests
This commit is contained in:
committed by
Nick Cameron
parent
6b37bf1809
commit
987152e166
@ -10,6 +10,7 @@ import {
|
||||
VariableDeclarator,
|
||||
SourceRange,
|
||||
topLevelRange,
|
||||
CallExpressionKw,
|
||||
} from '../wasm'
|
||||
import {
|
||||
EdgeTreatmentType,
|
||||
@ -78,14 +79,14 @@ const runGetPathToExtrudeForSegmentSelectionTest = async (
|
||||
ast: Program,
|
||||
code: string,
|
||||
expectedExtrudeSnippet: string
|
||||
): CallExpression | PipeExpression | Error {
|
||||
): CallExpression | CallExpressionKw | PipeExpression | Error {
|
||||
const extrudeRange = topLevelRange(
|
||||
code.indexOf(expectedExtrudeSnippet),
|
||||
code.indexOf(expectedExtrudeSnippet) + expectedExtrudeSnippet.length
|
||||
)
|
||||
const expectedExtrudePath = getNodePathFromSourceRange(ast, extrudeRange)
|
||||
const expectedExtrudeNodeResult = getNodeFromPath<
|
||||
VariableDeclarator | CallExpression
|
||||
VariableDeclarator | CallExpression | CallExpressionKw
|
||||
>(ast, expectedExtrudePath)
|
||||
if (err(expectedExtrudeNodeResult)) {
|
||||
return expectedExtrudeNodeResult
|
||||
@ -93,7 +94,9 @@ const runGetPathToExtrudeForSegmentSelectionTest = async (
|
||||
const expectedExtrudeNode = expectedExtrudeNodeResult.node
|
||||
|
||||
// check whether extrude is in the sketch pipe
|
||||
const extrudeInSketchPipe = expectedExtrudeNode.type === 'CallExpression'
|
||||
const extrudeInSketchPipe =
|
||||
expectedExtrudeNode.type === 'CallExpression' ||
|
||||
expectedExtrudeNode.type === 'CallExpressionKw'
|
||||
if (extrudeInSketchPipe) {
|
||||
return expectedExtrudeNode
|
||||
}
|
||||
@ -506,7 +509,7 @@ extrude001 = extrude(sketch001, length = -15)
|
||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||
|> close()
|
||||
extrude001 = extrude(sketch001, length = -15)`
|
||||
const segmentSnippets = ['line(end = [20, 0], %)', 'line([-20, 0])']
|
||||
const segmentSnippets = ['line(end = [20, 0])', 'line(end = [-20, 0])']
|
||||
const expectedCode = `sketch001 = startSketchOn('XY')
|
||||
|> startProfileAt([-10, 10], %)
|
||||
|> line(end = [20, 0], tag = $seg01)
|
||||
@ -632,9 +635,11 @@ extrude001 = extrude(sketch001, length = -5)
|
||||
it('should correctly identify no edges', () => {
|
||||
const ast = assertParse(code)
|
||||
const lineOfInterest = `line(end = [-3.29, -13.85])`
|
||||
const range = topLevelRange(
|
||||
code.indexOf(lineOfInterest),
|
||||
code.indexOf(lineOfInterest) + lineOfInterest.length
|
||||
const start = code.indexOf(lineOfInterest)
|
||||
expect(start).toBeGreaterThan(-1)
|
||||
const range = topLevelRange(
|
||||
start,
|
||||
start + lineOfInterest.length
|
||||
)
|
||||
const pathToNode = getNodePathFromSourceRange(ast, range)
|
||||
if (err(pathToNode)) return
|
||||
@ -657,10 +662,12 @@ describe('Testing button states', () => {
|
||||
) => {
|
||||
const ast = assertParse(code)
|
||||
|
||||
const start = code.indexOf(segmentSnippet)
|
||||
expect(start).toBeGreaterThan(-1)
|
||||
const range = segmentSnippet
|
||||
? topLevelRange(
|
||||
code.indexOf(segmentSnippet),
|
||||
code.indexOf(segmentSnippet) + segmentSnippet.length
|
||||
start,
|
||||
start + segmentSnippet.length
|
||||
)
|
||||
: topLevelRange(ast.end, ast.end) // empty line in the end of the code
|
||||
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
import {
|
||||
ArtifactGraph,
|
||||
CallExpression,
|
||||
CallExpressionKw,
|
||||
Expr,
|
||||
Identifier,
|
||||
ObjectExpression,
|
||||
@ -526,7 +527,7 @@ export const hasValidEdgeTreatmentSelection = ({
|
||||
traverse(ast, {
|
||||
enter(node) {
|
||||
if (
|
||||
node.type === 'CallExpression' &&
|
||||
(node.type === 'CallExpression' || node.type == 'CallExpressionKw') &&
|
||||
(node.callee.name === 'extrude' || node.callee.name === 'revolve')
|
||||
) {
|
||||
extrudeExists = true
|
||||
@ -548,13 +549,16 @@ export const hasValidEdgeTreatmentSelection = ({
|
||||
// selection exists:
|
||||
for (const selection of selectionRanges.graphSelections) {
|
||||
// check if all selections are in sketchLineHelperMap
|
||||
const segmentNode = getNodeFromPath<Node<CallExpression>>(
|
||||
ast,
|
||||
selection.codeRef.pathToNode,
|
||||
'CallExpression'
|
||||
)
|
||||
const segmentNode = getNodeFromPath<
|
||||
Node<CallExpression | CallExpressionKw>
|
||||
>(ast, selection.codeRef.pathToNode, ['CallExpression', 'CallExpressionKw'])
|
||||
if (err(segmentNode)) return false
|
||||
if (segmentNode.node.type !== 'CallExpression') {
|
||||
if (
|
||||
!(
|
||||
segmentNode.node.type === 'CallExpression' ||
|
||||
segmentNode.node.type === 'CallExpressionKw'
|
||||
)
|
||||
) {
|
||||
return false
|
||||
}
|
||||
if (!(segmentNode.node.callee.name in sketchLineHelperMap)) {
|
||||
@ -597,7 +601,8 @@ export const hasValidEdgeTreatmentSelection = ({
|
||||
traverse(ast, {
|
||||
enter(node) {
|
||||
if (
|
||||
node.type === 'CallExpression' &&
|
||||
(node.type === 'CallExpression' ||
|
||||
node.type === 'CallExpressionKw') &&
|
||||
isEdgeTreatmentType(node.callee.name)
|
||||
) {
|
||||
inEdgeTreatment = true
|
||||
@ -610,7 +615,8 @@ export const hasValidEdgeTreatmentSelection = ({
|
||||
},
|
||||
leave(node) {
|
||||
if (
|
||||
node.type === 'CallExpression' &&
|
||||
(node.type === 'CallExpression' ||
|
||||
node.type === 'CallExpressionKw') &&
|
||||
isEdgeTreatmentType(node.callee.name)
|
||||
) {
|
||||
inEdgeTreatment = false
|
||||
@ -650,7 +656,7 @@ export const isTagUsedInEdgeTreatment = ({
|
||||
enter: (node) => {
|
||||
// Check if we are entering an edge treatment call
|
||||
if (
|
||||
node.type === 'CallExpression' &&
|
||||
(node.type === 'CallExpression' || node.type === 'CallExpressionKw') &&
|
||||
isEdgeTreatmentType(node.callee.name)
|
||||
) {
|
||||
inEdgeTreatment = true
|
||||
@ -668,7 +674,7 @@ export const isTagUsedInEdgeTreatment = ({
|
||||
if (
|
||||
inObj &&
|
||||
inEdgeTreatment &&
|
||||
node.type === 'CallExpression' &&
|
||||
(node.type === 'CallExpression' || node.type === 'CallExpressionKw') &&
|
||||
isEdgeType(node.callee.name)
|
||||
) {
|
||||
inTagHelper = node.callee.name
|
||||
@ -694,7 +700,7 @@ export const isTagUsedInEdgeTreatment = ({
|
||||
},
|
||||
leave: (node) => {
|
||||
if (
|
||||
node.type === 'CallExpression' &&
|
||||
(node.type === 'CallExpression' || node.type === 'CallExpressionKw') &&
|
||||
isEdgeTreatmentType(node.callee.name)
|
||||
) {
|
||||
inEdgeTreatment = false
|
||||
@ -712,7 +718,7 @@ export const isTagUsedInEdgeTreatment = ({
|
||||
if (
|
||||
inObj &&
|
||||
inEdgeTreatment &&
|
||||
node.type === 'CallExpression' &&
|
||||
(node.type === 'CallExpression' || node.type === 'CallExpressionKw') &&
|
||||
isEdgeType(node.callee.name)
|
||||
) {
|
||||
inTagHelper = ''
|
||||
|
||||
@ -429,6 +429,7 @@ export function getNodePathFromSourceRange(
|
||||
previousPath: PathToNode = [['body', '']]
|
||||
): PathToNode {
|
||||
const [start, end] = sourceRange || []
|
||||
expect(start).toBeGreaterThan(-1)
|
||||
let path: PathToNode = [...previousPath]
|
||||
const _node = { ...node }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user