reflexion 0.1.6 → 0.1.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (225) hide show
  1. checksums.yaml +7 -0
  2. data/.doc/ext/reflex/application.cpp +54 -39
  3. data/.doc/ext/reflex/capture_event.cpp +87 -0
  4. data/.doc/ext/reflex/draw_event.cpp +103 -0
  5. data/.doc/ext/reflex/event.cpp +73 -0
  6. data/.doc/ext/reflex/focus_event.cpp +98 -0
  7. data/.doc/ext/reflex/frame_event.cpp +133 -0
  8. data/.doc/ext/reflex/image_view.cpp +74 -0
  9. data/.doc/ext/reflex/key_event.cpp +124 -0
  10. data/.doc/ext/reflex/native.cpp +45 -6
  11. data/.doc/ext/reflex/pointer_event.cpp +181 -0
  12. data/.doc/ext/reflex/reflex.cpp +17 -41
  13. data/.doc/ext/reflex/scroll_event.cpp +141 -0
  14. data/.doc/ext/reflex/selector.cpp +135 -0
  15. data/.doc/ext/reflex/style.cpp +253 -0
  16. data/.doc/ext/reflex/style_length.cpp +133 -0
  17. data/.doc/ext/reflex/style_length2.cpp +149 -0
  18. data/.doc/ext/reflex/style_length4.cpp +192 -0
  19. data/.doc/ext/reflex/update_event.cpp +77 -0
  20. data/.doc/ext/reflex/view.cpp +408 -88
  21. data/.doc/ext/reflex/wheel_event.cpp +146 -0
  22. data/.doc/ext/reflex/window.cpp +95 -92
  23. data/Rakefile +6 -5
  24. data/VERSION +1 -1
  25. data/ext/reflex/application.cpp +67 -49
  26. data/ext/reflex/capture_event.cpp +92 -0
  27. data/ext/reflex/draw_event.cpp +110 -0
  28. data/ext/reflex/event.cpp +77 -0
  29. data/ext/reflex/extconf.rb +18 -68
  30. data/ext/reflex/focus_event.cpp +104 -0
  31. data/ext/reflex/frame_event.cpp +143 -0
  32. data/ext/reflex/image_view.cpp +77 -0
  33. data/ext/reflex/key_event.cpp +133 -0
  34. data/ext/reflex/native.cpp +45 -6
  35. data/ext/reflex/pointer_event.cpp +195 -0
  36. data/ext/reflex/reflex.cpp +21 -47
  37. data/ext/reflex/scroll_event.cpp +152 -0
  38. data/ext/reflex/selector.cpp +144 -0
  39. data/ext/reflex/style.cpp +277 -0
  40. data/ext/reflex/style_length.cpp +140 -0
  41. data/ext/reflex/style_length2.cpp +157 -0
  42. data/ext/reflex/style_length4.cpp +204 -0
  43. data/ext/reflex/update_event.cpp +81 -0
  44. data/ext/reflex/view.cpp +469 -114
  45. data/ext/reflex/wheel_event.cpp +158 -0
  46. data/ext/reflex/window.cpp +130 -123
  47. data/include/reflex/application.h +12 -7
  48. data/include/reflex/defs.h +13 -89
  49. data/include/reflex/event.h +260 -0
  50. data/include/reflex/exception.h +17 -11
  51. data/include/reflex/image_view.h +45 -0
  52. data/include/reflex/reflex.h +2 -6
  53. data/include/reflex/ruby/application.h +40 -13
  54. data/include/reflex/ruby/event.h +72 -0
  55. data/include/reflex/ruby/image_view.h +25 -0
  56. data/include/reflex/ruby/selector.h +27 -0
  57. data/include/reflex/ruby/style.h +27 -0
  58. data/include/reflex/ruby/style_length.h +37 -0
  59. data/include/reflex/ruby/view.h +193 -38
  60. data/include/reflex/ruby/window.h +123 -39
  61. data/include/reflex/ruby.h +3 -2
  62. data/include/reflex/selector.h +64 -0
  63. data/include/reflex/style.h +144 -0
  64. data/include/reflex/style_length.h +147 -0
  65. data/include/reflex/view.h +182 -19
  66. data/include/reflex/window.h +35 -19
  67. data/include/reflex.h +7 -0
  68. data/lib/reflex/application.rb +14 -5
  69. data/lib/reflex/arc_shape.rb +20 -0
  70. data/lib/reflex/button.rb +75 -0
  71. data/lib/reflex/capture_event.rb +37 -0
  72. data/lib/reflex/color.rb +13 -0
  73. data/lib/reflex/color_space.rb +13 -0
  74. data/lib/reflex/draw_event.rb +19 -0
  75. data/lib/reflex/ellipse_shape.rb +20 -0
  76. data/lib/reflex/ext.rb +1 -1
  77. data/lib/reflex/flags.rb +18 -0
  78. data/lib/reflex/focus_event.rb +38 -0
  79. data/lib/reflex/font.rb +13 -0
  80. data/lib/reflex/frame_event.rb +42 -0
  81. data/lib/reflex/helper.rb +87 -30
  82. data/lib/reflex/image_view.rb +25 -0
  83. data/lib/reflex/key_event.rb +38 -0
  84. data/lib/reflex/line_shape.rb +20 -0
  85. data/lib/reflex/list_view.rb +15 -0
  86. data/lib/reflex/model.rb +149 -0
  87. data/lib/reflex/model_owner.rb +57 -0
  88. data/lib/reflex/model_view.rb +22 -0
  89. data/lib/reflex/module.rb +11 -7
  90. data/lib/reflex/pointer_event.rb +85 -0
  91. data/lib/reflex/rect_shape.rb +20 -0
  92. data/lib/reflex/reflex.rb +13 -2
  93. data/lib/reflex/scroll_event.rb +19 -0
  94. data/lib/reflex/selector.rb +31 -0
  95. data/lib/reflex/shader.rb +13 -0
  96. data/lib/reflex/shape.rb +34 -0
  97. data/lib/reflex/style.rb +55 -0
  98. data/lib/reflex/style_length.rb +30 -0
  99. data/lib/reflex/style_length2.rb +34 -0
  100. data/lib/reflex/style_length4.rb +38 -0
  101. data/lib/reflex/text_view.rb +55 -0
  102. data/lib/reflex/update_event.rb +19 -0
  103. data/lib/reflex/view.rb +38 -4
  104. data/lib/reflex/wheel_event.rb +19 -0
  105. data/lib/reflex/window.rb +7 -5
  106. data/lib/reflex.rb +38 -1
  107. data/lib/reflexion/include.rb +5 -0
  108. data/lib/reflexion.rb +100 -0
  109. data/reflex.gemspec +3 -4
  110. data/samples/app.rb +13 -0
  111. data/samples/bats.rb +91 -0
  112. data/samples/checker.rb +36 -0
  113. data/{examples/ruby/shapes.rb → samples/fans.rb} +12 -16
  114. data/samples/fps.rb +46 -0
  115. data/samples/grid.rb +60 -0
  116. data/{examples/ruby → samples}/hello.rb +14 -16
  117. data/samples/image.rb +44 -0
  118. data/samples/ios/hello/hello/Images.xcassets/AppIcon.appiconset/Contents.json +53 -0
  119. data/samples/ios/hello/hello/Images.xcassets/LaunchImage.launchimage/Contents.json +51 -0
  120. data/samples/ios/hello/hello/en.lproj/InfoPlist.strings +2 -0
  121. data/samples/ios/hello/hello/hello-Info.plist +47 -0
  122. data/samples/ios/hello/hello/hello-Prefix.pch +10 -0
  123. data/samples/ios/hello/hello/main.cpp +79 -0
  124. data/samples/ios/hello/hello.xcodeproj/project.pbxproj +725 -0
  125. data/{examples/ruby → samples}/key.rb +11 -14
  126. data/samples/layout.rb +89 -0
  127. data/samples/model.rb +86 -0
  128. data/samples/osx/hello/hello/Images.xcassets/AppIcon.appiconset/Contents.json +58 -0
  129. data/samples/osx/hello/hello/en.lproj/Credits.rtf +29 -0
  130. data/samples/osx/hello/hello/en.lproj/InfoPlist.strings +2 -0
  131. data/samples/osx/hello/hello/hello-Info.plist +32 -0
  132. data/samples/osx/hello/hello/hello-Prefix.pch +3 -0
  133. data/samples/osx/hello/hello/main.cpp +79 -0
  134. data/samples/osx/hello/hello.xcodeproj/project.pbxproj +725 -0
  135. data/samples/reflexion/hello.rb +24 -0
  136. data/samples/reflexion/paint.rb +40 -0
  137. data/samples/reflexion/pulse.rb +34 -0
  138. data/samples/repl.rb +69 -0
  139. data/samples/shader.rb +41 -0
  140. data/samples/shapes.rb +30 -0
  141. data/{examples/ruby → samples}/text.rb +7 -8
  142. data/samples/tree.rb +71 -0
  143. data/samples/views.rb +41 -0
  144. data/samples/visuals.rb +22 -0
  145. data/src/event.cpp +225 -0
  146. data/src/exception.cpp +24 -15
  147. data/src/image_view.cpp +70 -0
  148. data/src/ios/app_delegate.h +17 -0
  149. data/src/ios/app_delegate.mm +120 -0
  150. data/src/ios/application.mm +116 -0
  151. data/src/{cocoa/applicationdata.h → ios/application_data.h} +6 -6
  152. data/src/ios/event.h +26 -0
  153. data/src/ios/event.mm +31 -0
  154. data/src/ios/native_window.h +37 -0
  155. data/src/ios/native_window.mm +220 -0
  156. data/src/ios/opengl_view.h +13 -0
  157. data/src/ios/opengl_view.mm +131 -0
  158. data/src/{cocoa → ios}/reflex.mm +8 -12
  159. data/src/ios/window.mm +303 -0
  160. data/src/ios/window_data.h +75 -0
  161. data/src/osx/app_delegate.h +17 -0
  162. data/src/{cocoa/cocoaapplication.mm → osx/app_delegate.mm} +90 -48
  163. data/src/osx/application.mm +132 -0
  164. data/src/osx/application_data.h +45 -0
  165. data/src/osx/event.h +42 -0
  166. data/src/osx/event.mm +112 -0
  167. data/src/osx/native_window.h +26 -0
  168. data/src/osx/native_window.mm +322 -0
  169. data/src/{cocoa/openglview.h → osx/opengl_view.h} +0 -4
  170. data/src/{cocoa/openglview.mm → osx/opengl_view.mm} +66 -23
  171. data/src/osx/reflex.mm +50 -0
  172. data/src/osx/window.mm +308 -0
  173. data/src/osx/window_data.h +75 -0
  174. data/src/selector.cpp +121 -0
  175. data/src/style.cpp +576 -0
  176. data/src/style_length.cpp +341 -0
  177. data/src/view.cpp +1228 -129
  178. data/src/win32/application.cpp +1 -1
  179. data/src/window.cpp +54 -26
  180. data/test/helper.rb +8 -4
  181. data/test/test_capture_event.rb +41 -0
  182. data/test/test_event.rb +20 -0
  183. data/test/test_has_frame.rb +45 -0
  184. data/test/test_model.rb +9 -0
  185. data/test/test_model_owner.rb +9 -0
  186. data/test/test_selector.rb +75 -0
  187. data/test/test_style.rb +70 -0
  188. data/test/test_style_length.rb +38 -0
  189. data/test/test_style_length2.rb +50 -0
  190. data/test/test_style_length4.rb +56 -0
  191. data/test/test_view.rb +97 -23
  192. data/test/test_window.rb +54 -46
  193. metadata +205 -84
  194. data/.doc/ext/reflex/defs.cpp +0 -8
  195. data/.doc/ext/reflex/key.cpp +0 -122
  196. data/.doc/ext/reflex/points.cpp +0 -151
  197. data/.gitignore +0 -14
  198. data/ChangeLog +0 -8
  199. data/examples/hello/.gitignore +0 -2
  200. data/examples/hello/Rakefile +0 -41
  201. data/examples/hello/main.cpp +0 -18
  202. data/examples/ruby/app.rb +0 -13
  203. data/examples/ruby/checker.rb +0 -41
  204. data/examples/ruby/fps.rb +0 -49
  205. data/examples/ruby/grid.rb +0 -65
  206. data/examples/ruby/views.rb +0 -88
  207. data/examples/ruby/visuals.rb +0 -27
  208. data/ext/reflex/defs.cpp +0 -8
  209. data/ext/reflex/key.cpp +0 -129
  210. data/ext/reflex/points.cpp +0 -161
  211. data/include/reflex/ruby/key.h +0 -39
  212. data/include/reflex/ruby/points.h +0 -39
  213. data/lib/reflex/visuals/string.rb +0 -53
  214. data/src/cocoa/application.mm +0 -101
  215. data/src/cocoa/cocoaapplication.h +0 -21
  216. data/src/cocoa/cocoawindow.h +0 -46
  217. data/src/cocoa/cocoawindow.mm +0 -230
  218. data/src/cocoa/defs.h +0 -34
  219. data/src/cocoa/defs.mm +0 -87
  220. data/src/cocoa/window.mm +0 -148
  221. data/src/cocoa/windowdata.h +0 -56
  222. data/src/defs.cpp +0 -47
  223. data/src/helper.h +0 -12
  224. data/src/reflex.cpp +0 -43
  225. /data/{README → README.md} +0 -0
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
  #include <windows.h>
5
- #include <reflex/exception.h>
5
+ #include "reflex/exception.h"
6
6
 
7
7
 
8
8
  namespace Reflex
data/src/window.cpp CHANGED
@@ -3,16 +3,17 @@
3
3
 
4
4
  #include <rays/bounds.h>
5
5
  #include <rays/painter.h>
6
- #include <reflex/view.h>
6
+ #include "reflex/view.h"
7
+ #include "reflex/exception.h"
7
8
 
8
9
 
9
10
  namespace Reflex
10
11
  {
11
12
 
12
13
 
13
- void update_view_tree (View* v, float dt);
14
+ void update_view_tree (View* v, const UpdateEvent& e);
14
15
 
15
- void draw_view_tree (View* v, Painter* p, coord left, coord top);
16
+ void draw_view_tree (View* v, const DrawEvent& e, const Point& offset, const Bounds& clip);
16
17
 
17
18
 
18
19
  const View*
@@ -21,70 +22,97 @@ namespace Reflex
21
22
  return const_cast<Window*>(this)->root();
22
23
  }
23
24
 
25
+ const View*
26
+ Window::focus () const
27
+ {
28
+ return const_cast<Window*>(this)->focus();
29
+ }
30
+
24
31
  const Painter*
25
32
  Window::painter () const
26
33
  {
27
34
  return const_cast<Window*>(this)->painter();
28
35
  }
29
36
 
30
- void
31
- Window::update (float dt)
37
+ Rays::Point
38
+ Window::from_screen (const Rays::Point& point) const
32
39
  {
33
- update_view_tree(root(), dt);
40
+ not_implemented_error(__FILE__, __LINE__);
41
+ return 0;
34
42
  }
35
43
 
36
- void
37
- Window::draw ()
44
+ Rays::Point
45
+ Window::to_screen (const Rays::Point& point) const
38
46
  {
39
- Painter* p = painter();
40
- if (!p) return;
47
+ not_implemented_error(__FILE__, __LINE__);
48
+ return 0;
49
+ }
41
50
 
42
- View* v = root();
43
- if (!v) return;
51
+ void
52
+ Window::on_update (UpdateEvent* e)
53
+ {
54
+ if (!e)
55
+ argument_error(__FILE__, __LINE__);
44
56
 
45
- if (!p->begin()) return;
46
- draw_view_tree(v, p, 0, 0);
47
- p->end();
57
+ update_view_tree(root(), *e);
48
58
  }
49
59
 
50
60
  void
51
- Window::moved (coord x, coord y)
61
+ Window::on_draw (DrawEvent* e)
52
62
  {
63
+ if (!e)
64
+ argument_error(__FILE__, __LINE__);
65
+
66
+ draw_view_tree(root(), *e, 0, frame().dup().move_to(0));
53
67
  }
54
68
 
55
69
  void
56
- Window::resized (coord width, coord height)
70
+ Window::on_move (FrameEvent* e)
57
71
  {
58
- Painter* p = painter();
59
- if (p) p->canvas(0, 0, width, height);
72
+ if (!e)
73
+ argument_error(__FILE__, __LINE__);
74
+ }
60
75
 
61
- View* v = root();
62
- if (v) v->set_bounds(0, 0, width, height);
76
+ void
77
+ Window::on_resize (FrameEvent* e)
78
+ {
79
+ if (!e)
80
+ argument_error(__FILE__, __LINE__);
63
81
  }
64
82
 
65
83
  void
66
- Window::key_down (const Key& key)
84
+ Window::on_key_down (KeyEvent* e)
67
85
  {
86
+ if (!e)
87
+ argument_error(__FILE__, __LINE__);
68
88
  }
69
89
 
70
90
  void
71
- Window::key_up (const Key& key)
91
+ Window::on_key_up (KeyEvent* e)
72
92
  {
93
+ if (!e)
94
+ argument_error(__FILE__, __LINE__);
73
95
  }
74
96
 
75
97
  void
76
- Window::points_down (const Points& points)
98
+ Window::on_pointer_down (PointerEvent* e)
77
99
  {
100
+ if (!e)
101
+ argument_error(__FILE__, __LINE__);
78
102
  }
79
103
 
80
104
  void
81
- Window::points_up (const Points& points)
105
+ Window::on_pointer_up (PointerEvent* e)
82
106
  {
107
+ if (!e)
108
+ argument_error(__FILE__, __LINE__);
83
109
  }
84
110
 
85
111
  void
86
- Window::points_moved (const Points& points)
112
+ Window::on_pointer_move (PointerEvent* e)
87
113
  {
114
+ if (!e)
115
+ argument_error(__FILE__, __LINE__);
88
116
  }
89
117
 
90
118
  bool
data/test/helper.rb CHANGED
@@ -1,14 +1,18 @@
1
1
  # -*- coding: utf-8 -*-
2
2
 
3
3
 
4
- require 'xot/load_path'
5
- Xot::LoadPath.unshift File.expand_path('../../lib', __FILE__)
4
+ %w[../xot ../rucy ../rays .]
5
+ .map {|s| File.expand_path "../../#{s}/lib", __FILE__}
6
+ .each {|s| $:.unshift s if !$:.include?(s) && File.directory?(s)}
6
7
 
7
8
  require 'test/unit'
9
+ require 'xot/test'
8
10
  require 'reflex'
9
11
 
12
+ include Xot::Test
13
+
10
14
 
11
15
  unless $REFLEX_NOAUTOINIT
12
- def Rays.fin! (); end
13
- def Reflex.fin! (); end
16
+ def Rays.fin! () end
17
+ def Reflex.fin! () end
14
18
  end
@@ -0,0 +1,41 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+
4
+ require_relative 'helper'
5
+
6
+
7
+ class TestCaptureEvent < Test::Unit::TestCase
8
+
9
+ def cap (*args)
10
+ Reflex::CaptureEvent.new *args.map {|arg| Reflex::CAPTURE_FLAG.symbols2bits *arg}
11
+ end
12
+
13
+ def test_begin ()
14
+ c = cap [:key, :pointer], []
15
+ assert_equal [:key, :pointer], c.begin
16
+ assert_equal true, c.begin?(:key)
17
+ assert_equal true, c.begin?(:pointer)
18
+ assert_equal true, c.begin?(:all)
19
+
20
+ c = cap [:key], []
21
+ assert_equal [:key], c.begin
22
+ assert_equal true, c.begin?(:key)
23
+ assert_equal false, c.begin?(:pointer)
24
+ assert_equal false, c.begin?(:all)
25
+ end
26
+
27
+ def test_end ()
28
+ c = cap [], [:key, :pointer]
29
+ assert_equal [:key, :pointer], c.end
30
+ assert_equal true, c.end?(:key)
31
+ assert_equal true, c.end?(:pointer)
32
+ assert_equal true, c.end?(:all)
33
+
34
+ c = cap [], [:key]
35
+ assert_equal [:key], c.end
36
+ assert_equal true, c.end?(:key)
37
+ assert_equal false, c.end?(:pointer)
38
+ assert_equal false, c.end?(:all)
39
+ end
40
+
41
+ end# TestCaptureEvent
@@ -0,0 +1,20 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+
4
+ require_relative 'helper'
5
+
6
+
7
+ class TestEvent < Test::Unit::TestCase
8
+
9
+ def event ()
10
+ Reflex::Event.new
11
+ end
12
+
13
+ def test_block ()
14
+ e = event
15
+ assert_equal false, e.block?
16
+ e.block
17
+ assert_equal true, e.block?
18
+ end
19
+
20
+ end# TestEvent
@@ -0,0 +1,45 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+
4
+ require_relative 'helper'
5
+
6
+
7
+ class TestHasFrame < Test::Unit::TestCase
8
+
9
+ def view (*args)
10
+ Reflex::View.new *args
11
+ end
12
+
13
+ def test_accessors ()
14
+ v = view
15
+ b = v.frame.dup
16
+ assert_equal b, v.frame
17
+
18
+ v.x = 10; assert_equal 10, v.x
19
+ v.y = 20; assert_equal 20, v.y
20
+ v.z = 30; assert_equal 30, v.z
21
+
22
+ v.width = 100; assert_equal 100, v.width
23
+ v.height = 200; assert_equal 200, v.height
24
+ v.depth = 300; assert_equal 300, v.depth
25
+
26
+ v.inset_by 5, 5
27
+ assert_equal [15, 25, 90, 190], v.frame.to_a
28
+ assert_equal [15, 25, 30, 90, 190, 300], v.frame.to_a(3)
29
+ end
30
+
31
+ def test_move ()
32
+ v = view
33
+ v.move_to 10, 10; assert_equal [10, 10], v.pos.to_a
34
+ v.move_by 40, 40; assert_equal [50, 50], v.pos.to_a
35
+ v.move_by -10, -10; assert_equal [40, 40], v.pos.to_a
36
+ end
37
+
38
+ def test_resize ()
39
+ v = view
40
+ v.resize_to 100, 100; assert_equal [100, 100], v.size.to_a
41
+ v.resize_by 400, 400; assert_equal [500, 500], v.size.to_a
42
+ v.resize_by -100, -100; assert_equal [400, 400], v.size.to_a
43
+ end
44
+
45
+ end# TestHasFrame
@@ -0,0 +1,9 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+
4
+ require_relative 'helper'
5
+
6
+
7
+ class TestModel < Test::Unit::TestCase
8
+
9
+ end# TestModel
@@ -0,0 +1,9 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+
4
+ require_relative 'helper'
5
+
6
+
7
+ class TestModelOwner < Test::Unit::TestCase
8
+
9
+ end# TestModelOwnerData
@@ -0,0 +1,75 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+
4
+ require_relative 'helper'
5
+
6
+
7
+ class TestSelector < Test::Unit::TestCase
8
+
9
+ def sel (*args, &block)
10
+ Reflex::Selector.new *args, &block
11
+ end
12
+
13
+ def test_initialize ()
14
+ assert_equal 'A', sel(name: :A).name
15
+ assert_equal 'B', sel(name: :A){set name: :B}.name
16
+ assert_equal %w[T1], sel(tag: :T1 ).tags.to_a
17
+ assert_equal %w[T1 T2], sel(tag: [:T1, :T2]).tags.to_a
18
+ assert_equal %w[T1], sel(tags: :T1 ).tags.to_a
19
+ assert_equal %w[T1 T2], sel(tags: [:T1, :T2]).tags.to_a
20
+ end
21
+
22
+ def test_name ()
23
+ s = sel
24
+ assert_equal nil, s.name
25
+ s.name = 'Test'
26
+ assert_equal 'Test', s.name
27
+ end
28
+
29
+ def test_tags ()
30
+ s = sel
31
+ assert_equal [], s.tags.to_a
32
+ s.tag 'A'
33
+ assert_equal %w[A], s.tags.to_a
34
+ s.tag :B
35
+ assert_equal %w[A B], s.tags.to_a
36
+ s.tag :C, :D
37
+ assert_equal %w[A B C D], s.tags.to_a
38
+ s.untag :B, :C
39
+ assert_equal %w[A D], s.tags.to_a
40
+ assert_equal %w[a d], s.tags.map(&:downcase).to_a
41
+ end
42
+
43
+ def test_clear_tags ()
44
+ s = sel tag: [:T1, :T2]
45
+ s.clear_tags
46
+ assert_equal [], s.tags.to_a
47
+ end
48
+
49
+ def test_match ()
50
+ assert_not sel.match(sel name: :A, tag: :T)
51
+ assert sel(name: :A).match(sel name: :A)
52
+ assert_not sel(name: :A).match(sel name: :B)
53
+ assert sel(tag: :T1).match(sel tag: :T1)
54
+ assert_not sel(tag: :T1).match(sel tag: :T2)
55
+ assert sel(tag: :T1).match(sel tag: [:T1, :T2])
56
+ assert_not sel(tag: [:T1, :T2]).match(sel tag: :T1)
57
+ assert sel(name: :A, tag: :T1).match(sel name: :A, tag: :T1)
58
+ assert_not sel(name: :A, tag: :T1).match(sel name: :A)
59
+ assert_not sel(name: :A, tag: :T1).match(sel tag: :T1)
60
+ end
61
+
62
+ def test_compare ()
63
+ assert_equal sel(name: :A), sel(name: :A)
64
+ assert_not_equal sel(name: :A), sel(name: :X)
65
+ assert_equal sel(tag: [:A, :B]), sel(tag: [:A, :B])
66
+ assert_not_equal sel(tag: [:A, :B]), sel(tag: [:A, :X])
67
+ assert_equal sel(name: :A, tag: :B), sel(name: :A, tag: :B)
68
+ assert_not_equal sel(name: :A, tag: :B), sel(name: :X, tag: :B)
69
+ assert_not_equal sel(name: :A, tag: :B), sel(name: :A, tag: :X)
70
+ assert_equal sel(name: :A, tag: [:B, :C]), sel(name: :A, tag: [:B, :C])
71
+ assert_not_equal sel(name: :A, tag: :B), sel(name: :A, tag: [:B, :C])
72
+ assert_not_equal sel(name: :A, tag: [:B, :C]), sel(name: :A, tag: :B)
73
+ end
74
+
75
+ end# TestSelector
@@ -0,0 +1,70 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+
4
+ require_relative 'helper'
5
+
6
+
7
+ class TestStyle < Test::Unit::TestCase
8
+
9
+ def style (*args, &block)
10
+ Reflex::Style.new *args, &block
11
+ end
12
+
13
+ def test_initialize ()
14
+ assert_equal nil, style.name
15
+ assert_equal 'A', style(name: :A).name
16
+ assert_equal 'A', style{self.name = :A}.name
17
+ end
18
+
19
+ def test_selector ()
20
+ assert_equal 'A', style(name: :A).selector.name
21
+ assert_equal %w[T], style(tag: :T).selector.tags.to_a
22
+ end
23
+
24
+ def test_flow ()
25
+ s = style
26
+
27
+ assert_equal [:down, :none], s.flow
28
+ s.flow = :up
29
+ assert_equal [:up, :none], s.flow
30
+ s.flow = [:left, :down]
31
+ assert_equal [:left, :down], s.flow
32
+ s.flow = :none
33
+ assert_equal [:none, :none], s.flow
34
+ assert_raise(ArgumentError) {s.flow = []}
35
+ assert_raise(ArgumentError) {s.flow = [:down, :right, :none]}
36
+ end
37
+
38
+ def test_margin_padding ()
39
+ s = style
40
+
41
+ assert_equal [0, 0, 0, 0], s.margin.to_a.map(&:value)
42
+ s.margin = [1]
43
+ assert_equal [1, 1, 1, 1], s.margin.to_a.map(&:value)
44
+ s.margin = [1, 2]
45
+ assert_equal [1, 2, 1, 2], s.margin.to_a.map(&:value)
46
+ s.margin = [1, 2, 3]
47
+ assert_equal [1, 2, 3, 2], s.margin.to_a.map(&:value)
48
+ s.margin = [1, 2, 3, 4]
49
+ assert_equal [1, 2, 3, 4], s.margin.to_a.map(&:value)
50
+
51
+ assert_equal [0, 0, 0, 0], s.padding.to_a.map(&:value)
52
+ s.padding = [1]
53
+ assert_equal [1, 1, 1, 1], s.padding.to_a.map(&:value)
54
+ s.padding = [1, 2]
55
+ assert_equal [1, 2, 1, 2], s.padding.to_a.map(&:value)
56
+ s.padding = [1, 2, 3]
57
+ assert_equal [1, 2, 3, 2], s.padding.to_a.map(&:value)
58
+ s.padding = [1, 2, 3, 4]
59
+ assert_equal [1, 2, 3, 4], s.padding.to_a.map(&:value)
60
+ end
61
+
62
+ def test_background_color ()
63
+ assert_equal [0, 0, 0, 1], style.background_color.to_a
64
+ end
65
+
66
+ def test_background_image ()
67
+ assert_equal nil, style.background_image
68
+ end
69
+
70
+ end# TestStyle
@@ -0,0 +1,38 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+
4
+ require_relative 'helper'
5
+
6
+
7
+ class TestStyleLength < Test::Unit::TestCase
8
+
9
+ def len (*args, &block)
10
+ Reflex::StyleLength.new *args, &block
11
+ end
12
+
13
+ def test_initialize ()
14
+ assert_equal 0, len.value
15
+ assert_equal nil, len.unit
16
+ assert_equal 100, len(100).value
17
+ assert_equal :px, len(100).unit
18
+ assert_equal 100, len(100, :px).value
19
+ assert_equal :px, len(100, :px).unit
20
+ #assert_equal :%, len(100, :%).unit
21
+ assert_equal 100, len('100px').value
22
+ assert_equal :px, len('100px').unit
23
+ #assert_equal :%, len('100%').unit
24
+ end
25
+
26
+ def test_to_s ()
27
+ assert_equal '100px', len(100, :px).to_s
28
+ #assert_equal '100%', len(100, :%).to_s
29
+ #assert_equal '100.5%', len(100.5, :%).to_s
30
+ assert_raises(Rucy::NativeError) {len.to_s}
31
+ assert ((len.to_s rescue $!.message)) =~ /InvalidStateError/
32
+ end
33
+
34
+ def test_inspect ()
35
+ assert_nothing_raised {len.inspect}
36
+ end
37
+
38
+ end# TestStyleLength
@@ -0,0 +1,50 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+
4
+ require_relative 'helper'
5
+
6
+
7
+ class TestStyleLength2 < Test::Unit::TestCase
8
+
9
+ def len2 (w = 0, h = 0, &block)
10
+ Reflex::StyleLength2.new width: w, height: h, &block
11
+ end
12
+
13
+ def test_initialize ()
14
+ assert_equal 0, len2(*%w[]) .width.value
15
+ assert_equal 1, len2(*%w[1px]) .width.value
16
+ assert_equal 2, len2(*%w[1px 2px]).height.value
17
+ assert_equal :px, len2(*%w[1px]).width.unit
18
+ #assert_equal :%, len2(*%w[1%]).width.unit
19
+ end
20
+
21
+ def test_wh ()
22
+ assert_equal '1px', len2(1) .width.to_s
23
+ assert_equal '2px', len2(1, 2).height.to_s
24
+ end
25
+
26
+ def test_to_a ()
27
+ assert_equal [0, 0], len2.to_a.map(&:value)
28
+ assert_equal [:px] * 2, len2.to_a.map(&:unit)
29
+ assert_equal [1, 2], len2(1, 2).to_a.map(&:value)
30
+ assert_equal [:px] * 2, len2(1, 2).to_a.map(&:unit)
31
+ end
32
+
33
+ def test_get_set_at ()
34
+ l = len2 1, 2
35
+
36
+ assert_equal 1, l[0].value
37
+ assert_equal 2, l[1].value
38
+
39
+ l[0] = '10px'
40
+ assert_equal 10, l[0].value
41
+ l[1] = '40px'
42
+ assert_equal 40, l[1].value
43
+ l[-1] = '30px'
44
+ assert_equal 30, l[ 1].value
45
+ assert_equal 30, l[-1].value
46
+
47
+ assert_raises(IndexError) {l[2] = '50px'}
48
+ end
49
+
50
+ end# TestStyleLength2
@@ -0,0 +1,56 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+
4
+ require_relative 'helper'
5
+
6
+
7
+ class TestStyleLength4 < Test::Unit::TestCase
8
+
9
+ def len4 (l = 0, t = 0, r = 0, b = 0, &block)
10
+ Reflex::StyleLength4.new left: l, top: t, right: r, bottom: b, &block
11
+ end
12
+
13
+ def test_initialize ()
14
+ assert_equal 0, len4(*%w[]) .left.value
15
+ assert_equal 1, len4(*%w[1px]) .left.value
16
+ assert_equal 2, len4(*%w[1px 2px]) .top.value
17
+ assert_equal 3, len4(*%w[1px 2px 3px]) .right.value
18
+ assert_equal 4, len4(*%w[1px 2px 3px 4px]).bottom.value
19
+ assert_equal :px, len4(*%w[1px]).left.unit
20
+ #assert_equal :%, len4(*%w[1%]).left.unit
21
+ end
22
+
23
+ def test_ltrb ()
24
+ assert_equal '1px', len4(1) .left.to_s
25
+ assert_equal '2px', len4(1, 2) .top.to_s
26
+ assert_equal '3px', len4(1, 2, 3) .right.to_s
27
+ assert_equal '4px', len4(1, 2, 3, 4).bottom.to_s
28
+ end
29
+
30
+ def test_to_a ()
31
+ assert_equal [0, 0, 0, 0], len4.to_a.map(&:value)
32
+ assert_equal [:px] * 4, len4.to_a.map(&:unit)
33
+ assert_equal [1, 2, 3, 4], len4(1, 2, 3, 4).to_a.map(&:value)
34
+ assert_equal [:px] * 4, len4(1, 2, 3, 4).to_a.map(&:unit)
35
+ end
36
+
37
+ def test_get_set_at ()
38
+ l = len4 1, 2, 3, 4
39
+
40
+ assert_equal 1, l[0].value
41
+ assert_equal 2, l[1].value
42
+ assert_equal 3, l[2].value
43
+ assert_equal 4, l[3].value
44
+
45
+ l[0] = '10px'
46
+ assert_equal 10, l[0].value
47
+ l[3] = '40px'
48
+ assert_equal 40, l[3].value
49
+ l[-1] = '30px'
50
+ assert_equal 30, l[ 3].value
51
+ assert_equal 30, l[-1].value
52
+
53
+ assert_raises(IndexError) {l[4] = '50px'}
54
+ end
55
+
56
+ end# TestStyleLength4