Skip to content

Commit

Permalink
Add more tests on invocations
Browse files Browse the repository at this point in the history
Test invocation of functions from package, class, method, function, recursive function, simple source anchor and imported functions without aliases
  • Loading branch information
jecisc committed Jan 8, 2025
1 parent 929a77f commit 974095b
Showing 1 changed file with 97 additions and 0 deletions.
97 changes: 97 additions & 0 deletions src/Famix-Python-Importer-Tests/FamixPythonProject1Test.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -779,6 +779,57 @@ FamixPythonProject1Test >> testFunctionInAPackage [
self assert: function functionOwner equals: (self packageNamed: 'subsubpackage1')
]

{ #category : 'tests - invocations' }
FamixPythonProject1Test >> testFunctionInvocationFromClass [

| class function invocation |
function := self functionNamed: 'sort_list'.
class := self classNamed: 'Employee'.

invocation := function incomingInvocations detect: [ :aReference | aReference sender = class ].

self assert: invocation class equals: FamixPythonInvocation.
self assert: invocation source equals: class.
self assert: invocation sender equals: class.
self assertCollection: invocation target hasSameElements: { function }.
self assert: invocation anyCandidate equals: function.
self assert: (class outgoingInvocations anySatisfy: [ :aReference | aReference anyCandidate = function ])
]

{ #category : 'tests - invocations' }
FamixPythonProject1Test >> testFunctionInvocationFromFunction [

| function2 function invocation |
function := self functionNamed: 'sort_list'.
function2 := self functionNamed: 'functionWithImportsInRoot2'.

invocation := function incomingInvocations detect: [ :aReference | aReference sender = function2 ].

self assert: invocation class equals: FamixPythonInvocation.
self assert: invocation source equals: function2.
self assert: invocation sender equals: function2.
self assertCollection: invocation target hasSameElements: { function }.
self assert: invocation anyCandidate equals: function.
self assert: (function2 outgoingInvocations anySatisfy: [ :aReference | aReference anyCandidate = function ])
]

{ #category : 'tests - invocations' }
FamixPythonProject1Test >> testFunctionInvocationFromMethod [

| method function invocation |
function := self functionNamed: 'sort_list'.
method := self methodNamed: 'print_info_2'.

invocation := function incomingInvocations detect: [ :aReference | aReference sender = method ].

self assert: invocation class equals: FamixPythonInvocation.
self assert: invocation source equals: method.
self assert: invocation sender equals: method.
self assertCollection: invocation target hasSameElements: { function }.
self assert: invocation anyCandidate equals: function.
self assert: (method outgoingInvocations anySatisfy: [ :aReference | aReference anyCandidate = function ])
]

{ #category : 'tests - invocations' }
FamixPythonProject1Test >> testFunctionInvocationFromModule [

Expand All @@ -796,6 +847,36 @@ FamixPythonProject1Test >> testFunctionInvocationFromModule [
self assert: (module outgoingInvocations anySatisfy: [ :aReference | aReference anyCandidate = function ])
]

{ #category : 'tests - invocations' }
FamixPythonProject1Test >> testFunctionInvocationFromPackage [

| package function invocation |
function := self functionNamed: 'function_with_lambda_with_function_ref'.
package := self packageNamed: 'subsubpackage1'.

invocation := function incomingInvocations detect: [ :aReference | aReference sender = package ].

self assert: invocation class equals: FamixPythonInvocation.
self assert: invocation source equals: package.
self assert: invocation sender equals: package.
self assertCollection: invocation target hasSameElements: { function }.
self assert: invocation anyCandidate equals: function.
self assert: (package outgoingInvocations anySatisfy: [ :aReference | aReference anyCandidate = function ])
]

{ #category : 'tests - invocations' }
FamixPythonProject1Test >> testFunctionInvocationSourceAnchor [

| function2 function invocation |
function := self functionNamed: 'sort_list'.
function2 := self functionNamed: 'functionWithImportsInRoot2'.

invocation := function incomingInvocations detect: [ :aReference | aReference sender = function2 ].

self assert: invocation sourceAnchor isNotNil.
self assert: invocation sourceText equals: 'sort_list(x, y)'
]

{ #category : 'tests - references' }
FamixPythonProject1Test >> testFunctionReferenceFromClass [

Expand Down Expand Up @@ -3066,6 +3147,22 @@ FamixPythonProject1Test >> testReadAccessToParameter [
self assert: (function accesses anySatisfy: [ :anAccess | anAccess variable = parameter ])
]

{ #category : 'tests - invocations' }
FamixPythonProject1Test >> testRecursiveFunctionInvocation [

| function invocation |
function := self functionNamed: 'fibonacci'.

invocation := function incomingInvocations detect: [ :aReference | aReference sender = function ].

self assert: invocation class equals: FamixPythonInvocation.
self assert: invocation source equals: function.
self assert: invocation sender equals: function.
self assertCollection: invocation target hasSameElements: { function }.
self assert: invocation anyCandidate equals: function.
self assert: (function outgoingInvocations anySatisfy: [ :aReference | aReference anyCandidate = function ])
]

{ #category : 'tests - modules' }
FamixPythonProject1Test >> testRootModule [

Expand Down

0 comments on commit 974095b

Please sign in to comment.