File: workbook.rb

package info (click to toggle)
ruby-spreadsheet 1.3.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 8,964 kB
  • sloc: ruby: 6,943; makefile: 10
file content (95 lines) | stat: -rw-r--r-- 3,363 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#!/usr/bin/env ruby
# Excel::Writer::TestWorkbook -- Spreadsheet -- 20.07.2011 -- vanderhoorn@gmail.com

$: << File.expand_path('../../../lib', File.dirname(__FILE__))

require 'test/unit'
require 'spreadsheet'

module Spreadsheet
  module Excel
    module Writer
      class TestWorkbook < Test::Unit::TestCase
        def setup
          @book = Spreadsheet::Excel::Workbook.new
          assert_instance_of Excel::Workbook, @book
          assert_equal @book.worksheets.size, 0
          @workbook_writer = Excel::Writer::Workbook.new @book
        end
        def test_sanitize_worksheets
          assert_nothing_raised { @workbook_writer.sanitize_worksheets @book.worksheets }
        end
        def test_collect_formats
          assert_equal 17, @workbook_writer.collect_formats(@book).length # Expected for vanilla
          sheet = @book.create_worksheet
          rowi=-1

          f1 = Spreadsheet::Format.new
          sheet.row(rowi+=1).default_format = f1
          assert_equal 18, @workbook_writer.collect_formats(@book).length

          f2 = Spreadsheet::Format.new
          sheet.row(rowi+=1).default_format = f2
          assert_equal 19, @workbook_writer.collect_formats(@book).length

          sheet.row(rowi+=1).default_format = f2
          assert_equal 19, @workbook_writer.collect_formats(@book).length # Ignores duplicates
        end
        def test_xf_index
          sheet = @book.create_worksheet
          rowi=-1

          f1 = Spreadsheet::Format.new
          sheet.row(rowi+=1).default_format = f1
          @workbook_writer.collect_formats(@book)
          assert_equal 17, @workbook_writer.xf_index(@book, f1)

          f2 = Spreadsheet::Format.new
          sheet.row(rowi+=1).default_format = f2
          @workbook_writer.collect_formats(@book)
          assert_equal 18, @workbook_writer.xf_index(@book, f2)

        end
        def test_write_fonts
          num_written = 0
          sheet = @book.create_worksheet
          rowi=-1
          # Stub inner #write_font as a counter:
          (class << @workbook_writer; self; end).send(:define_method, :write_font) do |*args|
            num_written += 1
          end
          io = StringIO.new("")

          num_written = 0
          @workbook_writer.collect_formats(@book)
          @workbook_writer.write_fonts(@book, io)
          assert_equal 1, num_written # Default format's font

          f1 = Spreadsheet::Format.new
          sheet.row(rowi+=1).default_format = f1
          num_written = 0
          @workbook_writer.collect_formats(@book)
          @workbook_writer.write_fonts(@book, io)
          assert_equal 1, num_written # No new fonts

          f2 = Spreadsheet::Format.new
          f2.font = Spreadsheet::Font.new("Foo")
          sheet.row(rowi+=1).default_format = f2
          num_written = 0
          @workbook_writer.collect_formats(@book)
          @workbook_writer.write_fonts(@book, io)
          assert_equal 2, num_written # 2 distinct fonts total

          f3 = Spreadsheet::Format.new
          f3.font = f2.font # Re-use previous font
          sheet.row(rowi+=1).default_format = f3
          num_written = 0
          @workbook_writer.collect_formats(@book)
          @workbook_writer.write_fonts(@book, io)
          assert_equal 2, num_written # 2 distinct fonts total still

        end
      end
    end
  end
end