| 1 | require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "helper"))
|
|---|
| 2 | require "ruwin"
|
|---|
| 3 | require "ruwin/edit_field"
|
|---|
| 4 | require File.expand_path(File.join(File.dirname(__FILE__), "..", "testm_edit_field"))
|
|---|
| 5 |
|
|---|
| 6 | module TestModuleEditFieldRich
|
|---|
| 7 | include Ruwin::Const::Window
|
|---|
| 8 | include Ruwin::Const::EditField
|
|---|
| 9 |
|
|---|
| 10 | def test_eventmask
|
|---|
| 11 | eventmask = @control.sendMessage(EM_GETEVENTMASK, 0, 0)
|
|---|
| 12 | assert_equal ENM_KEYEVENTS, eventmask&ENM_KEYEVENTS
|
|---|
| 13 | assert_equal ENM_LINK, eventmask&ENM_LINK
|
|---|
| 14 | end
|
|---|
| 15 |
|
|---|
| 16 | def test_background_color_property
|
|---|
| 17 | klass = Class.new(self.class::TARGET_CLASS)
|
|---|
| 18 | klass.class_eval "background_color 0x010203"
|
|---|
| 19 | control = klass.new(@window)
|
|---|
| 20 | assert control.message_log.include?([EM_SETBKGNDCOLOR, 0, 0x010203])
|
|---|
| 21 | end
|
|---|
| 22 |
|
|---|
| 23 | def test_background_color_setter
|
|---|
| 24 | @control.background_color = 0x010203
|
|---|
| 25 | assert_equal [[EM_SETBKGNDCOLOR, 0, 0x010203]], @control.message_log
|
|---|
| 26 | end
|
|---|
| 27 |
|
|---|
| 28 | def test_background_color_setter_nil
|
|---|
| 29 | @control.background_color = nil
|
|---|
| 30 | assert_equal [[EM_SETBKGNDCOLOR, 1, 0]], @control.message_log
|
|---|
| 31 | end
|
|---|
| 32 |
|
|---|
| 33 |
|
|---|
| 34 | def test_color_property
|
|---|
| 35 | klass = Class.new(self.class::TARGET_CLASS)
|
|---|
| 36 | klass.class_eval "color 0x010203"
|
|---|
| 37 | control = klass.new(@window)
|
|---|
| 38 |
|
|---|
| 39 | expected = control.message_log.find{|v| v[0] == EM_SETCHARFORMAT}
|
|---|
| 40 | assert_equal EM_SETCHARFORMAT, expected[0]
|
|---|
| 41 | assert_equal SCF_DEFAULT, expected[1]
|
|---|
| 42 |
|
|---|
| 43 | charformat = expected[2].unpack("LLLLLLCCU")
|
|---|
| 44 | assert_equal 0x010203, charformat[5]
|
|---|
| 45 | end
|
|---|
| 46 |
|
|---|
| 47 | def test_auto_url_detect_true
|
|---|
| 48 | @control.auto_url_detect = true
|
|---|
| 49 | assert_equal [[EM_AUTOURLDETECT, 1, 0]], @control.message_log
|
|---|
| 50 | end
|
|---|
| 51 |
|
|---|
| 52 | def test_auto_url_detect_false
|
|---|
| 53 | @control.auto_url_detect = false
|
|---|
| 54 | assert_equal [[EM_AUTOURLDETECT, 0, 0]], @control.message_log
|
|---|
| 55 | end
|
|---|
| 56 |
|
|---|
| 57 |
|
|---|
| 58 | def test_default_format
|
|---|
| 59 | assert_kind_of Ruwin::EditField::Rich::Format::Char, @control.default
|
|---|
| 60 | assert_same @control, @control.default.instance_variable_get(:@control)
|
|---|
| 61 | end
|
|---|
| 62 |
|
|---|
| 63 | [
|
|---|
| 64 | %w{EN_MSGFILTER en_msgfilter},
|
|---|
| 65 | %w{EN_LINK en_link},
|
|---|
| 66 | ].each do |(event, method)|
|
|---|
| 67 | class_eval <<-"END2"
|
|---|
| 68 | def test_wm_notify_#{event}
|
|---|
| 69 | klass = Class.new(Ruwin::EditField::Rich)
|
|---|
| 70 | klass.class_eval <<-'END'
|
|---|
| 71 | attr_reader :wm_notify_msg
|
|---|
| 72 | def #{method} msg
|
|---|
| 73 | @wm_notify_msg = [:#{method}, msg]
|
|---|
| 74 | end
|
|---|
| 75 | END
|
|---|
| 76 | instance = klass.new(HiddenWindow.new)
|
|---|
| 77 |
|
|---|
| 78 | msg = DummyMSG.new nil, nil, nil, nil
|
|---|
| 79 | instance.wm_notify msg, 0, 0, #{event}
|
|---|
| 80 | assert_equal [:#{method}, msg], instance.wm_notify_msg
|
|---|
| 81 | end
|
|---|
| 82 | END2
|
|---|
| 83 | end
|
|---|
| 84 |
|
|---|
| 85 | [
|
|---|
| 86 | %w{WM_KEYDOWN [:keydown,\ 11]},
|
|---|
| 87 | %w{WM_LBUTTONDOWN [:lmousedown,\ 1,2]},
|
|---|
| 88 | %w{WM_RBUTTONDOWN [:rmousedown,\ 1,2]},
|
|---|
| 89 | ].each do |(message, args)|
|
|---|
| 90 | class_eval <<-"END"
|
|---|
| 91 | def test_en_msgfilter_#{message}
|
|---|
| 92 | klass = Class.new(Ruwin::EditField::Rich)
|
|---|
| 93 | instance = klass.new(HiddenWindow.new)
|
|---|
| 94 |
|
|---|
| 95 | lParam = SWin::Application.arg2cstructStr("UUUUUU", 0, 0, 0, #{message}, 11, 1|2<<16)
|
|---|
| 96 | lParam_ptr = [lParam].pack("P").unpack("L")[0]
|
|---|
| 97 | msg = DummyMSG.new nil, nil, nil, lParam_ptr
|
|---|
| 98 | assert_equal #{args}, instance.en_msgfilter(msg)
|
|---|
| 99 | end
|
|---|
| 100 | END
|
|---|
| 101 | end
|
|---|
| 102 |
|
|---|
| 103 | [
|
|---|
| 104 | %w{WM_LBUTTONDOWN link_lmousedown},
|
|---|
| 105 | %w{WM_RBUTTONDOWN link_rmousedown},
|
|---|
| 106 | ].each do |(message, event)|
|
|---|
| 107 | class_eval <<-"END"
|
|---|
| 108 | def test_en_link_#{message}
|
|---|
| 109 | klass = Class.new(Ruwin::EditField::Rich)
|
|---|
| 110 | instance = klass.new(HiddenWindow.new)
|
|---|
| 111 |
|
|---|
| 112 | lParam = SWin::Application.arg2cstructStr("UUUUUUUU", 0, 0, 0, #{message}, 0, 0, 5, 10)
|
|---|
| 113 | lParam_ptr = [lParam].pack("P").unpack("L")[0]
|
|---|
| 114 | msg = DummyMSG.new nil, nil, nil, lParam_ptr
|
|---|
| 115 | assert_equal [:#{event}, 5, 10], instance.en_link(msg)
|
|---|
| 116 | end
|
|---|
| 117 | END
|
|---|
| 118 | end
|
|---|
| 119 | end
|
|---|
| 120 |
|
|---|
| 121 | class TestRuwinEditFieldRich < Test::Unit::TestCase
|
|---|
| 122 | include TestModuleEditFieldSingle
|
|---|
| 123 | include TestModuleEditFieldRich
|
|---|
| 124 | include Ruwin::Const::EditField
|
|---|
| 125 | TARGET_CLASS = Ruwin::EditField::Rich
|
|---|
| 126 |
|
|---|
| 127 | def test_classname
|
|---|
| 128 | assert_equal "RICHEDIT20A", @control.classname
|
|---|
| 129 | end
|
|---|
| 130 | end
|
|---|
| 131 |
|
|---|
| 132 | class TestRuwinEditFieldRichMultiline < Test::Unit::TestCase
|
|---|
| 133 | include TestModuleEditFieldMultiline
|
|---|
| 134 | include TestModuleEditFieldRich
|
|---|
| 135 | include Ruwin::Const::EditField
|
|---|
| 136 | TARGET_CLASS = Ruwin::EditField::Rich::Multiline
|
|---|
| 137 |
|
|---|
| 138 | def test_classname
|
|---|
| 139 | assert_equal "RICHEDIT20A", @control.classname
|
|---|
| 140 | end
|
|---|
| 141 | end
|
|---|