diff --git a/src/Famix-Python-Importer-Tests/FamixPythonAbstractImporterTest.class.st b/src/Famix-Python-Importer-Tests/FamixPythonAbstractImporterTest.class.st index 4ee4812..584009a 100644 --- a/src/Famix-Python-Importer-Tests/FamixPythonAbstractImporterTest.class.st +++ b/src/Famix-Python-Importer-Tests/FamixPythonAbstractImporterTest.class.st @@ -35,6 +35,12 @@ FamixPythonAbstractImporterTest >> importNamed: aName [ ^ self model allImports detect: [ :import | import importedEntity name = aName ] ] +{ #category : 'accessing' } +FamixPythonAbstractImporterTest >> localVariableNamed: aName [ + + ^ self model allLocalVariables detect: [ :variable | variable name = aName ] +] + { #category : 'accessing' } FamixPythonAbstractImporterTest >> methodNamed: aName [ diff --git a/src/Famix-Python-Importer-Tests/FamixPythonProject1Test.class.st b/src/Famix-Python-Importer-Tests/FamixPythonProject1Test.class.st index d4ab366..f643bca 100644 --- a/src/Famix-Python-Importer-Tests/FamixPythonProject1Test.class.st +++ b/src/Famix-Python-Importer-Tests/FamixPythonProject1Test.class.st @@ -772,6 +772,47 @@ FamixPythonProject1Test >> testInstanceVariablesWithSameNameButDifferenClass [ (self classNamed: 'Stool') } ] +{ #category : 'tests - local variables' } +FamixPythonProject1Test >> testLocalVariableInFunctionSourceAnchor [ + + | variable | + variable := self localVariableNamed: 'local_in_function2'. + + self assert: variable sourceAnchor isNotNil. + self assert: variable sourceText equals: 'local_in_function2' +] + +{ #category : 'tests - local variables' } +FamixPythonProject1Test >> testLocalVariablesInFunctionAssignedWithATuple [ + + | global | + self denyEmpty: self model allLocalVariables. + + global := self localVariableNamed: 'local_in_function_with_tuple1'. + + self assert: global class equals: FamixPythonLocalVariable. + self assert: global name equals: 'local_in_function_with_tuple1'. + self assert: global parentBehaviouralEntity equals: (self functionNamed: 'function_with_local_variables_and_tuples'). + + global := self localVariableNamed: 'local_in_function_with_tuple2'. + + self assert: global class equals: FamixPythonLocalVariable. + self assert: global name equals: 'local_in_function_with_tuple2'. + self assert: global parentBehaviouralEntity equals: (self functionNamed: 'function_with_local_variables_and_tuples') +] + +{ #category : 'tests - local variables' } +FamixPythonProject1Test >> testLocalVariablesInFunctionWithTheSameNameButDifferentParents [ + + | variables | + variables := self model allLocalVariables select: [ :variable | variable name = 'local_in_function1' ]. + + self assert: variables size equals: 2. + self assertCollection: (variables flatCollect: #parents) hasSameElements: { + (self functionNamed: 'function_with_local_variables'). + (self functionNamed: 'function_with_local_variables2') } +] + { #category : 'tests - from-import' } FamixPythonProject1Test >> testMethodImportsClassFromAModule [ @@ -1536,6 +1577,17 @@ FamixPythonProject1Test >> testSimpleInstanceVariable [ self deny: variable isClassSide ] +{ #category : 'tests - local variables' } +FamixPythonProject1Test >> testSimpleLocalVariableInFunction [ + + | variable | + variable := self localVariableNamed: 'local_in_function2'. + + self assert: variable class equals: FamixPythonLocalVariable. + self assert: variable name equals: 'local_in_function2'. + self assert: variable parentBehaviouralEntity equals: (self functionNamed: 'function_with_local_variables') +] + { #category : 'tests - methods' } FamixPythonProject1Test >> testSimpleMethod [