spec/lib/ruby-conf_spec.rb in ruby-conf-2.7.2 vs spec/lib/ruby-conf_spec.rb in ruby-conf-2.8.0
- old
+ new
@@ -11,9 +11,49 @@
end
subject { RubyConf }
describe "lambda arguments" do
+
+ it "uses bang to ensure lambdas get called only once" do
+ RubyConf.define :Lambang do
+ noargs -> { "#{rand(1000)}" }
+ bang ->(a, b) { "#{a}-#{b}-#{rand(1000)}" }
+ end
+
+ normal = Lambang.noargs
+ Lambang.noargs!.should == normal
+ Lambang.noargs.should_not == normal
+
+ bang = Lambang.noargs!
+ Lambang.noargs!.should == bang
+
+ #reset it by not using bang
+ Lambang.noargs.should_not == bang
+
+ bang2 = Lambang.noargs!
+ bang2.should_not == bang
+ Lambang.noargs!.should == bang2
+
+
+ normal = Lambang.bang(:a, :b)
+ Lambang.bang!(:a, :b).should == normal
+ Lambang.bang(:a, :b).should_not == normal
+
+ bangcd = Lambang.bang!(:c, :d)
+ bangef = Lambang.bang!(:e, :f)
+ Lambang.bang!(:c, :d).should == bangcd
+ Lambang.bang!(:e, :f).should == bangef
+ Lambang.bang!(:c, :d).should == bangcd
+
+ #reset it by not using bang
+ Lambang.bang(:c, :d).should_not == bangcd
+
+ bangcd2 = Lambang.bang!(:c, :d)
+ bangcd2.should_not == bangcd
+ Lambang.bang!(:c, :d).should == bangcd2
+ end
+
it "handles hash arguments properly" do
RubyConf.define :LambdaHashes do
key ->(options) {
options
}