| // WITH_STDLIB |
| |
| import kotlin.test.* |
| |
| interface Element { |
| val isContained: Boolean |
| } |
| |
| object ContainedElement : Element { |
| override val isContained: Boolean = true |
| } |
| |
| object NotContainedElement : Element { |
| override val isContained: Boolean = false |
| } |
| |
| internal class MySet<E : Element> : Set<E> { |
| override fun contains(element: E): Boolean = element.isContained |
| |
| override fun equals(other: Any?): Boolean = TODO() |
| override fun hashCode(): Int = TODO() |
| override fun toString(): String = TODO() |
| |
| override val size: Int get() = TODO() |
| override fun isEmpty(): Boolean = TODO() |
| override fun containsAll(elements: Collection<E>): Boolean = TODO() |
| |
| override fun iterator(): Iterator<E> = TODO() |
| } |
| |
| fun set(): Set<Any> = MySet<Element>() |
| |
| fun box(): String { |
| val set = set() |
| if (set.contains(Any())) return "FAIL 1: $set" |
| if (set.contains(NotContainedElement)) return "FAIL 2: $set" |
| if (!set.contains(ContainedElement)) return "FAIL 3: $set" |
| |
| return "OK" |
| } |