alf-shell 0.14.0 → 0.15.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +5 -2
- data/Gemfile.lock +29 -10
- data/bin/alf +2 -0
- data/doc/man/alf-explain.man +22 -0
- data/doc/man/alf-metadata.man +13 -0
- data/doc/man/alf-show.man +16 -0
- data/doc/man/alf.man +77 -0
- data/doc/man/allbut.man +39 -0
- data/doc/man/among.man +25 -0
- data/doc/man/avg.man +37 -0
- data/doc/man/between.man +24 -0
- data/doc/man/concat.man +55 -0
- data/doc/man/contradiction.man +26 -0
- data/doc/man/count.man +20 -0
- data/doc/man/eq.man +29 -0
- data/doc/man/extend.man +33 -0
- data/doc/man/frame.man +60 -0
- data/doc/man/group.man +51 -0
- data/doc/man/gt.man +30 -0
- data/doc/man/gte.man +30 -0
- data/doc/man/intersect.man +54 -0
- data/doc/man/join.man +84 -0
- data/doc/man/lt.man +30 -0
- data/doc/man/lte.man +30 -0
- data/doc/man/matching.man +73 -0
- data/doc/man/max.man +36 -0
- data/doc/man/min.man +36 -0
- data/doc/man/minus.man +54 -0
- data/doc/man/native.man +32 -0
- data/doc/man/neq.man +29 -0
- data/doc/man/not_matching.man +51 -0
- data/doc/man/page.man +60 -0
- data/doc/man/project.man +36 -0
- data/doc/man/rank.man +42 -0
- data/doc/man/rename.man +29 -0
- data/doc/man/restrict.man +38 -0
- data/doc/man/stddev.man +37 -0
- data/doc/man/sum.man +37 -0
- data/doc/man/summarize.man +45 -0
- data/doc/man/tautology.man +26 -0
- data/doc/man/ungroup.man +30 -0
- data/doc/man/union.man +55 -0
- data/doc/man/unwrap.man +37 -0
- data/doc/man/variance.man +37 -0
- data/doc/man/wrap.man +37 -0
- data/doc/txt/alf-explain.man +22 -0
- data/doc/txt/alf-metadata.man +16 -0
- data/doc/txt/alf-show.man +19 -0
- data/doc/txt/alf.man +80 -0
- data/doc/txt/allbut.txt +31 -0
- data/doc/txt/among.txt +20 -0
- data/doc/txt/avg.txt +22 -0
- data/doc/txt/between.txt +19 -0
- data/doc/txt/concat.txt +31 -0
- data/doc/txt/contradiction.txt +15 -0
- data/doc/txt/count.txt +14 -0
- data/doc/txt/eq.txt +19 -0
- data/doc/txt/extend.txt +29 -0
- data/doc/txt/frame.txt +48 -0
- data/doc/txt/group.txt +37 -0
- data/doc/txt/gt.txt +20 -0
- data/doc/txt/gte.txt +20 -0
- data/doc/txt/intersect.txt +42 -0
- data/doc/txt/join.txt +65 -0
- data/doc/txt/lt.txt +20 -0
- data/doc/txt/lte.txt +20 -0
- data/doc/txt/matching.txt +54 -0
- data/doc/txt/max.txt +21 -0
- data/doc/txt/min.txt +21 -0
- data/doc/txt/minus.txt +42 -0
- data/doc/txt/native.txt +27 -0
- data/doc/txt/neq.txt +19 -0
- data/doc/txt/not_matching.txt +39 -0
- data/doc/txt/page.txt +48 -0
- data/doc/txt/project.txt +28 -0
- data/doc/txt/rank.txt +34 -0
- data/doc/txt/rename.txt +25 -0
- data/doc/txt/restrict.txt +26 -0
- data/doc/txt/stddev.txt +22 -0
- data/doc/txt/sum.txt +22 -0
- data/doc/txt/summarize.txt +33 -0
- data/doc/txt/tautology.txt +15 -0
- data/doc/txt/ungroup.txt +26 -0
- data/doc/txt/union.txt +43 -0
- data/doc/txt/unwrap.txt +29 -0
- data/doc/txt/variance.txt +22 -0
- data/doc/txt/wrap.txt +29 -0
- data/lib/alf/shell.rb +2 -32
- data/lib/alf/shell/alfrc.rb +3 -0
- data/lib/alf/shell/command.rb +2 -18
- data/lib/alf/shell/command/explain.rb +37 -0
- data/lib/alf/shell/command/help.rb +3 -21
- data/lib/alf/shell/command/main.rb +20 -78
- data/lib/alf/shell/command/metadata.rb +32 -0
- data/lib/alf/shell/command/show.rb +17 -5
- data/lib/alf/shell/support.rb +21 -13
- data/lib/alf/shell/version.rb +1 -1
- data/spec/integration/explain/explain.cmd +1 -0
- data/spec/integration/explain/explain.stdout +11 -0
- data/spec/integration/show/group.alf +2 -0
- data/spec/integration/show/show_alf.cmd +1 -0
- data/spec/integration/{group/group_0.stdout → show/show_alf.stdout} +0 -0
- data/tasks/doc.rake +4 -0
- metadata +116 -178
- data/doc/commands/exec.md +0 -16
- data/doc/commands/help.md +0 -11
- data/doc/commands/main.md +0 -33
- data/doc/commands/show.md +0 -12
- data/doc/operators/non_relational/autonum.md +0 -23
- data/doc/operators/non_relational/clip.md +0 -31
- data/doc/operators/non_relational/coerce.md +0 -15
- data/doc/operators/non_relational/compact.md +0 -20
- data/doc/operators/non_relational/defaults.md +0 -32
- data/doc/operators/non_relational/generator.md +0 -20
- data/doc/operators/non_relational/sort.md +0 -24
- data/doc/operators/non_relational/type-safe.md +0 -20
- data/doc/operators/relational/extend.md +0 -18
- data/doc/operators/relational/frame.md +0 -26
- data/doc/operators/relational/group.md +0 -27
- data/doc/operators/relational/hierarchize.md +0 -14
- data/doc/operators/relational/infer-heading.md +0 -20
- data/doc/operators/relational/intersect.md +0 -13
- data/doc/operators/relational/join.md +0 -28
- data/doc/operators/relational/matching.md +0 -24
- data/doc/operators/relational/minus.md +0 -12
- data/doc/operators/relational/not-matching.md +0 -20
- data/doc/operators/relational/page.md +0 -31
- data/doc/operators/relational/project.md +0 -28
- data/doc/operators/relational/quota.md +0 -21
- data/doc/operators/relational/rank.md +0 -27
- data/doc/operators/relational/rename.md +0 -17
- data/doc/operators/relational/restrict.md +0 -25
- data/doc/operators/relational/summarize.md +0 -25
- data/doc/operators/relational/ungroup.md +0 -20
- data/doc/operators/relational/union.md +0 -14
- data/doc/operators/relational/unwrap.md +0 -20
- data/doc/operators/relational/wrap.md +0 -24
- data/lib/alf/shell/command/exec.rb +0 -16
- data/lib/alf/shell/doc_manager.rb +0 -84
- data/lib/alf/shell/ext/signature.rb +0 -45
- data/lib/alf/shell/from_argv.rb +0 -84
- data/lib/alf/shell/operator.rb +0 -63
- data/spec/integration/__database__/group.alf +0 -3
- data/spec/integration/alf/alf_e.cmd +0 -1
- data/spec/integration/alf/alf_e.stdout +0 -4
- data/spec/integration/alf/alf_help.cmd +0 -1
- data/spec/integration/alf/alf_help.stdout +0 -76
- data/spec/integration/alf/alf_r.cmd +0 -1
- data/spec/integration/alf/alf_r.stdout +0 -5
- data/spec/integration/autonum/autonum_0.cmd +0 -1
- data/spec/integration/autonum/autonum_0.stdout +0 -9
- data/spec/integration/autonum/autonum_1.cmd +0 -1
- data/spec/integration/autonum/autonum_1.stdout +0 -9
- data/spec/integration/clip/clip_0.cmd +0 -1
- data/spec/integration/clip/clip_0.stdout +0 -9
- data/spec/integration/clip/clip_1.cmd +0 -1
- data/spec/integration/clip/clip_1.stdout +0 -9
- data/spec/integration/coerce/coerce_1.cmd +0 -1
- data/spec/integration/coerce/coerce_1.stdout +0 -5
- data/spec/integration/compact/compact_0.cmd +0 -1
- data/spec/integration/compact/compact_0.stdout +0 -9
- data/spec/integration/defaults/defaults_0.cmd +0 -1
- data/spec/integration/defaults/defaults_0.stdout +0 -9
- data/spec/integration/defaults/defaults_1.cmd +0 -1
- data/spec/integration/defaults/defaults_1.stdout +0 -9
- data/spec/integration/defaults/defaults_2.cmd +0 -1
- data/spec/integration/defaults/defaults_2.stdout +0 -9
- data/spec/integration/extend/extend_0.cmd +0 -1
- data/spec/integration/extend/extend_0.stdout +0 -16
- data/spec/integration/frame/frame_0.cmd +0 -1
- data/spec/integration/frame/frame_0.stdout +0 -6
- data/spec/integration/generator/generator_1.cmd +0 -1
- data/spec/integration/generator/generator_1.stdout +0 -10
- data/spec/integration/generator/generator_2.cmd +0 -1
- data/spec/integration/generator/generator_2.stdout +0 -5
- data/spec/integration/generator/generator_3.cmd +0 -1
- data/spec/integration/generator/generator_3.stdout +0 -5
- data/spec/integration/group/group_0.cmd +0 -1
- data/spec/integration/group/group_1.cmd +0 -1
- data/spec/integration/group/group_1.stdout +0 -32
- data/spec/integration/help/help_1.cmd +0 -1
- data/spec/integration/help/help_1.stdout +0 -12
- data/spec/integration/intersect/intersect_0.cmd +0 -1
- data/spec/integration/intersect/intersect_0.stdout +0 -9
- data/spec/integration/join/join_0.cmd +0 -1
- data/spec/integration/join/join_0.stdout +0 -16
- data/spec/integration/matching/matching_0.cmd +0 -1
- data/spec/integration/matching/matching_0.stdout +0 -8
- data/spec/integration/minus/minus_0.cmd +0 -1
- data/spec/integration/minus/minus_0.stdout +0 -4
- data/spec/integration/not-matching/not-matching_0.cmd +0 -1
- data/spec/integration/not-matching/not-matching_0.stdout +0 -5
- data/spec/integration/page/page_0.cmd +0 -1
- data/spec/integration/page/page_0.stdout +0 -6
- data/spec/integration/project/project_0.cmd +0 -1
- data/spec/integration/project/project_0.stdout +0 -9
- data/spec/integration/project/project_1.cmd +0 -1
- data/spec/integration/project/project_1.stdout +0 -9
- data/spec/integration/quota/quota_0.cmd +0 -1
- data/spec/integration/quota/quota_0.stdout +0 -16
- data/spec/integration/rank/rank_1.cmd +0 -1
- data/spec/integration/rank/rank_1.stdout +0 -10
- data/spec/integration/rank/rank_2.cmd +0 -1
- data/spec/integration/rank/rank_2.stdout +0 -10
- data/spec/integration/rank/rank_3.cmd +0 -1
- data/spec/integration/rank/rank_3.stdout +0 -10
- data/spec/integration/rank/rank_4.cmd +0 -1
- data/spec/integration/rank/rank_4.stdout +0 -6
- data/spec/integration/rank/rank_5.cmd +0 -1
- data/spec/integration/rank/rank_5.stdout +0 -6
- data/spec/integration/rename/rename_0.cmd +0 -1
- data/spec/integration/rename/rename_0.stdout +0 -9
- data/spec/integration/restrict/restrict_0.cmd +0 -1
- data/spec/integration/restrict/restrict_0.stdout +0 -6
- data/spec/integration/restrict/restrict_1.cmd +0 -1
- data/spec/integration/restrict/restrict_1.stdout +0 -6
- data/spec/integration/sort/sort_0.cmd +0 -1
- data/spec/integration/sort/sort_0.stdout +0 -9
- data/spec/integration/sort/sort_1.cmd +0 -1
- data/spec/integration/sort/sort_1.stdout +0 -9
- data/spec/integration/sort/sort_2.cmd +0 -1
- data/spec/integration/sort/sort_2.stdout +0 -9
- data/spec/integration/sort/sort_3.cmd +0 -1
- data/spec/integration/sort/sort_3.stdout +0 -9
- data/spec/integration/summarize/summarize_0.cmd +0 -1
- data/spec/integration/summarize/summarize_0.stdout +0 -8
- data/spec/integration/union/union_0.cmd +0 -1
- data/spec/integration/union/union_0.stdout +0 -9
- data/spec/integration/unwrap/unwrap_0.cmd +0 -1
- data/spec/integration/unwrap/unwrap_0.stdout +0 -9
- data/spec/integration/wrap/wrap_0.cmd +0 -1
- data/spec/integration/wrap/wrap_0.stdout +0 -9
- data/spec/unit/doc_manager/dynamic.md +0 -1
- data/spec/unit/doc_manager/example.md +0 -1
- data/spec/unit/doc_manager/example_1.txt +0 -11
- data/spec/unit/doc_manager/static.md +0 -1
- data/spec/unit/doc_manager/test_call.rb +0 -41
- data/spec/unit/ext/signature/test_argv2args.rb +0 -82
- data/spec/unit/ext/signature/test_to_shell.rb +0 -103
- data/spec/unit/from_argv/test_to_attr_list.rb +0 -30
- data/spec/unit/from_argv/test_to_attr_name.rb +0 -27
- data/spec/unit/from_argv/test_to_boolean.rb +0 -32
- data/spec/unit/from_argv/test_to_heading.rb +0 -37
- data/spec/unit/from_argv/test_to_ordering.rb +0 -28
- data/spec/unit/from_argv/test_to_predicate.rb +0 -26
- data/spec/unit/from_argv/test_to_renaming.rb +0 -23
- data/spec/unit/from_argv/test_to_size.rb +0 -32
- data/spec/unit/from_argv/test_to_summarization.rb +0 -19
- data/spec/unit/from_argv/test_to_tuple_computation.rb +0 -18
- data/spec/unit/from_argv/test_to_tuple_expression.rb +0 -38
- data/spec/unit/main/test_class_methods.rb +0 -44
- data/spec/unit/operator/test_autonum.rb +0 -28
- data/spec/unit/operator/test_clip.rb +0 -29
- data/spec/unit/operator/test_coerce.rb +0 -22
- data/spec/unit/operator/test_compact.rb +0 -16
- data/spec/unit/operator/test_defaults.rb +0 -29
- data/spec/unit/operator/test_extend.rb +0 -21
- data/spec/unit/operator/test_generator.rb +0 -37
- data/spec/unit/operator/test_group.rb +0 -32
- data/spec/unit/operator/test_infer_heading.rb +0 -16
- data/spec/unit/operator/test_intersect.rb +0 -18
- data/spec/unit/operator/test_join.rb +0 -18
- data/spec/unit/operator/test_matching.rb +0 -18
- data/spec/unit/operator/test_minus.rb +0 -18
- data/spec/unit/operator/test_not_matching.rb +0 -18
- data/spec/unit/operator/test_project.rb +0 -38
- data/spec/unit/operator/test_quota.rb +0 -23
- data/spec/unit/operator/test_rank.rb +0 -30
- data/spec/unit/operator/test_rename.rb +0 -21
- data/spec/unit/operator/test_restrict.rb +0 -36
- data/spec/unit/operator/test_sort.rb +0 -49
- data/spec/unit/operator/test_summarize.rb +0 -30
- data/spec/unit/operator/test_ungroup.rb +0 -28
- data/spec/unit/operator/test_union.rb +0 -18
- data/spec/unit/operator/test_unwrap.rb +0 -28
- data/spec/unit/operator/test_wrap.rb +0 -30
@@ -1,82 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
module Alf
|
3
|
-
module Algebra
|
4
|
-
describe Signature, "#argv2args" do
|
5
|
-
|
6
|
-
class FakeOp
|
7
|
-
attr_accessor :operands
|
8
|
-
end
|
9
|
-
before{
|
10
|
-
signature.install
|
11
|
-
}
|
12
|
-
subject{
|
13
|
-
signature.argv2args(argv)
|
14
|
-
}
|
15
|
-
|
16
|
-
context "on a signature with arguments only" do
|
17
|
-
let(:signature){
|
18
|
-
Signature.new(FakeOp) do |s|
|
19
|
-
s.argument :proj, AttrList
|
20
|
-
end
|
21
|
-
}
|
22
|
-
let(:argv){ %w{operand -- hello world} }
|
23
|
-
|
24
|
-
it 'should return the expected triple' do
|
25
|
-
[["operand"], [AttrList[:hello, :world]], {}]
|
26
|
-
end
|
27
|
-
end # arguments only
|
28
|
-
|
29
|
-
context "with default values for arguments" do
|
30
|
-
let(:signature){
|
31
|
-
Signature.new(FakeOp) do |s|
|
32
|
-
s.argument :attrname, AttrName, :autonum
|
33
|
-
end
|
34
|
-
}
|
35
|
-
let(:arguments){ subject[1] }
|
36
|
-
|
37
|
-
context 'and passed' do
|
38
|
-
let(:argv){ %w{operand -- hello} }
|
39
|
-
|
40
|
-
it 'should not use the default value' do
|
41
|
-
arguments.should eq([:hello])
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
context 'and not passed' do
|
46
|
-
let(:argv){ %w{operand} }
|
47
|
-
|
48
|
-
it 'should use the default value' do
|
49
|
-
arguments.should eq([:autonum])
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end # default values for arguments
|
53
|
-
|
54
|
-
context "on a signature with options" do
|
55
|
-
let(:signature){
|
56
|
-
Signature.new(FakeOp) do |s|
|
57
|
-
s.argument :key, AttrList, []
|
58
|
-
s.option :allbut, Boolean, false
|
59
|
-
end
|
60
|
-
}
|
61
|
-
let(:options){ subject[2] }
|
62
|
-
|
63
|
-
context "when no option is provided" do
|
64
|
-
let(:argv){ %w{operand -- hello world} }
|
65
|
-
|
66
|
-
it 'should use the default values for options' do
|
67
|
-
options.should eq({:allbut => false})
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
context "when option is provided" do
|
72
|
-
let(:argv){ %w{operand --allbut -- hello world} }
|
73
|
-
|
74
|
-
it 'should not use the default values for options' do
|
75
|
-
options.should eq({:allbut => true})
|
76
|
-
end
|
77
|
-
end
|
78
|
-
end # signature with options
|
79
|
-
|
80
|
-
end
|
81
|
-
end
|
82
|
-
end
|
@@ -1,103 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
module Alf
|
3
|
-
module Algebra
|
4
|
-
describe Signature, '#to_shell' do
|
5
|
-
|
6
|
-
subject{ signature.to_shell }
|
7
|
-
|
8
|
-
describe "on a nullary signature" do
|
9
|
-
let(:clazz){ Generator }
|
10
|
-
|
11
|
-
describe "on an empty signature" do
|
12
|
-
let(:signature){ Signature.new(clazz){|s|} }
|
13
|
-
it{ should eq("alf generator") }
|
14
|
-
end
|
15
|
-
|
16
|
-
describe "on an option-only signature" do
|
17
|
-
let(:signature){
|
18
|
-
Signature.new(clazz) do |s|
|
19
|
-
s.option :allbut, Boolean
|
20
|
-
end
|
21
|
-
}
|
22
|
-
it{ should eq("alf generator [--allbut]") }
|
23
|
-
end
|
24
|
-
|
25
|
-
end # nullary signature
|
26
|
-
|
27
|
-
describe "on a monadic operator" do
|
28
|
-
let(:clazz){ Coerce }
|
29
|
-
|
30
|
-
describe "on an empty signature" do
|
31
|
-
let(:signature){ Signature.new(clazz){|s|} }
|
32
|
-
it{ should eq("alf coerce [OPERAND]") }
|
33
|
-
end
|
34
|
-
|
35
|
-
describe "on an option-only signature" do
|
36
|
-
let(:signature){
|
37
|
-
Signature.new(clazz) do |s|
|
38
|
-
s.option :allbut, Boolean
|
39
|
-
end
|
40
|
-
}
|
41
|
-
it{ should eq("alf coerce [--allbut] [OPERAND]") }
|
42
|
-
end
|
43
|
-
|
44
|
-
describe "on an option-only signature with multiple options" do
|
45
|
-
let(:signature){
|
46
|
-
Signature.new(clazz) do |s|
|
47
|
-
s.option :allbut, Boolean
|
48
|
-
s.option :newname, AttrName
|
49
|
-
end
|
50
|
-
}
|
51
|
-
it{ should eq("alf coerce [--allbut] [--newname=NEWNAME] [OPERAND]") }
|
52
|
-
end
|
53
|
-
|
54
|
-
describe "on a signature with one argument only" do
|
55
|
-
let(:signature){
|
56
|
-
Signature.new(clazz) do |s|
|
57
|
-
s.argument :proj, AttrList
|
58
|
-
end
|
59
|
-
}
|
60
|
-
it{ should eq("alf coerce [OPERAND] -- PROJ") }
|
61
|
-
end
|
62
|
-
|
63
|
-
describe "on a signature with multiple arguments" do
|
64
|
-
let(:signature){
|
65
|
-
Signature.new(clazz) do |s|
|
66
|
-
s.argument :proj, AttrList
|
67
|
-
s.argument :ordering, Ordering
|
68
|
-
end
|
69
|
-
}
|
70
|
-
it{ should eq("alf coerce [OPERAND] -- PROJ -- ORDERING") }
|
71
|
-
end
|
72
|
-
|
73
|
-
describe "on a full signature" do
|
74
|
-
let(:signature){
|
75
|
-
Signature.new(clazz) do |s|
|
76
|
-
s.argument :proj, AttrList
|
77
|
-
s.argument :ordering, Ordering
|
78
|
-
s.option :allbut, Boolean
|
79
|
-
s.option :newname, AttrName
|
80
|
-
end
|
81
|
-
}
|
82
|
-
it{ should eq("alf coerce [--allbut] [--newname=NEWNAME] [OPERAND] -- PROJ -- ORDERING") }
|
83
|
-
end
|
84
|
-
|
85
|
-
end
|
86
|
-
|
87
|
-
describe "on a dyadic operator" do
|
88
|
-
let(:clazz){ Join }
|
89
|
-
|
90
|
-
describe "on an option-only signature" do
|
91
|
-
let(:signature){
|
92
|
-
Signature.new(clazz) do |s|
|
93
|
-
s.option :allbut, Boolean
|
94
|
-
end
|
95
|
-
}
|
96
|
-
it{ should eq("alf join [--allbut] [LEFT] RIGHT") }
|
97
|
-
end
|
98
|
-
|
99
|
-
end
|
100
|
-
|
101
|
-
end
|
102
|
-
end
|
103
|
-
end
|
@@ -1,30 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
module Alf
|
3
|
-
describe Shell, ".from_argv(argv, AttrList)" do
|
4
|
-
|
5
|
-
subject{ Shell.from_argv(argv, AttrList) }
|
6
|
-
|
7
|
-
context "on an empty array" do
|
8
|
-
let(:argv){ [] }
|
9
|
-
it{ should eq(AttrList.new([])) }
|
10
|
-
end
|
11
|
-
|
12
|
-
context "on a singleton" do
|
13
|
-
let(:argv){ ["hello"] }
|
14
|
-
it{ should eq(AttrList.new([:hello])) }
|
15
|
-
end
|
16
|
-
|
17
|
-
context "on multiple strings" do
|
18
|
-
let(:argv){ ["hello", "world"] }
|
19
|
-
it{ should eq(AttrList.new([:hello, :world])) }
|
20
|
-
end
|
21
|
-
|
22
|
-
context "when passed an unrecognized argument" do
|
23
|
-
let(:argv){ :not_recognized }
|
24
|
-
specify{
|
25
|
-
lambda{ subject }.should raise_error(Myrrha::Error)
|
26
|
-
}
|
27
|
-
end
|
28
|
-
|
29
|
-
end
|
30
|
-
end
|
@@ -1,27 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
module Alf
|
3
|
-
describe Shell, ".from_argv(argv, AttrName)" do
|
4
|
-
|
5
|
-
subject{ Shell.from_argv(argv, AttrName) }
|
6
|
-
|
7
|
-
context "with a String" do
|
8
|
-
let(:argv){ %w{hello} }
|
9
|
-
it{ should eq(:hello) }
|
10
|
-
end
|
11
|
-
|
12
|
-
context "with nothing" do
|
13
|
-
let(:argv){ %w{} }
|
14
|
-
specify{
|
15
|
-
lambda{ subject }.should raise_error(Myrrha::Error)
|
16
|
-
}
|
17
|
-
end
|
18
|
-
|
19
|
-
context "with more than one string" do
|
20
|
-
let(:argv){ %w{hello world} }
|
21
|
-
specify{
|
22
|
-
lambda{ subject }.should raise_error(Myrrha::Error)
|
23
|
-
}
|
24
|
-
end
|
25
|
-
|
26
|
-
end
|
27
|
-
end
|
@@ -1,32 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
module Alf
|
3
|
-
describe Shell, ".from_argv(argv, Boolean)" do
|
4
|
-
|
5
|
-
subject{ Shell.from_argv(argv, Boolean) }
|
6
|
-
|
7
|
-
context "with a String" do
|
8
|
-
let(:argv){ %w{true} }
|
9
|
-
it{ should eq(true) }
|
10
|
-
end
|
11
|
-
|
12
|
-
context "with nothing" do
|
13
|
-
let(:argv){ %w{} }
|
14
|
-
it{ should eq(false) }
|
15
|
-
end
|
16
|
-
|
17
|
-
context "with an invalid string" do
|
18
|
-
let(:argv){ %w{hello} }
|
19
|
-
specify{
|
20
|
-
lambda{ subject }.should raise_error(Myrrha::Error)
|
21
|
-
}
|
22
|
-
end
|
23
|
-
|
24
|
-
context "with more than one string" do
|
25
|
-
let(:argv){ %w{hello world} }
|
26
|
-
specify{
|
27
|
-
lambda{ subject }.should raise_error(Myrrha::Error)
|
28
|
-
}
|
29
|
-
end
|
30
|
-
|
31
|
-
end
|
32
|
-
end
|
@@ -1,37 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
module Alf
|
3
|
-
describe Shell, ".from_argv(argv, Heading)" do
|
4
|
-
|
5
|
-
subject{ Shell.from_argv(argv, Heading) }
|
6
|
-
|
7
|
-
context "on an empty array" do
|
8
|
-
let(:argv){ [] }
|
9
|
-
it{ should eq(Heading.new({})) }
|
10
|
-
end
|
11
|
-
|
12
|
-
context "on a single pair" do
|
13
|
-
let(:argv){ ["name", "String"] }
|
14
|
-
it{ should eq(Heading.new :name => String) }
|
15
|
-
end
|
16
|
-
|
17
|
-
context "on a double pair" do
|
18
|
-
let(:argv){ ["name", "String", "age", "Fixnum"] }
|
19
|
-
it{ should eq(Heading.new :name => String, :age => Fixnum) }
|
20
|
-
end
|
21
|
-
|
22
|
-
context "on odd number of strings" do
|
23
|
-
let(:argv){ ["hello", "world", "foo"] }
|
24
|
-
specify{
|
25
|
-
lambda{ subject }.should raise_error(Myrrha::Error)
|
26
|
-
}
|
27
|
-
end
|
28
|
-
|
29
|
-
context "when passed an unrecognized argument" do
|
30
|
-
let(:argv){ :not_recognized }
|
31
|
-
specify{
|
32
|
-
lambda{ subject }.should raise_error(Myrrha::Error)
|
33
|
-
}
|
34
|
-
end
|
35
|
-
|
36
|
-
end
|
37
|
-
end
|
@@ -1,28 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
module Alf
|
3
|
-
describe Shell, ".from_argv(argv, Ordering)" do
|
4
|
-
|
5
|
-
subject{ Shell.from_argv(argv, Ordering) }
|
6
|
-
|
7
|
-
context "on an empty array" do
|
8
|
-
let(:argv){ [] }
|
9
|
-
it{ should eq(Ordering.new([])) }
|
10
|
-
end
|
11
|
-
|
12
|
-
context "on a singleton" do
|
13
|
-
let(:argv){ ["hello"] }
|
14
|
-
it{ should eq(Ordering.new([[:hello, :asc]])) }
|
15
|
-
end
|
16
|
-
|
17
|
-
context "on multiple strings without explit directions" do
|
18
|
-
let(:argv){ ["hello", "world"] }
|
19
|
-
it{ should eq(Ordering.new([[:hello, :asc], [:world, :asc]])) }
|
20
|
-
end
|
21
|
-
|
22
|
-
context "on multiple strings with explit directions" do
|
23
|
-
let(:argv){ ["hello", "asc", "world", "desc"] }
|
24
|
-
it{ should eq(Ordering.new([[:hello, :asc], [:world, :desc]])) }
|
25
|
-
end
|
26
|
-
|
27
|
-
end
|
28
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
module Alf
|
3
|
-
describe Shell, ".from_argv(argv, Predicate)" do
|
4
|
-
|
5
|
-
subject{ Shell.from_argv(argv, Predicate) }
|
6
|
-
|
7
|
-
describe "from a singleton Array" do
|
8
|
-
let(:argv){ ["status == 10"] }
|
9
|
-
|
10
|
-
specify{
|
11
|
-
subject.expr.should be_a(Predicate::Native)
|
12
|
-
subject.to_ruby_literal.should eq("lambda{ status == 10 }")
|
13
|
-
}
|
14
|
-
end
|
15
|
-
|
16
|
-
describe "from an Array with coercion" do
|
17
|
-
let(:argv){ ["status", "10"] }
|
18
|
-
|
19
|
-
specify{
|
20
|
-
subject.expr.should be_a(Predicate::Eq)
|
21
|
-
subject.expr.should eq([:eq, [:var_ref, :status], [:literal, 10]])
|
22
|
-
}
|
23
|
-
end
|
24
|
-
|
25
|
-
end
|
26
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
module Alf
|
3
|
-
describe Shell, ".from_argv(argv, Renaming)" do
|
4
|
-
|
5
|
-
subject{ Shell.from_argv(argv, Renaming) }
|
6
|
-
|
7
|
-
context "from an empty Array" do
|
8
|
-
let(:argv){ [] }
|
9
|
-
it{ should eq(Renaming.new({})) }
|
10
|
-
end
|
11
|
-
|
12
|
-
context "from an Array of two elements" do
|
13
|
-
let(:argv){ ["old", "new"] }
|
14
|
-
it{ should eq(Renaming.new(:old => :new)) }
|
15
|
-
end
|
16
|
-
|
17
|
-
context "from an Array of four elements" do
|
18
|
-
let(:argv){ ["old", "new", "hello", "world"] }
|
19
|
-
it{ should eq(Renaming.new(:old => :new, :hello => :world)) }
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|
23
|
-
end
|
@@ -1,32 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
module Alf
|
3
|
-
describe Shell, ".from_argv(argv, Size)" do
|
4
|
-
|
5
|
-
subject{ Shell.from_argv(argv, Size) }
|
6
|
-
|
7
|
-
context 'on an empty array' do
|
8
|
-
let(:argv){ [ ] }
|
9
|
-
it{ should eq(0) }
|
10
|
-
end
|
11
|
-
|
12
|
-
context 'with a single string' do
|
13
|
-
let(:argv){ [ "12" ] }
|
14
|
-
it{ should eq(12) }
|
15
|
-
end
|
16
|
-
|
17
|
-
context 'on a big array' do
|
18
|
-
let(:argv){ ["12", "hello"] }
|
19
|
-
specify{
|
20
|
-
lambda{ subject }.should raise_error(Myrrha::Error)
|
21
|
-
}
|
22
|
-
end
|
23
|
-
|
24
|
-
context 'when not coercable' do
|
25
|
-
let(:argv){ ["hello"] }
|
26
|
-
specify{
|
27
|
-
lambda{ subject }.should raise_error(Myrrha::Error)
|
28
|
-
}
|
29
|
-
end
|
30
|
-
|
31
|
-
end
|
32
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
module Alf
|
3
|
-
describe Shell, ".from_argv(argv, Summarization)" do
|
4
|
-
|
5
|
-
subject{ Shell.from_argv(argv, Summarization) }
|
6
|
-
|
7
|
-
context "from an Array" do
|
8
|
-
let(:argv){ ["s", "sum{ qty }", "m", "max{ size }"] }
|
9
|
-
|
10
|
-
it{ should be_a(Summarization) }
|
11
|
-
|
12
|
-
specify{
|
13
|
-
subject.to_hash.keys.to_set.should eq([:s, :m].to_set)
|
14
|
-
subject.to_hash.values.all?{|v| v.should be_a(Aggregator)}
|
15
|
-
}
|
16
|
-
end
|
17
|
-
|
18
|
-
end
|
19
|
-
end
|