Sha256: 3b7e2dfeee478284dd75a8d84efc49a50e65fc67e45d43d71c5bc1cfb524207e

Contents?: true

Size: 1.73 KB

Versions: 19

Compression:

Stored size: 1.73 KB

Contents

require "lanes/spec_helper"

class AttrAccessorWithDefaultTest < Lanes::TestCase

    Shared = Struct.new(:value)

    class AttrTestClass
        include Lanes::Concerns::AttrAccessorWithDefault
        attr_accessor_with_default :as_proc, Proc.new{ 42 }
        attr_accessor_with_default :non_copying, ->{ "default string" }
        attr_accessor_with_default :shared, Shared.new('default')
        attr_accessor_with_default :non_shared, ->{ Shared.new('default') }
        attr_accessor_with_default :startingnil
    end

    class Inherited<AttrTestClass
        non_shared "Foo"
    end

    def test_access
        a = AttrTestClass.new
        b = AttrTestClass.new

        assert_equal 42, b.as_proc

        assert_equal "default string", b.non_copying

        b.non_copying = "A new string"

        assert_equal "default string", a.non_copying
        a.non_copying = "third value"
        assert_equal "A new string", b.non_copying


        assert_equal "default", a.shared.value
        assert_equal "default", b.shared.value

        a.shared.value = "a new value"

        assert_equal "a new value", a.shared.value
        assert_equal "a new value", b.shared.value

        a.non_shared.value = "a new value"
        assert_equal "a new value", a.non_shared.value
        assert_equal "default", b.non_shared.value
    end

    def test_inheritance
        a = Inherited.new
        b = AttrTestClass.new
        assert_kind_of String, a.non_shared
        assert_kind_of Shared, b.non_shared
        assert_equal "Foo", a.non_shared
        assert_equal "default", b.non_shared.value
    end

    def test_nils
        a = AttrTestClass.new
        assert_nil a.startingnil
        a.startingnil = 22
        assert_equal 22, a.startingnil
    end

end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
lanes-0.8.3 spec/server/concerns/attr_accessor_with_default_spec.rb
lanes-0.8.2 spec/server/concerns/attr_accessor_with_default_spec.rb
lanes-0.8.1 spec/server/concerns/attr_accessor_with_default_spec.rb
lanes-0.8.0 spec/server/concerns/attr_accessor_with_default_spec.rb
lanes-0.7.0 spec/server/concerns/attr_accessor_with_default_spec.rb
lanes-0.6.1 spec/server/concerns/attr_accessor_with_default_spec.rb
lanes-0.6.0 spec/server/concerns/attr_accessor_with_default_spec.rb
lanes-0.5.6 spec/server/concerns/attr_accessor_with_default_spec.rb
lanes-0.5.5 spec/server/concerns/attr_accessor_with_default_spec.rb
lanes-0.5.0 spec/server/concerns/attr_accessor_with_default_spec.rb
lanes-0.4.0 spec/server/concerns/attr_accessor_with_default_spec.rb
lanes-0.3.0 spec/server/concerns/attr_accessor_with_default_spec.rb
lanes-0.1.9.5 spec/server/concerns/attr_accessor_with_default_spec.rb
lanes-0.1.9 spec/server/concerns/attr_accessor_with_default_spec.rb
lanes-0.1.8 spec/server/concerns/attr_accessor_with_default_spec.rb
lanes-0.1.7 spec/server/concerns/attr_accessor_with_default_spec.rb
lanes-0.1.6 spec/server/concerns/attr_accessor_with_default_spec.rb
lanes-0.1.5 spec/server/concerns/attr_accessor_with_default_spec.rb
lanes-0.1.2 spec/concerns/attr_accessor_with_default_spec.rb