nitro 0.12.0 → 0.13.0

Sign up to get free protection for your applications and to get access to all the features.
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