aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/test/core_ext/module
diff options
context:
space:
mode:
authorRick Olson <technoweenie@gmail.com>2007-01-28 01:18:51 +0000
committerRick Olson <technoweenie@gmail.com>2007-01-28 01:18:51 +0000
commit5e85a1c7f835249d276d6868a9520f803be46159 (patch)
treea928f33feb1e2be4ba7f21cfb5994f839cb75349 /activesupport/test/core_ext/module
parenteca93d0970925a305c6ccc620df62aeb385938dc (diff)
downloadrails-5e85a1c7f835249d276d6868a9520f803be46159.tar.gz
rails-5e85a1c7f835249d276d6868a9520f803be46159.tar.bz2
rails-5e85a1c7f835249d276d6868a9520f803be46159.zip
Added :instance_writer option to #mattr_writer/accessor, #cattr_writer/accessor, and #class_inheritable_writer to skip the creation of the instance writer. [Rick]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@6050 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'activesupport/test/core_ext/module')
-rw-r--r--activesupport/test/core_ext/module/attr_accessor_with_default.rb30
-rw-r--r--activesupport/test/core_ext/module/attribute_accessor_test.rb33
2 files changed, 63 insertions, 0 deletions
diff --git a/activesupport/test/core_ext/module/attr_accessor_with_default.rb b/activesupport/test/core_ext/module/attr_accessor_with_default.rb
new file mode 100644
index 0000000000..8ae52ad17a
--- /dev/null
+++ b/activesupport/test/core_ext/module/attr_accessor_with_default.rb
@@ -0,0 +1,30 @@
+require File.dirname(__FILE__) + '/../../abstract_unit'
+
+class AttrWithDefaultTest < Test::Unit::TestCase
+ def setup
+ @target = Class.new do
+ def helper
+ 'helper'
+ end
+ end
+ @instance = @target.new
+ end
+
+ def test_default_arg
+ @target.attr_accessor_with_default :foo, :bar
+ assert_equal(:bar, @instance.foo)
+ @instance.foo = nil
+ assert_nil(@instance.foo)
+ end
+
+ def test_default_proc
+ @target.attr_accessor_with_default(:foo) {helper.upcase}
+ assert_equal('HELPER', @instance.foo)
+ @instance.foo = nil
+ assert_nil(@instance.foo)
+ end
+
+ def test_invalid_args
+ assert_raise(RuntimeError) {@target.attr_accessor_with_default :foo}
+ end
+end \ No newline at end of file
diff --git a/activesupport/test/core_ext/module/attribute_accessor_test.rb b/activesupport/test/core_ext/module/attribute_accessor_test.rb
new file mode 100644
index 0000000000..c3f6575f84
--- /dev/null
+++ b/activesupport/test/core_ext/module/attribute_accessor_test.rb
@@ -0,0 +1,33 @@
+require File.dirname(__FILE__) + '/../../abstract_unit'
+
+class ModuleAttributeAccessorTest < Test::Unit::TestCase
+ def setup
+ @module = Module.new do
+ mattr_accessor :foo
+ mattr_accessor :bar, :instance_writer => false
+ end
+ @class = Class.new
+ @class.send :include, @module
+ @object = @class.new
+ end
+
+ def test_should_use_mattr_default
+ assert_nil @module.foo
+ assert_nil @object.foo
+ end
+
+ def test_should_set_mattr_value
+ @module.foo = :test
+ assert_equal :test, @object.foo
+
+ @object.foo = :test2
+ assert_equal :test2, @module.foo
+ end
+
+ def test_should_not_create_instance_writer
+ assert @module.respond_to?(:foo)
+ assert @module.respond_to?(:foo=)
+ assert @object.respond_to?(:bar)
+ assert !@object.respond_to?(:bar=)
+ end
+end \ No newline at end of file