From c6994768d783b7a21b338534e8720380df28f4cb Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Wed, 9 Feb 2022 14:36:35 +0300 Subject: [PATCH] [Test] Drop redundant Condition class --- .../jetbrains/kotlin/test/util/Condition.kt | 140 ------------------ 1 file changed, 140 deletions(-) delete mode 100644 compiler/test-infrastructure-utils/tests/org/jetbrains/kotlin/test/util/Condition.kt diff --git a/compiler/test-infrastructure-utils/tests/org/jetbrains/kotlin/test/util/Condition.kt b/compiler/test-infrastructure-utils/tests/org/jetbrains/kotlin/test/util/Condition.kt deleted file mode 100644 index f79ca82049c..00000000000 --- a/compiler/test-infrastructure-utils/tests/org/jetbrains/kotlin/test/util/Condition.kt +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.test.util - -import java.util.* - -fun interface Condition { - operator fun invoke(value: T): Boolean -} - -object Conditions { - private val TRUE = Condition { true } - private val FALSE = Condition { false } - - fun alwaysTrue(): Condition { - return TRUE - } - - fun alwaysFalse(): Condition { - return FALSE - } - - fun notNull(): Condition { - return Condition { it != null } - } - - fun constant(value: Boolean): Condition { - return if (value) alwaysTrue() else alwaysFalse() - } - - fun instanceOf(clazz: Class<*>): Condition { - return Condition { t -> clazz.isInstance(t) } - } - - fun notInstanceOf(clazz: Class<*>): Condition { - return Condition { t -> !clazz.isInstance(t) } - } - - fun assignableTo(clazz: Class<*>): Condition> { - return Condition { t -> clazz.isAssignableFrom(t) } - } - - fun instanceOf(vararg clazz: Class<*>): Condition { - return Condition { t -> - for (aClass in clazz) { - if (aClass.isInstance(t)) return@Condition true - } - false - } - } - - fun `is`(option: T): Condition { - return equalTo(option) - } - - fun equalTo(option: Any?): Condition { - return Condition { t -> t == option } - } - - fun notEqualTo(option: Any?): Condition { - return Condition { t -> t != option } - } - - fun oneOf(vararg options: T): Condition { - return oneOf(options.toList()) - } - - fun oneOf(options: Collection): Condition { - return Condition { t -> options.contains(t) } - } - - fun not(c: Condition): Condition { - if (c === alwaysTrue()) return alwaysFalse() - if (c === alwaysFalse()) return alwaysTrue() - return if (c is Not<*>) (c as Not).c else Not(c) - } - - fun and(c1: Condition, c2: Condition): Condition { - if (c1 === alwaysTrue() || c2 === alwaysFalse()) return c2 - return if (c2 === alwaysTrue() || c1 === alwaysFalse()) c1 else And(c1, c2) - } - - fun or(c1: Condition, c2: Condition): Condition { - if (c1 === alwaysFalse() || c2 === alwaysTrue()) return c2 - return if (c2 === alwaysFalse() || c1 === alwaysTrue()) c1 else Or(c1, c2) - } - - fun compose(func: (A) -> B, condition: Condition): Condition { - return Condition { condition.invoke(func(it)) } - } - - fun cached(c: Condition): Condition { - return SoftRefCache(c) - } - - private class Not(val c: Condition) : Condition { - override fun invoke(value: T): Boolean { - return !c.invoke(value) - } - } - - private class And(val c1: Condition, val c2: Condition) : Condition { - override fun invoke(value: T): Boolean { - return c1.invoke(value) && c2.invoke(value) - } - } - - private class Or(val c1: Condition, val c2: Condition) : Condition { - override fun invoke(value: T): Boolean { - return c1.invoke(value) || c2.invoke(value) - } - } - - private class SoftRefCache(private val myCondition: Condition) : Condition { - private val myCache: WeakHashMap = WeakHashMap(); - - override fun invoke(value: T): Boolean { - return myCache.computeIfAbsent(value) { myCondition(value) } - } - } -} - -infix fun Condition.and(other: Condition): Condition { - return Conditions.and(this, other) -} - -infix fun Condition.or(other: Condition): Condition { - return Conditions.or(this, other) -} - -operator fun Condition.not(): Condition { - return Conditions.not(this) -} - -fun Condition.cached(): Condition { - return Conditions.cached(this) -}