Skip to content
Snippets Groups Projects
TC_FXIconList.rb 4.41 KiB
Newer Older
  • Learn to ignore specific revisions
  • require 'test/unit'
    require 'testcase'
    require 'fox16'
    
    include Fox
    
    class TC_FXIconList < TestCase
    
    private
    
      def checkBounds(meth, *args)
        assert_raises(IndexError) {
          @iconList.send(meth, -1, *args)
        }
        assert_raises(IndexError) {
          @iconList.send(meth, 1, *args)
        }
        assert_nothing_raised(IndexError) {
          @iconList.send(meth, 0, *args)
        }
      end
      
    public
    
      def setup
        super('TC_FXIconList')
        @iconList = FXIconList.new(mainWindow)
      end
      
      def test_appendItem_byItem
        items = []
        0.upto(4) do |i|
          items << FXIconItem.new("item#{i}")
        end
        assert_equal(0, @iconList.numItems)
        @iconList.appendItem(items[0])
        assert_equal(1, @iconList.numItems)
        @iconList.appendItem(items[1], true)
        assert_equal(2, @iconList.numItems)
        @iconList.appendItem(items[2], false)
        assert_equal(3, @iconList.numItems)
        assert_raises(ArgumentError) do
          @iconList.appendItem(items[3], 42) # second argument must be true or false
        end
        assert_equal(3, @iconList.numItems)
      end
    
      def test_appendOp
        assert_equal(0, @iconList.numItems)
        @iconList << FXIconItem.new("item1")
        assert_equal(1, @iconList.numItems)
        @iconList << FXIconItem.new("item2")
        assert_equal(2, @iconList.numItems)
        @iconList << FXIconItem.new("item3")
        assert_equal(3, @iconList.numItems)
      end
      
      def test_removeHeader
        @iconList.appendHeader("One")
        checkBounds(:removeHeader)
      end
      
      def test_setHeaderText
        @iconList.appendHeader("One")
        checkBounds(:setHeaderText, "Foo")
      end
      
      def test_getHeaderText
        @iconList.appendHeader("Boo")
        checkBounds(:getHeaderText)
      end
    
      def test_setHeaderIcon
        @iconList.appendHeader("Boo")
        checkBounds(:setHeaderIcon, nil)
      end
      
      def test_getHeaderIcon
        @iconList.appendHeader("Boo")
        checkBounds(:getHeaderIcon)
      end
      
      def test_setHeaderSize
        @iconList.appendHeader("Boo")
        checkBounds(:setHeaderSize, 0)
      end
      
      def test_getHeaderSize
        @iconList.appendHeader("Boo")
        checkBounds(:getHeaderSize)
      end
      
      def test_getItem
        @iconList.appendItem("Foo")
        assert_equal(1, @iconList.numItems)
        checkBounds(:getItem)
      end
    
      def test_moveItem
        @iconList.appendItem("First")
        @iconList.appendItem("Second")
        assert_raises(IndexError) {
          @iconList.moveItem(0, -1)
        }
        assert_raises(IndexError) {
          @iconList.moveItem(0, 2)
        }
        assert_raises(IndexError) {
          @iconList.moveItem(-1, 0)
        }
        assert_raises(IndexError) {
          @iconList.moveItem(2, 0)
        }
        assert_nothing_raised(IndexError) {
          @iconList.moveItem(0, 0)
          @iconList.moveItem(0, 1)
          @iconList.moveItem(1, 0)
          @iconList.moveItem(1, 1)
        }
        assert_equal(0, @iconList.moveItem(0, 1))
        assert_equal(1, @iconList.moveItem(1, 0))
      end
    
      def test_SEL_REPLACED
        @iconList.appendItem("One")
        @iconList.appendItem("Two")
        itemIndex = 0
        @iconList.connect(SEL_REPLACED) { |sender, sel, ptr|
          itemIndex = ptr
        }
        @iconList.setItem(1, "", nil, nil, nil, true)
        assert_equal(1, itemIndex)
      end
      
      def test_SEL_INSERTED
        @iconList.appendItem("One")
        @iconList.appendItem("Two")
        itemIndex = 0
        @iconList.connect(SEL_INSERTED) { |sender, sel, ptr|
          itemIndex = ptr
        }
        @iconList.insertItem(1, "One Point Five", nil, nil, nil, true)
        assert_equal(1, itemIndex)
      end
      
      def test_SEL_DELETED
        @iconList.appendItem("One")
        @iconList.appendItem("Two")
        itemIndex = 0
        @iconList.connect(SEL_DELETED) { |sender, sel, ptr|
          itemIndex = ptr
        }
        @iconList.removeItem(1, true)
        assert_equal(1, itemIndex)
      end
    
      def test_SEL_SELECTED
        @iconList.appendItem("One")
        @iconList.appendItem("Two")
        itemIndex = 0
        @iconList.connect(SEL_SELECTED) { |sender, sel, ptr|
          itemIndex = ptr
        }
        @iconList.selectItem(1, true)
        assert_equal(1, itemIndex)
      end
    
      def test_SEL_DESELECTED
        @iconList.appendItem("One")
        @iconList.appendItem("Two")
        itemIndex = 0
        @iconList.connect(SEL_DESELECTED) { |sender, sel, ptr|
          itemIndex = ptr
        }
        @iconList.selectItem(1, true)
        @iconList.deselectItem(1, true)
        assert_equal(1, itemIndex)
      end
      
      def test_makeItemVisible
        items = []
        0.upto(2) { |i|
          items << @iconList.appendItem("item#{i}")
        }
        assert_raises(IndexError) {
          @iconList.makeItemVisible(-1)
        }
        assert_raises(IndexError) {
          @iconList.makeItemVisible(3)
        }
      end
    end