root/lang/ruby/ruwin/test/ruwin/edit_field/test_rich.rb @ 29128

Revision 29128, 4.4 kB (checked in by isaisstillalive, 4 years ago)
  • string,string=の動作を、EditFieldとRichで統一した。
Line 
1require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "helper"))
2require "ruwin"
3require "ruwin/edit_field"
4require File.expand_path(File.join(File.dirname(__FILE__), "..", "testm_edit_field"))
5
6module 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
119end
120
121class 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
130end
131
132class 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
141end
Note: See TracBrowser for help on using the browser.