Fantom

 

//
// Copyright (c) 2008, Brian Frank and Andy Frank
// Licensed under the Academic Free License version 3.0
//
// History:
//   16 Jun 08  Brian Frank  Creation
//

**
** FontTest
**
@Js
class FontTest : Test
{

  Void testMake()
  {
    verifyFont(Font { name = "Arial"; size = 10 },
      "Arial", 10, false, false, "10pt Arial")

    verifyFont(Font { name = "Arial Special"; size = 10; bold = true},
      "Arial Special", 10, true, false, "bold 10pt Arial Special")

    verifyFont(Font.makeFields("Courier", 11, false, true),
      "Courier", 11, false, true, "italic 11pt Courier")

    verifyFont(Font.makeFields("Courier", 16, true, true),
      "Courier", 16, true, true, "bold italic 16pt Courier")

    verifyEq(Font.fromStr("22pt Arial"), Font.makeFields("Arial", 22))
    verifyEq(Font.fromStr("bold 22pt Foo Bar"), Font.makeFields("Foo Bar", 22, true))
    verifyEq(Font.fromStr("italic 5pt Arial"), Font.makeFields("Arial", 5, false, true))
    verifyEq(Font.fromStr("bold italic 10pt Aa Bb"), Font.makeFields("Aa Bb", 10, true, true))
    verifyEq(Font.fromStr("Arial", false), null)
    verifyErr(ParseErr#) { x := Font.fromStr("10 Arial") }
    verifyErr(ParseErr#) { x := Font.fromStr("", true) }
  }

  Void verifyFont(Font f, Str name, Int size, Bool bold, Bool italic, Str str)
  {
    verifyEq(f.name, name)
    verifyEq(f.size, size)
    verifyEq(f.bold, bold)
    verifyEq(f.italic, italic)
    verifyEq(f.toStr, str)

    verifyEq(f, Font { it.name = name; it.size = size; it.bold = bold; it.italic = italic })
    verifyNotEq(f, Font { it.name = name+"x"; it.size = size; it.bold = bold; it.italic = italic })
    verifyNotEq(f, Font { it.name = name; it.size = size+1; it.bold = bold; it.italic = italic })
    verifyNotEq(f, Font { it.name = name; it.size = size; it.bold = !bold; it.italic = italic })
    verifyNotEq(f, Font { it.name = name; it.size = size; it.bold = bold; it.italic = !italic })

    verifyEq(f, Font.fromStr(f.toStr))
    verifyEq(f, Buf().writeObj(f).flip.readObj)
  }

}