import scala.tools.partest._
import java.io._
import scala.tools.nsc._
import scala.tools.nsc.util.CommandLineParser
import scala.tools.nsc.{Global, Settings, CompilerCommand}
import scala.tools.nsc.reporters.ConsoleReporter
// Test of Constant#equals, which must must account for floating point intricacies.
object Test extends DirectTest {
override def code = ""
override def show() {
val global = newCompiler()
import global._
def check(c1: Any, c2: Any): Unit = {
val equal = Constant(c1) == Constant(c2)
def show(a: Any) = "" + a + (a match {
case _: Byte => ".toByte"
case _: Short => ".toShort"
case _: Long => "L"
case _: Float => "f"
case _: Double => "d"
case _ => ""
})
val op = if (equal) "==" else "!="
println(f"${show(c1)}%12s $op ${show(c2)}")
}
check((), ())
check(true, true)
check(true, false)
check(false, true)
check(0.toByte, 0.toByte)
check(0.toByte, 1.toByte)
check(0.toShort, 0.toShort)
check(0.toShort, 1.toShort)
check(0, 0)
check(0, 1)
check(0L, 0L)
check(0L, 1L)
check(0f, 0f)
check(0f, -0f)
check(-0f, 0f)
check(Float.NaN, Float.NaN)
check(0d, 0d)
check(0d, -0d)
check(-0d, 0d)
check(Double.NaN, Double.NaN)
check(0, 0d)
check(0, 0L)
check(0d, 0f)
}
}