#####################################################
# tc_format.rb
#
# Test suite for the Format class (format.rb)
#####################################################
base = File.basename(Dir.pwd)
if base == "test" || base =~ /spreadsheet/i
   Dir.chdir("..") if base == "test"
   $LOAD_PATH.unshift(Dir.pwd + "/lib/spreadsheet")
   Dir.chdir("test") rescue nil
end

require "test/unit"
require "biffwriter"
require "olewriter"
require "workbook"
require "worksheet"
require "format"

class TC_Format < Test::Unit::TestCase

   def setup
      @ruby_file = "xf_test"
      @format = Format.new
   end

   def test_xf_biff_size
      perl_file = "perl_output/f_xf_biff"
      size = File.size(perl_file)
      @fh = File.new(@ruby_file,"w+")
      @fh.print(@format.xf_biff)
      @fh.close
      rsize = File.size(@ruby_file)
      assert_equal(size,rsize,"File sizes not the same")
   end
   
   # Because of the modifications to bg_color and fg_color, I know this
   # test will fail.  This is ok.
   #def test_xf_biff_contents
   #   perl_file = "perl_output/f_xf_biff"
   #   @fh = File.new(@ruby_file,"w+")
   #   @fh.print(@format.xf_biff)
   #   @fh.close
   #   contents = IO.readlines(perl_file)
   #   rcontents = IO.readlines(@ruby_file)
   #   assert_equal(contents,rcontents,"Contents not the same")
   #end

   def test_font_biff_size
      perl_file = "perl_output/f_font_biff"
      @fh = File.new(@ruby_file,"w+")
      @fh.print(@format.font_biff)
      @fh.close
      contents = IO.readlines(perl_file)
      rcontents = IO.readlines(@ruby_file)
      assert_equal(contents,rcontents,"Contents not the same")
   end

   def test_font_biff_contents
      perl_file = "perl_output/f_font_biff"
      @fh = File.new(@ruby_file,"w+")
      @fh.print(@format.font_biff)
      @fh.close
      contents = IO.readlines(perl_file)
      rcontents = IO.readlines(@ruby_file)
      assert_equal(contents,rcontents,"Contents not the same")
   end

   def test_get_font_key_size
      perl_file = "perl_output/f_font_key"
      @fh = File.new(@ruby_file,"w+")
      @fh.print(@format.font_key)
      @fh.close
      assert_equal(File.size(perl_file),File.size(@ruby_file),"Bad file size")
   end

   def test_get_font_key_contents
      perl_file = "perl_output/f_font_key"
      @fh = File.new(@ruby_file,"w+")
      @fh.print(@format.font_key)
      @fh.close
      contents = IO.readlines(perl_file)
      rcontents = IO.readlines(@ruby_file)
      assert_equal(contents,rcontents,"Contents not the same")
   end

   def test_color
      assert_nothing_raised{ @format.color = "blue" }
      assert_equal(0x0C,@format.color,"Bad color value")
   end

   def test_color_valid
      colors = %w/aqua black blue brown cyan fuchsia gray grey green lime/
      colors << %w/magenta navy orange purple red silver white yellow/
      colors.flatten!

      colors.each{ |color|
         assert_nothing_raised{ @format.color = color }
      }
   end

   def test_color_bogus
      assert_raises(ArgumentError){ @format.color = "blah" }
   end

   def test_align
      @format.align
      assert_equal(0,@format.text_h_align,"Bad text_h_align")
      assert_equal(2,@format.text_v_align,"Bad text_v_align")
   end

   def test_align_center
      @format.align = "center"
      assert_equal(2,@format.text_h_align,"Bad text_h_align")
      assert_equal(2,@format.text_v_align,"Bad text_v_align")
   end

   def test_bold
      @format.bold=1
      assert_equal(true,@format.bold,"Bad bold value")
   end

   def teardown
      begin
         @pfh.close
      rescue NameError
         # no op
      end
      File.delete(@ruby_file) if File.exist?(@ruby_file)
      @format = nil
   end

end
