Skip to content

Commit 6b26be3

Browse files
Add root: TreeNode<T> to TreeNode<T>
1 parent e0fe137 commit 6b26be3

File tree

7 files changed

+25
-9
lines changed

7 files changed

+25
-9
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
### Added
66

7+
- `root: TreeNode<T>` to `TreeNode<T>`
8+
79
### Changed
810

911
### Deprecated

kotlin-stdlib/api/android/kotlin-stdlib.api

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,7 @@ public class com/javiersc/kotlin/stdlib/tree/TreeNode : com/javiersc/kotlin/stdl
234234
public final fun getHeight ()I
235235
public final fun getNodeCount ()I
236236
public final fun getParent ()Lcom/javiersc/kotlin/stdlib/tree/TreeNode;
237+
public final fun getRoot ()Lcom/javiersc/kotlin/stdlib/tree/TreeNode;
237238
public final fun getValue ()Ljava/lang/Object;
238239
public final fun isRoot ()Z
239240
public fun iterator ()Ljava/util/Iterator;

kotlin-stdlib/api/jvm/kotlin-stdlib.api

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,7 @@ public class com/javiersc/kotlin/stdlib/tree/TreeNode : com/javiersc/kotlin/stdl
240240
public final fun getHeight ()I
241241
public final fun getNodeCount ()I
242242
public final fun getParent ()Lcom/javiersc/kotlin/stdlib/tree/TreeNode;
243+
public final fun getRoot ()Lcom/javiersc/kotlin/stdlib/tree/TreeNode;
243244
public final fun getValue ()Ljava/lang/Object;
244245
public final fun isRoot ()Z
245246
public fun iterator ()Ljava/util/Iterator;

kotlin-stdlib/api/kotlin-stdlib.api

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,7 @@ public class com/javiersc/kotlin/stdlib/tree/TreeNode : com/javiersc/kotlin/stdl
240240
public final fun getHeight ()I
241241
public final fun getNodeCount ()I
242242
public final fun getParent ()Lcom/javiersc/kotlin/stdlib/tree/TreeNode;
243+
public final fun getRoot ()Lcom/javiersc/kotlin/stdlib/tree/TreeNode;
243244
public final fun getValue ()Ljava/lang/Object;
244245
public final fun isRoot ()Z
245246
public fun iterator ()Ljava/util/Iterator;
@@ -264,3 +265,4 @@ public final class com/javiersc/kotlin/stdlib/tree/TreeNodeIterators : java/lang
264265
public static fun valueOf (Ljava/lang/String;)Lcom/javiersc/kotlin/stdlib/tree/TreeNodeIterators;
265266
public static fun values ()[Lcom/javiersc/kotlin/stdlib/tree/TreeNodeIterators;
266267
}
268+

kotlin-stdlib/common/main/kotlin/com/javiersc/kotlin/stdlib/tree/TreeNode.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ public open class TreeNode<T>(
2020
public val children: List<TreeNode<T>>
2121
get() = _children
2222

23+
/** The root of the tree. */
24+
public val root: TreeNode<T>
25+
get() = parent?.root ?: this
26+
2327
/**
2428
* Checks whether the current tree node is the root of the tree
2529
*

kotlin-stdlib/common/test/kotlin/com/javiersc/kotlin/stdlib/TreeNodeTest.kt

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -225,13 +225,18 @@ internal class TreeNodeTest {
225225
assertContentEquals(expectedOrder, tree.toList().map(TreeNode<Int>::value))
226226
}
227227

228-
// @Test
229-
// fun given_a_tree_with_delegation_when_accessing_to_value_implicitly_then_casting_works() {
230-
// val bar: Foo = Bar()
231-
// val barFooTree: FooTree<Foo> = FooTree(bar)
232-
// println(barFooTree)
233-
// println(barFooTree.value)
234-
//// assertTrue { barFooTree is Bar }
235-
//// assertTrue { barFooTree.value is Bar }
236-
// }
228+
@Test
229+
fun testRoot() {
230+
val tree =
231+
tree(1) {
232+
child(2) {
233+
child(4)
234+
child(5)
235+
}
236+
child(3)
237+
}
238+
assertEquals(1, tree.root.value)
239+
assertEquals(1, tree.children.first().root.value)
240+
assertEquals(1, tree.children.first().children.first().root.value)
241+
}
237242
}

kotlin-test-junit/api/kotlin-test-junit.api

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,3 +69,4 @@ public abstract interface annotation class com/javiersc/kotlin/test/IgnoreWatcho
6969

7070
public abstract interface annotation class com/javiersc/kotlin/test/IgnoreWatchosX64 : java/lang/annotation/Annotation {
7171
}
72+

0 commit comments

Comments
 (0)