Skip to content

Commit e15030b

Browse files
committed
refactor: isChildOf/isParentOf
1 parent 85c7d31 commit e15030b

File tree

2 files changed

+47
-2
lines changed

2 files changed

+47
-2
lines changed

src/main/kotlin/spp/protocol/artifact/ArtifactQualifiedName.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,4 +91,14 @@ data class ArtifactQualifiedName(
9191
else -> null
9292
}
9393
}
94+
95+
fun isChildOf(other: ArtifactQualifiedName): Boolean {
96+
if (identifier == other.identifier) return false
97+
return identifier.substringBefore("#").startsWith(other.identifier)
98+
}
99+
100+
fun isParentOf(other: ArtifactQualifiedName): Boolean {
101+
if (identifier == other.identifier) return false
102+
return other.identifier.substringBefore("#").startsWith(identifier)
103+
}
94104
}

src/test/kotlin/spp/protocol/artifact/ArtifactQualifiedNameTest.kt

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,7 @@
1616
*/
1717
package spp.protocol.artifact
1818

19-
import org.junit.jupiter.api.Assertions.assertEquals
20-
import org.junit.jupiter.api.Assertions.assertNotNull
19+
import org.junit.jupiter.api.Assertions.*
2120
import org.junit.jupiter.api.Test
2221

2322
class ArtifactQualifiedNameTest {
@@ -58,4 +57,40 @@ class ArtifactQualifiedNameTest {
5857
assertEquals("com.example.TestClass", clazz!!.identifier)
5958
assertEquals(ArtifactType.CLASS, clazz.type)
6059
}
60+
61+
@Test
62+
fun `test is child of`() {
63+
val clazz = ArtifactQualifiedName("com.example.TestClass", type = ArtifactType.CLASS)
64+
val method = ArtifactQualifiedName("com.example.TestClass.fun()", type = ArtifactType.METHOD)
65+
val methodExpression = ArtifactQualifiedName("com.example.TestClass.fun()#22", type = ArtifactType.EXPRESSION)
66+
67+
assertTrue(methodExpression.isChildOf(clazz))
68+
assertTrue(methodExpression.isChildOf(method))
69+
assertFalse(methodExpression.isChildOf(methodExpression))
70+
71+
assertTrue(method.isChildOf(clazz))
72+
assertFalse(method.isChildOf(method))
73+
74+
assertFalse(clazz.isChildOf(clazz))
75+
assertFalse(clazz.isChildOf(method))
76+
assertFalse(method.isChildOf(methodExpression))
77+
}
78+
79+
@Test
80+
fun `test is parent of`() {
81+
val clazz = ArtifactQualifiedName("com.example.TestClass", type = ArtifactType.CLASS)
82+
val method = ArtifactQualifiedName("com.example.TestClass.fun()", type = ArtifactType.METHOD)
83+
val methodExpression = ArtifactQualifiedName("com.example.TestClass.fun()#22", type = ArtifactType.EXPRESSION)
84+
85+
assertTrue(clazz.isParentOf(methodExpression))
86+
assertTrue(method.isParentOf(methodExpression))
87+
assertFalse(methodExpression.isParentOf(methodExpression))
88+
89+
assertTrue(clazz.isParentOf(method))
90+
assertFalse(method.isParentOf(method))
91+
92+
assertFalse(clazz.isParentOf(clazz))
93+
assertFalse(method.isParentOf(clazz))
94+
assertFalse(methodExpression.isParentOf(method))
95+
}
6196
}

0 commit comments

Comments
 (0)