blob: 559e4af2e70a856c97b3fbd437e796e9a5a7a366 [file]
fun <T> T.id() = this
const val trueVal = true
const val falseVal = false
const val not1 = trueVal.not()
const val not2 = falseVal.not()
const val and1 = trueVal.and(trueVal)
const val and2 = trueVal.and(falseVal)
const val and3 = falseVal.and(trueVal)
const val and4 = falseVal.and(falseVal)
const val or1 = trueVal.or(trueVal)
const val or2 = trueVal.or(falseVal)
const val or3 = falseVal.or(trueVal)
const val or4 = falseVal.or(falseVal)
const val xor1 = trueVal.xor(trueVal)
const val xor2 = trueVal.xor(falseVal)
const val xor3 = falseVal.xor(trueVal)
const val xor4 = falseVal.xor(falseVal)
const val infixAnd1 = trueVal and trueVal
const val infixAnd2 = trueVal and falseVal
const val infixAnd3 = falseVal and trueVal
const val infixAnd4 = falseVal and falseVal
const val infixOr1 = trueVal or trueVal
const val infixOr2 = trueVal or falseVal
const val infixOr3 = falseVal or trueVal
const val infixOr4 = falseVal or falseVal
const val infixXor1 = trueVal xor trueVal
const val infixXor2 = trueVal xor falseVal
const val infixXor3 = falseVal xor trueVal
const val infixXor4 = falseVal xor falseVal
const val compareTo1 = trueVal.compareTo(trueVal)
const val compareTo2 = trueVal.compareTo(falseVal)
const val compareTo3 = falseVal.compareTo(trueVal)
const val compareTo4 = falseVal.compareTo(falseVal)
const val equals1 = trueVal == trueVal
const val equals2 = trueVal == falseVal
const val equals3 = falseVal == trueVal
const val equals4 = falseVal == falseVal
const val notEquals1 = trueVal != trueVal
const val notEquals2 = trueVal != falseVal
const val notEquals3 = falseVal != trueVal
const val notEquals4 = falseVal != falseVal
const val toString1 = trueVal.toString()
const val toString2 = falseVal.toString()
fun box(): String {
if (not1.id() != false) return "Fail 1.1"
if (not2.id() != true) return "Fail 1.2"
if (and1.id() != true) return "Fail 2.1"
if (and2.id() != false) return "Fail 2.2"
if (and3.id() != false) return "Fail 2.3"
if (and4.id() != false) return "Fail 2.4"
if (or1.id() != true) return "Fail 3.1"
if (or2.id() != true) return "Fail 3.2"
if (or3.id() != true) return "Fail 3.3"
if (or4.id() != false) return "Fail 3.4"
if (xor1.id() != false) return "Fail 4.1"
if (xor2.id() != true) return "Fail 4.2"
if (xor3.id() != true) return "Fail 4.3"
if (xor4.id() != false) return "Fail 4.4"
if (infixAnd1.id() != true) return "Fail 4b.1"
if (infixAnd2.id() != false) return "Fail 4b.2"
if (infixAnd3.id() != false) return "Fail 4b.3"
if (infixAnd4.id() != false) return "Fail 4b.4"
if (infixOr1.id() != true) return "Fail 4c.1"
if (infixOr2.id() != true) return "Fail 4c.2"
if (infixOr3.id() != true) return "Fail 4c.3"
if (infixOr4.id() != false) return "Fail 4c.4"
if (infixXor1.id() != false) return "Fail 4d.1"
if (infixXor2.id() != true) return "Fail 4d.2"
if (infixXor3.id() != true) return "Fail 4d.3"
if (infixXor4.id() != false) return "Fail 4d.4"
if (compareTo1.id() != 0) return "Fail 5.1"
if (compareTo2.id() != 1) return "Fail 5.2"
if (compareTo3.id() != -1) return "Fail 5.3"
if (compareTo4.id() != 0) return "Fail 5.4"
if (equals1.id() != true) return "Fail 6.1"
if (equals2.id() != false) return "Fail 6.2"
if (equals3.id() != false) return "Fail 6.3"
if (equals4.id() != true) return "Fail 6.4"
if (notEquals1.id() != false) return "Fail 6.5"
if (notEquals2.id() != true) return "Fail 6.6"
if (notEquals3.id() != true) return "Fail 6.7"
if (notEquals4.id() != false) return "Fail 6.8"
if (toString1.id() != "true") return "Fail 7.1"
if (toString2.id() != "false") return "Fail 7.2"
return "OK"
}