nitro 0.12.0 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (193) hide show
  1. data/{ChangeLog → CHANGELOG} +137 -0
  2. data/INSTALL +1 -2
  3. data/README +1 -1
  4. data/Rakefile +10 -61
  5. data/benchmark/{nitro/bench.rb → bench.rb} +1 -1
  6. data/benchmark/{nitro/simple-webrick-n-200.txt → simple-webrick-n-200.txt} +0 -0
  7. data/benchmark/{nitro/static-webrick-n-200.txt → static-webrick-n-200.txt} +0 -0
  8. data/benchmark/{nitro/tiny-lhttpd-n-200-c-5.txt → tiny-lhttpd-n-200-c-5.txt} +0 -0
  9. data/benchmark/{nitro/tiny-webrick-n-200-c-5.txt → tiny-webrick-n-200-c-5.txt} +0 -0
  10. data/benchmark/{nitro/tiny-webrick-n-200.txt → tiny-webrick-n-200.txt} +0 -0
  11. data/benchmark/{nitro/tiny2-webrick-n-200.txt → tiny2-webrick-n-200.txt} +0 -0
  12. data/doc/{ChangeLog.1 → CHANGELOG.1} +0 -0
  13. data/{RELEASES → doc/RELEASES} +46 -0
  14. data/doc/faq.txt +7 -0
  15. data/examples/README.windows +1 -1
  16. data/examples/ajax/controller.rb +21 -0
  17. data/examples/ajax/public/index.xhtml +70 -0
  18. data/examples/ajax/public/js/ajax.js +64 -0
  19. data/examples/ajax/run.rb +16 -0
  20. data/examples/blog/README +6 -3
  21. data/examples/blog/conf/apache.conf +2 -2
  22. data/examples/blog/conf/lhttpd.conf +2 -2
  23. data/examples/blog/log/apache.error_log +777 -0
  24. data/examples/blog/{root → public}/base.xsl +0 -0
  25. data/examples/blog/{root → public}/fcgi.rb +0 -0
  26. data/examples/blog/{root → public}/m/bubbles.gif +0 -0
  27. data/examples/blog/{root → public}/m/comments_curve.gif +0 -0
  28. data/examples/blog/{root → public}/m/down.gif +0 -0
  29. data/examples/blog/{root → public}/m/footer_bg.gif +0 -0
  30. data/examples/blog/{root → public}/m/garrow.gif +0 -0
  31. data/examples/blog/{root → public}/m/gbull.gif +0 -0
  32. data/examples/blog/{root → public}/m/grbull.gif +0 -0
  33. data/examples/blog/{root → public}/m/h1_bg.gif +0 -0
  34. data/examples/blog/{root → public}/m/header_bg.gif +0 -0
  35. data/examples/blog/{root → public}/m/nitro.gif +0 -0
  36. data/examples/blog/{root → public}/m/obull.gif +0 -0
  37. data/examples/blog/{root → public}/m/page_bg.gif +0 -0
  38. data/examples/blog/{root → public}/m/rss.gif +0 -0
  39. data/examples/blog/{root → public}/m/side_title_bg.gif +0 -0
  40. data/examples/blog/{root → public}/m/sidebar_bg.gif +0 -0
  41. data/examples/{no_xsl_blog/root → blog/public}/style.css +6 -0
  42. data/examples/blog/run.rb +10 -12
  43. data/examples/blog/{lib → src}/blog.rb +3 -3
  44. data/examples/blog/{lib/blog → src}/controller.rb +13 -2
  45. data/examples/blog/src/mailer.rb +23 -0
  46. data/examples/blog/{lib/blog/model.rb → src/models/blog.rb} +4 -7
  47. data/examples/blog/src/models/content.rb +52 -0
  48. data/examples/blog/src/views/blog_entry_email.xhtml +16 -0
  49. data/examples/blog/{root → src/views}/comments.xhtml +0 -0
  50. data/examples/blog/{root → src/views}/entry_form.xhtml +0 -0
  51. data/examples/blog/{root → src/views}/error.xhtml +0 -0
  52. data/examples/blog/{root → src/views}/index.xhtml +0 -0
  53. data/examples/blog/{root → src/views}/login.xhtml +0 -0
  54. data/examples/blog/{root → src/views}/recent_posts.xhtml +0 -0
  55. data/examples/blog/{root → src/views}/view_entry.xhtml +8 -0
  56. data/examples/blog/{root → src/views}/view_entry.xml +0 -0
  57. data/examples/blog/src/xsl/base.xsl +153 -0
  58. data/examples/blog/{root → src/xsl}/style.xsl +2 -2
  59. data/examples/no_xsl_blog/README +5 -1
  60. data/examples/no_xsl_blog/conf/apache.conf +2 -2
  61. data/examples/no_xsl_blog/conf/lhttpd.conf +2 -2
  62. data/examples/no_xsl_blog/lib/blog/model.rb +1 -1
  63. data/{lib/parts → examples/no_xsl_blog/lib}/content.rb +1 -11
  64. data/examples/no_xsl_blog/log/apache.error_log +405 -0
  65. data/examples/no_xsl_blog/{root → public}/comments.xhtml +0 -0
  66. data/examples/no_xsl_blog/{root → public}/entry_form.xhtml +0 -0
  67. data/examples/no_xsl_blog/{root → public}/fcgi.rb +0 -0
  68. data/examples/no_xsl_blog/{root → public}/index.xhtml +0 -0
  69. data/examples/no_xsl_blog/{root → public}/login.xhtml +0 -0
  70. data/examples/no_xsl_blog/{root → public}/m/bubbles.gif +0 -0
  71. data/examples/no_xsl_blog/{root → public}/m/comments_curve.gif +0 -0
  72. data/examples/no_xsl_blog/{root → public}/m/down.gif +0 -0
  73. data/examples/no_xsl_blog/{root → public}/m/footer_bg.gif +0 -0
  74. data/examples/no_xsl_blog/{root → public}/m/garrow.gif +0 -0
  75. data/examples/no_xsl_blog/{root → public}/m/gbull.gif +0 -0
  76. data/examples/no_xsl_blog/{root → public}/m/grbull.gif +0 -0
  77. data/examples/no_xsl_blog/{root → public}/m/h1_bg.gif +0 -0
  78. data/examples/no_xsl_blog/{root → public}/m/header_bg.gif +0 -0
  79. data/examples/no_xsl_blog/{root → public}/m/nitro.gif +0 -0
  80. data/examples/no_xsl_blog/{root → public}/m/obull.gif +0 -0
  81. data/examples/no_xsl_blog/{root → public}/m/page_bg.gif +0 -0
  82. data/examples/no_xsl_blog/{root → public}/m/rss.gif +0 -0
  83. data/examples/no_xsl_blog/{root → public}/m/side_title_bg.gif +0 -0
  84. data/examples/no_xsl_blog/{root → public}/m/sidebar_bg.gif +0 -0
  85. data/examples/no_xsl_blog/{root → public}/recent_posts.xhtml +0 -0
  86. data/examples/{blog/root → no_xsl_blog/public}/style.css +0 -0
  87. data/examples/no_xsl_blog/{root → public}/view_entry.xhtml +0 -0
  88. data/examples/no_xsl_blog/{root → public}/view_entry.xml +0 -0
  89. data/examples/tiny/conf/apache.conf +2 -2
  90. data/examples/tiny/log/apache.error_log +100 -0
  91. data/examples/tiny/{root → public}/fcgi.rb +0 -0
  92. data/examples/tiny/{root → public}/include.xhtml +0 -0
  93. data/examples/tiny/{root → public}/index.xhtml +0 -0
  94. data/{bin/proto/root/m → examples/tiny/public}/nitro.png +0 -0
  95. data/examples/tiny/{root → public}/upload.xhtml +0 -0
  96. data/examples/tiny/run.rb +1 -2
  97. data/examples/why_wiki/wiki.yml +1 -0
  98. data/install.rb +5 -2
  99. data/lib/nitro.rb +2 -6
  100. data/lib/nitro/adapters/fastcgi.rb +2 -2
  101. data/lib/nitro/adapters/webrick.rb +4 -4
  102. data/lib/nitro/conf.rb +5 -2
  103. data/lib/nitro/controller.rb +2 -2
  104. data/lib/nitro/dispatcher.rb +19 -8
  105. data/lib/nitro/mail.rb +252 -8
  106. data/lib/nitro/render.rb +24 -21
  107. data/lib/nitro/runner.rb +1 -1
  108. data/lib/nitro/scaffold.rb +2 -5
  109. data/lib/nitro/simple.rb +2 -1
  110. data/lib/nitro/template.rb +42 -2
  111. data/test/nitro/tc_controller.rb +9 -4
  112. data/test/nitro/tc_dispatcher.rb +4 -6
  113. data/test/nitro/tc_mail.rb +95 -0
  114. data/test/{root → public}/blog/list.xhtml +0 -0
  115. data/test/public/dummy_mailer/registration.xhtml +5 -0
  116. data/vendor/README +0 -1
  117. metadata +136 -181
  118. data/benchmark/og/bench.rb +0 -75
  119. data/benchmark/og/sqlite-no-prepare.1.txt +0 -13
  120. data/benchmark/og/sqlite-no-prepare.2.txt +0 -13
  121. data/benchmark/og/sqlite-prepare.1.txt +0 -13
  122. data/benchmark/og/sqlite-prepare.2.txt +0 -13
  123. data/bin/proto/README +0 -34
  124. data/bin/proto/conf/apache.conf +0 -1
  125. data/bin/proto/conf/app.conf.rb +0 -14
  126. data/bin/proto/conf/lhttpd.conf +0 -236
  127. data/bin/proto/ctl +0 -4
  128. data/bin/proto/lib/README +0 -5
  129. data/bin/proto/log/README +0 -3
  130. data/bin/proto/root/fcgi.rb +0 -6
  131. data/bin/proto/root/index.xhtml +0 -69
  132. data/bin/proto/root/style.css +0 -152
  133. data/bin/proto/root/style.xsl +0 -99
  134. data/doc/og_config.txt +0 -35
  135. data/doc/og_tutorial.txt +0 -595
  136. data/examples/og/README +0 -11
  137. data/examples/og/mock_example.rb +0 -50
  138. data/examples/og/mysql_to_psql.rb +0 -96
  139. data/examples/og/run.rb +0 -286
  140. data/examples/tiny/root/nitro.png +0 -0
  141. data/lib/glue.rb +0 -55
  142. data/lib/glue/array.rb +0 -61
  143. data/lib/glue/attribute.rb +0 -83
  144. data/lib/glue/cache.rb +0 -138
  145. data/lib/glue/flexob.rb +0 -12
  146. data/lib/glue/hash.rb +0 -122
  147. data/lib/glue/inflector.rb +0 -91
  148. data/lib/glue/logger.rb +0 -147
  149. data/lib/glue/misc.rb +0 -14
  150. data/lib/glue/mixins.rb +0 -36
  151. data/lib/glue/number.rb +0 -24
  152. data/lib/glue/object.rb +0 -32
  153. data/lib/glue/pool.rb +0 -60
  154. data/lib/glue/property.rb +0 -408
  155. data/lib/glue/string.rb +0 -162
  156. data/lib/glue/time.rb +0 -85
  157. data/lib/glue/validation.rb +0 -394
  158. data/lib/og.rb +0 -185
  159. data/lib/og/adapter.rb +0 -513
  160. data/lib/og/adapters/filesys.rb +0 -121
  161. data/lib/og/adapters/mysql.rb +0 -347
  162. data/lib/og/adapters/oracle.rb +0 -375
  163. data/lib/og/adapters/psql.rb +0 -273
  164. data/lib/og/adapters/sqlite.rb +0 -262
  165. data/lib/og/backend.rb +0 -297
  166. data/lib/og/connection.rb +0 -304
  167. data/lib/og/database.rb +0 -282
  168. data/lib/og/enchant.rb +0 -125
  169. data/lib/og/meta.rb +0 -373
  170. data/lib/og/mock.rb +0 -165
  171. data/lib/og/observer.rb +0 -53
  172. data/lib/og/typemacros.rb +0 -23
  173. data/lib/parts/README +0 -9
  174. data/test/glue/tc_attribute.rb +0 -22
  175. data/test/glue/tc_cache.rb +0 -45
  176. data/test/glue/tc_hash.rb +0 -38
  177. data/test/glue/tc_logger.rb +0 -39
  178. data/test/glue/tc_numbers.rb +0 -20
  179. data/test/glue/tc_property.rb +0 -89
  180. data/test/glue/tc_property_mixins.rb +0 -93
  181. data/test/glue/tc_property_type_checking.rb +0 -35
  182. data/test/glue/tc_strings.rb +0 -103
  183. data/test/glue/tc_validation.rb +0 -188
  184. data/test/og/tc_filesys.rb +0 -83
  185. data/test/og/tc_lifecycle.rb +0 -104
  186. data/test/og/tc_many_to_many.rb +0 -62
  187. data/test/og/tc_meta.rb +0 -55
  188. data/test/og/tc_observer.rb +0 -85
  189. data/test/og/tc_sqlite.rb +0 -87
  190. data/test/tc_og.rb +0 -355
  191. data/vendor/composite_sexp_processor.rb +0 -43
  192. data/vendor/parse_tree.rb +0 -745
  193. data/vendor/sexp_processor.rb +0 -453
@@ -1,93 +0,0 @@
1
- #! /usr/bin/env ruby
2
- # vim:sw=2:ai
3
-
4
- #--
5
- # Thomas Quas <tquas@yahoo.com>
6
- # George Moschovitis <gm@navel.gr>
7
- # $Id$
8
- #++
9
-
10
- $LOAD_PATH.unshift 'lib'
11
-
12
- require "test/unit"
13
- require 'glue/property'
14
-
15
- module Mixin
16
- prop_accessor :date
17
- meta :dummy, [123]
18
- end
19
-
20
- class MixedOnly
21
- include Mixin
22
- __meta[:dummy] << 5
23
- __meta[:dummy] << 3
24
- end
25
-
26
- class MixedOnly2
27
- include Mixin
28
- end
29
-
30
- class MixedWithProp
31
- include Mixin
32
-
33
- prop_accessor :dummy
34
- end
35
-
36
- class Pure
37
- prop_accessor :dummy
38
- end
39
-
40
- class Empty
41
- end
42
-
43
- class Base
44
- prop_accessor :date
45
- meta :dummy, [123]
46
- end
47
-
48
- class Child1 < Base
49
- __meta[:dummy].first << 5
50
- __meta[:dummy].first << 3
51
- end
52
-
53
- class Child2 < Base
54
- end
55
-
56
- # Tests auto management.
57
- class TC_MixinsTest < ::Test::Unit::TestCase
58
- def test_the_unmanaged
59
- assert( Empty.respond_to?( :__props ) == false )
60
- assert_respond_to( Pure.new, :dummy )
61
- end
62
-
63
- def test_manage_entities
64
- assert_respond_to( Pure, :__props )
65
- assert_respond_to( Pure.new, :dummy )
66
- end
67
-
68
- def test_managing_mixedonly_classes
69
- assert_respond_to( MixedOnly.new, :date )
70
- end
71
-
72
- def test_managing_mixins
73
- assert_respond_to( Mixin, :__props )
74
- end
75
-
76
- def test_managing_mixed_classes
77
- obj = MixedWithProp.new
78
- assert( obj.respond_to?( :date ) )
79
- assert( obj.respond_to?( :dummy ) )
80
- end
81
-
82
- def test_crosspolination
83
- assert_equal 3, MixedOnly.__meta[:dummy].size
84
- assert_equal 1, MixedOnly2.__meta[:dummy].size
85
- assert_equal 1, Mixin.__meta[:dummy].size
86
- =begin
87
- gmosx: THINK!
88
- assert_equal 3, Child1.__meta[:dummy].first.size
89
- assert_equal 1, Child2.__meta[:dummy].first.size
90
- assert_equal 1, Base.__meta[:dummy].first.size
91
- =end
92
- end
93
- end
@@ -1,35 +0,0 @@
1
- $:.unshift File.join(File.dirname(__FILE__), '..', '..', 'lib')
2
-
3
- require 'test/unit'
4
-
5
- require 'glue/logger'
6
- require 'glue/property'
7
-
8
- N::Property.type_checking = true
9
-
10
- module Test # :nodoc: all
11
-
12
- class Person
13
- prop_accessor :age, Fixnum
14
-
15
- def initialize(age = nil)
16
- @age = age
17
- end
18
-
19
- end
20
-
21
- class TC_PropertiesTypeChecking < Test::Unit::TestCase
22
-
23
- def test_all
24
- per = Person.new
25
- =begin
26
- FIXME: does not work when run in the full test suite.
27
- assert_raises(RuntimeError) {
28
- per.age = 'Hello'
29
- }
30
- =end
31
- end
32
-
33
- end
34
-
35
- end
@@ -1,103 +0,0 @@
1
- # :nodoc: all
2
-
3
- require "test/unit"
4
- require "glue/string"
5
-
6
- class TC_StringUtilsUtils < Test::Unit::TestCase
7
- # :nodoc: all
8
-
9
- def setup
10
- @s = "this is any cool test"
11
- end
12
-
13
- def test_valid?
14
- assert_equal(true, N::StringUtils.valid?("test"))
15
- assert_equal(false, N::StringUtils.valid?(""))
16
- assert_equal(false, N::StringUtils.valid?(nil))
17
- end
18
-
19
- def test_head
20
- assert_equal(nil, N::StringUtils.head(nil))
21
- assert_equal("this...", N::StringUtils.head(@s, 3))
22
- assert_equal("this+++", N::StringUtils.head(@s, 3, false, "+++"))
23
- assert_equal("thi...", N::StringUtils.head(@s, 3, true))
24
- assert_equal("this is...", N::StringUtils.head(@s, 8))
25
- assert_equal(nil, N::StringUtils.head(@s, 0))
26
- assert_equal(nil, N::StringUtils.head(@s, 0, true))
27
- assert_equal("this is...", N::StringUtils.head(@s, 8, true))
28
- end
29
-
30
- def test_rewrite
31
- rules = [
32
- [/\/\$/, "../n1"],
33
- [/\$/, "../n1"],
34
- [/^games/, "../../games"],
35
- [/^tmp/, "/n/theseas/var/tmp"],
36
- ]
37
- string = N::StringUtils.rewrite("games/arkanoid.html", rules)
38
- assert_equal("../../games/arkanoid.html", string)
39
- string = N::StringUtils.rewrite("tmp/garbage.html", rules)
40
- assert_equal("/n/theseas/var/tmp/garbage.html", string)
41
- string = N::StringUtils.rewrite("root/index.html", rules)
42
- assert_equal("root/index.html", string)
43
- assert_equal(nil, N::StringUtils.rewrite(nil, rules))
44
- assert_equal("", N::StringUtils.rewrite("", rules))
45
-
46
- assert_raises(ArgumentError) {
47
- assert_equal("koko", N::StringUtils.rewrite("koko", nil))
48
- }
49
-
50
- # bug: should keep order
51
- s = N::StringUtils.rewrite("/$/koko.html", rules)
52
- assert_equal("../n1/koko.html", s)
53
- end
54
-
55
- def test_wrap
56
- s = "1234567890abcdefghijklmnopqrstu"
57
- r = "1234 5678 90ab cdef ghij klmn opqr stu"
58
- assert_equal(r, N::StringUtils::wrap(s, 4, " "))
59
-
60
- s = "111111111111111111111111111111111111111111111111"
61
- r = "1111111111 1111111111 1111111111 1111111111 11111111"
62
- assert_equal(r, N::StringUtils::wrap(s, 10, " "))
63
-
64
- s = "jackdaws love my big sphinx of quartz"
65
- r = "jackdaws love my big sphinx of quartz"
66
- assert_equal(r, N::StringUtils::wrap(s, 10, " "))
67
-
68
- s = "jackdaws love my big sphinx of quartz"
69
- r = "jack daws love my big sphi nx of quar tz"
70
- assert_equal(r, N::StringUtils::wrap(s, 4, " "))
71
-
72
- s = "jack.daws love my big sphinx of quartz"
73
- r = "jack .daw s love my big sphi nx of quar tz"
74
- assert_equal(r, N::StringUtils::wrap(s, 4, " "))
75
-
76
- assert_equal("", N::StringUtils::wrap("", 4, " "))
77
- assert_equal(nil, N::StringUtils::wrap(nil, 4, " "))
78
- end
79
- =begin
80
- def test_rationalize_filename
81
- filename = N::StringUtils.rationalize_filename("hello my friend!.gif")
82
- assert_equal("hello-my-friend.gif", filename)
83
- filename = N::StringUtils.rationalize_filename("���� ����.gif")
84
- assert_equal("pame-pali.gif", filename)
85
- filename = N::StringUtils.rationalize_filename("�� ���.gif")
86
- assert_equal("ti-les.gif", filename)
87
-
88
- # bug:
89
- filename = N::StringUtils.rationalize_filename("image-(10).gif")
90
- assert_equal("image-10.gif", filename)
91
- end
92
- =end
93
- def test_random_string
94
- s1 = N::StringUtils.random()
95
- s2 = N::StringUtils.random()
96
- assert_not_equal(s1, s2)
97
- assert(s1.size == s2.size)
98
- end
99
-
100
- def teardown
101
- @s = nil
102
- end
103
- end
@@ -1,188 +0,0 @@
1
- $:.unshift File.join(File.dirname(__FILE__), '..', '..', 'lib')
2
-
3
- require 'test/unit'
4
-
5
- require 'glue'
6
- require 'glue/validation'
7
-
8
- Property.type_checking = false
9
-
10
- class TC_Validation < Test::Unit::TestCase # :nodoc: all
11
-
12
- # Override the default error message
13
- N::Validation::Errors.invalid_format = 'INVALID'
14
-
15
- module Mixin
16
- prop_accessor :value, String
17
- validate_format :value, :format => /123/, :msg => 'mixin error'
18
- end
19
-
20
- class User
21
- include Mixin
22
-
23
- prop_accessor :name, String
24
- validate_format :name, :format => /Leo/, :msg => 'per class override'
25
- end
26
-
27
- class Article
28
- prop_accessor :name, String
29
- validate_format :name, :format => /news/
30
- end
31
-
32
- class Dummy1
33
- prop_accessor :test, Fixnum
34
- prop_accessor :str, String
35
- validate_value :test, :str
36
- end
37
-
38
- class Dummy2
39
- prop_accessor :password, String
40
- validate_confirmation :password
41
- end
42
-
43
- class Dummy3
44
- prop_accessor :vmin, String
45
- validate_length :vmin, :min => 2
46
-
47
- prop_accessor :vmax, String
48
- validate_length :vmax, :max => 3, :msg => 'LOOONG'
49
-
50
- prop_accessor :vran, String
51
- validate_length :vran, :range => 2..4, :msg_long => 'argh'
52
-
53
- prop_accessor :vlen, String
54
- validate_length :vlen, :length => 3, :msg => 'argh'
55
- end
56
-
57
- class Dummy4
58
- prop_accessor :sex, String
59
- validate_inclusion :sex, :in => %w{ Male Female }, :msg => 'huh?'
60
-
61
- prop_accessor :age, Fixnum
62
- validate_inclusion :age, :in => 5..99
63
- end
64
-
65
- # bug
66
-
67
- class NoProp
68
- include Mixin
69
- validate_length :value, :min => 3
70
- end
71
-
72
- def test_validate_value
73
- d = Dummy1.new
74
-
75
- assert !d.valid?
76
- assert_equal 2, d.errors.count
77
- d.test = 1
78
- assert !d.valid?
79
- assert_equal 1, d.errors.count
80
- d.str = 'yeah'
81
- assert d.valid?
82
- end
83
-
84
- def test_validate_confirmation
85
- d = Dummy2.new
86
-
87
- assert_respond_to d, :password_confirmation
88
-
89
- d.password = 'hello'
90
- assert !d.valid?
91
- d.password_confirmation = 'hel'
92
- assert !d.valid?
93
- d.password_confirmation = 'hello'
94
- assert d.valid?
95
- end
96
-
97
- def test_validate_format
98
- u = User.new
99
-
100
- u.value = '1234'
101
-
102
- u.name = 'George'
103
- assert !u.valid?
104
-
105
- assert_equal 'per class override', u.errors[:name].first
106
-
107
- u.name = 'Leonard'
108
- assert u.valid?
109
-
110
- a = Article.new
111
-
112
- a.name = 'In the news'
113
- assert a.valid?
114
-
115
- a.name = 'Sports'
116
- assert !a.valid?
117
-
118
- assert_equal 1, a.errors.count
119
- assert_equal 1, a.errors.on(:name).size
120
- assert_kind_of Array, a.errors[:name]
121
-
122
- assert_equal 'INVALID', a.errors[:name].first
123
-
124
- # test mixin
125
-
126
- u.value = '543'
127
- assert !u.valid?
128
- end
129
-
130
- def test_validate_length
131
- d = Dummy3.new
132
-
133
- d.vmin = 'q'
134
- d.vmax = '2'
135
- d.vlen = '123'
136
- d.vran = '123'
137
-
138
- assert !d.valid?
139
- assert_equal 'Too short, must be more than 2 characters long', d.errors.on(:vmin).first
140
- d.vmin = 'longer'
141
- assert d.valid?
142
-
143
- d.vmax = 'loooooooooooong'
144
- assert !d.valid?
145
- assert_equal 'LOOONG', d.errors.on(:vmax).first
146
-
147
- d.vmax = nil
148
- assert !d.valid?
149
- assert_equal 'No value provided', d.errors.on(:vmax).first
150
-
151
- d.vlen = '12'
152
- assert !d.valid?
153
- assert_equal 'argh', d.errors.on(:vlen).first
154
-
155
- d.vlen = '1234565'
156
- assert !d.valid?
157
-
158
- d.vran = '1'
159
- assert !d.valid?
160
- assert_equal 'Too short, must be more than 2 characters long', d.errors.on(:vran).first
161
-
162
- d.vran = '11111111'
163
- assert !d.valid?
164
- assert_equal 'argh', d.errors.on(:vran).first
165
- end
166
-
167
- def test_validate_inclusion
168
- d = Dummy4.new
169
-
170
- d.sex = 'Alien'
171
- d.age = 1
172
-
173
- assert !d.valid?
174
- assert_equal 2, d.errors.count
175
-
176
- d.sex = 'Male'
177
- assert !d.valid?
178
- assert_equal 1, d.errors.count
179
-
180
- d.age = 110
181
- assert !d.valid?
182
- assert_equal 1, d.errors.count
183
-
184
- d.age = 90
185
- assert d.valid?
186
- end
187
-
188
- end
@@ -1,83 +0,0 @@
1
- $:.unshift File.join(File.dirname(__FILE__), '..', '..', 'lib')
2
-
3
- require 'test/unit'
4
- require 'ostruct'
5
-
6
- require 'og'
7
- require 'og/adapters/filesys'
8
-
9
- class TC_OgFilesys < Test::Unit::TestCase # :nodoc: all
10
- include N, Og
11
-
12
- # Forward declaration.
13
-
14
- class Comment; end
15
-
16
- class Article
17
- prop_accessor :name, String
18
- prop_accessor :age, Fixnum
19
- has_many :comments, Comment
20
-
21
- def initialize (name = nil, age = nil)
22
- @name, @age = name, age
23
- end
24
- end
25
-
26
- class Comment
27
- prop_accessor :text, String
28
- belongs_to :article, Article
29
-
30
- def initialize(text = nil)
31
- @text = text
32
- end
33
- end
34
-
35
- def setup
36
- config = {
37
- :adapter => 'filesys',
38
- :database => 'fstest',
39
- }
40
-
41
- $DBG = true
42
-
43
- Og::Database.drop_db!(config)
44
- @og = Og::Database.new(config)
45
- end
46
-
47
- def teardown
48
- @og.shutdown
49
- end
50
-
51
- def test_all
52
- a = Article.new('gmosx', 30)
53
- a.save!
54
-
55
- a1 = Article[1]
56
-
57
- assert_equal 'gmosx', a1.name
58
- assert_equal 30, a1.age
59
- assert_equal 1, a1.oid
60
-
61
- Article.create('drak', 12)
62
- Article.create('ekarak', 34)
63
- Article.create('mario', 53)
64
- Article.create('elathan', 34)
65
- =begin
66
- articles = Article.all
67
-
68
- assert_equal 5, articles.size
69
- =end
70
- a3 = Article[3]
71
-
72
- assert_equal 'ekarak', a3.name
73
-
74
- c1 = Comment.new('a comment')
75
- c1.save!
76
- a3.add_comment(c1)
77
- =begin
78
- a5 = Article[3]
79
- assert_equal 1, a5.comments.size
80
- =end
81
- end
82
-
83
- end