summaryrefslogtreecommitdiffstats
path: root/spec/options_spec.rb
diff options
context:
space:
mode:
authorJérémy Zurcher <jeremy@asynk.ch>2011-08-04 01:49:01 +0200
committerJérémy Zurcher <jeremy@asynk.ch>2011-08-04 01:49:01 +0200
commit02382433248cb0b9262a8561e292386e949f8d61 (patch)
treeed5aa1247350e3c406b3c5303bbe3ad4a87609ef /spec/options_spec.rb
parent104e6299c6989d8042b4ce20866344fc7800456b (diff)
downloadayk-02382433248cb0b9262a8561e292386e949f8d61.zip
ayk-02382433248cb0b9262a8561e292386e949f8d61.tar.gz
rename spec files
Diffstat (limited to 'spec/options_spec.rb')
-rw-r--r--spec/options_spec.rb91
1 files changed, 91 insertions, 0 deletions
diff --git a/spec/options_spec.rb b/spec/options_spec.rb
new file mode 100644
index 0000000..0fd84d5
--- /dev/null
+++ b/spec/options_spec.rb
@@ -0,0 +1,91 @@
+#! /usr/bin/env ruby
+# -*- coding: UTF-8 -*-
+
+require 'ayk/options'
+#
+describe AYK::Options do
+ #
+ describe 'simple usage' do
+ before(:all) do
+ @opt = AYK::Options.new 'Spec tests'
+ end
+ it "should set option key1" do
+ @opt.o("key 1 doc", :key1, 666) { puts 'trigger' }
+ end
+ it "should raise override existing key" do
+ lambda { @opt.o("key 1 doc", :key1, 666) { puts 'trigger' } }.should raise_error AYK::OptionsError
+ end
+ it "should set sub options" do
+ @opt.sub(:sub) do
+ o 'var 1', :var1, 69
+ o 'var 2', :var2, 999
+ end
+ @opt[:sub][:var1].should eql 69
+ @opt[:sub][:var2].should eql 999
+ end
+ it "should access subeys through [,]" do
+ @opt[:sub,:var1].should eql 69
+ @opt[:sub,:var2].should eql 999
+ end
+ it "should raise calling sub on existing option" do
+ lambda { @opt.sub :key1 }.should raise_error AYK::OptionsError
+ end
+ it "should raise unknown option when setting trigger" do
+ lambda { @opt.trigger :unknonwn }.should raise_error AYK::OptionsError
+ end
+ it "Options.get is private" do
+ lambda{ @opt.get(:key1) }.should raise_error NoMethodError
+ end
+ it "should set a trigger on assignment" do
+ @opt[:sub][:var1].should eql 69
+ @opt[:sub].trigger :var1 do raise Exception.new "trigger" end
+ lambda{ @opt[:sub][:var1] = 96}.should raise_error Exception
+ @opt[:sub][:var1].should eql 69
+ begin
+ @opt[:sub][:var1] = 96
+ rescue Exception
+ $!.message.should eql "trigger"
+ end
+ @opt[:sub][:var1].should eql 69
+ end
+ it "should get option key1 through method missing" do
+ @opt.key1.should eql 666
+ end
+ it "should get option key1 through []" do
+ @opt[:key1].should eql 666
+ end
+ it "should get option nokey through method missing" do
+ @opt.nokey.should eql nil
+ end
+ it "should get option nokey through []" do
+ @opt[:nokey].should eql nil
+ end
+ it "should return default valuei through method missing" do
+ @opt.default 'default value', 'none'
+ @opt.nokey.should eql 'none'
+ end
+ it "should return default value through []" do
+ @opt.default 'default value', 'none'
+ @opt[:nokey].should eql 'none'
+ end
+ it "should assign new value through []=" do
+ @opt[:sub][:var2].should eql 999
+ @opt[:sub][:var2] = 666
+ @opt[:sub][:var2].should eql 666
+ end
+ it "should nice init" do
+ opts = AYK::Options.new('Spec nice') do |opt|
+ opt.dsl do
+ o 'var doc', :var, 666
+ end
+ end
+ opts.var.should eql 666
+ end
+ it "should be nicely included" do
+ class A__A; include AYK::Optioned end
+ A__A.options.name.should eql 'a__a'
+ end
+ end
+ #
+end
+#