aboutsummaryrefslogblamecommitdiff
path: root/library/test/dotty/ShowTests.scala
blob: b050ad3ee4087cf667fcd00a465312797b5c4d29 (plain) (tree)



































                                                                      
                                                                  
                                                     




                                                                                     
                                                        







                                                                                       
                                   




                                                               







                                                                               
                                     

   
package dotty

import org.junit.Test
import org.junit.Assert._

class ShowTests {
  import Show._

  @Test def showString = {
    assertEquals("\"\\thello world!\"", "\thello world!".show)
    assertEquals("\"\\nhello world!\"", "\nhello world!".show)
    assertEquals("\"\\rhello world!\"", "\rhello world!".show)
    assertEquals("\"\\b\\t\\n\\f\\r\\\'\\\"\"", "\b\t\n\f\r\'\"".show)
  }

  @Test def showFloat = {
    assertEquals("1.0f", 1.0f.show)
    assertEquals("1.0f", 1.0F.show)
  }

  @Test def showDouble = {
    assertEquals("1.0", 1.0d.show)
    assertEquals("1.0", 1.0.show)
  }

  @Test def showChar = {
    assertEquals("'\\b'", '\b'.show)
    assertEquals("'\\t'", '\t'.show)
    assertEquals("'\\n'", '\n'.show)
    assertEquals("'\\f'", '\f'.show)
    assertEquals("'\\r'", '\r'.show)
    assertEquals("'\\''", '\''.show)
    assertEquals("'\\\"'", '\"'.show)
  }

  @Test def showCar = {
    case class Car(model: String, manufacturer: String, year: Int)
    implicit val showCar: Show[Car] = new Show[Car] {
      def show(c: Car) =
        "Car(" + c.model.show + ", " + c.manufacturer.show + ", " + c.year.show + ")"
    }

    case class Shop(xs: List[Car], name: String)
    implicit val showShop: Show[Shop] = new Show[Shop] {
      def show(sh: Shop) =
        "Shop(" + sh.xs.show + ", " + sh.name.show + ")"
    }

    assertEquals("Car(\"Mustang\", \"Ford\", 1967)", Car("Mustang", "Ford", 1967).show)
  }

  @Test def showOptions = {
    assertEquals("None", None.show)
    assertEquals("None", (None: Option[String]).show)
    assertEquals("Some(\"hello opt\")", Some("hello opt").show)
  }

  @Test def showMaps = {
    val mp = scala.collection.immutable.Map("str1" -> "val1", "str2" -> "val2")
    assertEquals("Map(\"str1\" -> \"val1\", \"str2\" -> \"val2\")", mp.show)
  }

  @Test def withoutShow = {
    case class Car(model: String, manufacturer: String, year: Int)

    assertEquals("Car(Mustang,Ford,1967)", Car("Mustang", "Ford", 1967).show)
    assertEquals("Map()", Map().show)
  }
}