cldwalker-alias 0.1.2 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.rdoc +16 -0
- data/README.rdoc +56 -77
- data/Rakefile +4 -4
- data/VERSION.yml +2 -2
- data/lib/alias/console.rb +13 -49
- data/lib/alias/creator.rb +102 -81
- data/lib/alias/creators/any_to_instance_method_creator.rb +22 -0
- data/lib/alias/creators/class_method_creator.rb +19 -0
- data/lib/alias/creators/class_to_instance_method_creator.rb +25 -0
- data/lib/alias/creators/constant_creator.rb +11 -0
- data/lib/alias/creators/instance_method_creator.rb +19 -0
- data/lib/alias/manager.rb +107 -49
- data/lib/alias/util.rb +86 -0
- data/lib/alias/validator.rb +94 -0
- data/lib/alias.rb +70 -36
- data/test/alias_test.rb +54 -53
- data/test/aliases.yml +8 -4
- data/test/any_to_instance_method_creator_test.rb +39 -0
- data/test/class_method_creator_test.rb +42 -0
- data/test/class_to_instance_method_creator_test.rb +48 -0
- data/test/console_test.rb +60 -0
- data/test/constant_creator_test.rb +27 -22
- data/test/creator_test.rb +24 -65
- data/test/instance_method_creator_test.rb +41 -0
- data/test/manager_test.rb +92 -97
- data/test/test_helper.rb +23 -3
- data/test/util_test.rb +42 -0
- data/test/validator_test.rb +72 -0
- metadata +40 -24
- data/aliases.yml.example +0 -16
- data/lib/alias/class_method_creator.rb +0 -9
- data/lib/alias/constant_creator.rb +0 -50
- data/lib/alias/core_extensions.rb +0 -46
- data/lib/alias/instance_method_creator.rb +0 -9
- data/lib/alias/method_creator_helper.rb +0 -77
- data/lib/config_struct.rb +0 -17
- data/test/core_extensions_test.rb +0 -34
- data/test/method_creator_helper_test.rb +0 -59
@@ -0,0 +1,42 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), 'test_helper.rb')
|
2
|
+
|
3
|
+
class Alias::Creators::ClassMethodCreatorTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
context "ClassMethodCreator" do
|
6
|
+
before(:each) { @manager = Alias::Manager.new }
|
7
|
+
def expect_aliases(hash)
|
8
|
+
arr = Alias::Creators::ClassMethodCreator.maps_config(hash)
|
9
|
+
Alias::Creators::ClassMethodCreator.expects(:generates_aliases).with(arr).returns('')
|
10
|
+
end
|
11
|
+
|
12
|
+
def create_aliases(hash)
|
13
|
+
@manager.create_aliases(:class_method, hash)
|
14
|
+
end
|
15
|
+
|
16
|
+
test "deletes invalid class method keys" do
|
17
|
+
expect_aliases "Array"=>{}, "String"=>{'yaml_new'=>'yn'}
|
18
|
+
create_aliases 'String'=>{'yaml_new'=>'yn'},'Array'=>{'blah'=>'bl'}
|
19
|
+
end
|
20
|
+
|
21
|
+
test "deletes invalid classes" do
|
22
|
+
expect_aliases "String"=>{'yaml_new'=>'yn'}
|
23
|
+
create_aliases 'String'=>{'yaml_new'=>'yn'},'Blah'=>{'new'=>'n'}
|
24
|
+
end
|
25
|
+
|
26
|
+
test "deletes existing class method aliases" do
|
27
|
+
expect_aliases 'Date'=>{'valid_time?'=>'vt'}
|
28
|
+
create_aliases 'Date'=>{'civil_to_jd'=>'civil', 'valid_time?'=>'vt'}
|
29
|
+
end
|
30
|
+
|
31
|
+
test "creates class method aliases" do
|
32
|
+
Kernel.eval %[
|
33
|
+
class ::SampleClass
|
34
|
+
def self.cap; 'itup'; end
|
35
|
+
end
|
36
|
+
]
|
37
|
+
hash1 = {'SampleClass'=>{:cap=>:capohow}, 'Array'=>{:blah=>:bl}}
|
38
|
+
@manager.create_aliases(:class_method, hash1)
|
39
|
+
SampleClass.capohow.should == SampleClass.cap
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), 'test_helper.rb')
|
2
|
+
|
3
|
+
class Alias::Creators::ClassToInstanceMethodCreatorTest < Test::Unit::TestCase
|
4
|
+
context "ClassToInstanceMethodCreator" do
|
5
|
+
before(:each) { @manager = Alias::Manager.new }
|
6
|
+
|
7
|
+
def expect_aliases(hash)
|
8
|
+
arr = Alias::Creators::ClassToInstanceMethodCreator.maps_config(hash)
|
9
|
+
Alias::Creators::ClassToInstanceMethodCreator.expects(:generates_aliases).with(arr).returns('')
|
10
|
+
end
|
11
|
+
|
12
|
+
def create_aliases(hash)
|
13
|
+
@manager.create_aliases(:class_to_instance_method, hash)
|
14
|
+
end
|
15
|
+
|
16
|
+
test "deletes invalid to classes" do
|
17
|
+
expect_aliases 'String'=>{'String.to_s'=>'s'}
|
18
|
+
create_aliases 'String'=>{'AnotherString.name'=>'n', 'String.to_s'=>'s'}
|
19
|
+
end
|
20
|
+
|
21
|
+
test "deletes invalid classes" do
|
22
|
+
expect_aliases 'String'=>{'String.to_s'=>'s'}
|
23
|
+
create_aliases 'String'=>{'String.to_s'=>'s'}, 'AnotherString'=>{'String.to_s'=>'s'}
|
24
|
+
end
|
25
|
+
|
26
|
+
test "deletes existing method aliases" do
|
27
|
+
expect_aliases 'String'=>{'Date.commercial'=>'s'}
|
28
|
+
create_aliases 'String'=>{'Date.civil'=>'strip', 'Date.commercial'=>'s'}
|
29
|
+
end
|
30
|
+
|
31
|
+
test "deletes invalid to methods" do
|
32
|
+
expect_aliases 'String'=>{'Date.civil'=>'c'}
|
33
|
+
create_aliases 'String'=>{'Date.civil'=>'c', 'Date.uncivil'=>'uc'}
|
34
|
+
end
|
35
|
+
|
36
|
+
test "creates aliases" do
|
37
|
+
Kernel.eval %[
|
38
|
+
class ::SampleClass
|
39
|
+
def self.cap; 'itup'; end
|
40
|
+
end
|
41
|
+
module ::SampleModule; end
|
42
|
+
]
|
43
|
+
create_aliases 'SampleModule'=>{'SampleClass.cap'=>'c', 'Sampleclass.dap'=>'d'}
|
44
|
+
obj = Object.new.extend SampleModule
|
45
|
+
SampleClass.cap.should == obj.c
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), 'test_helper.rb')
|
2
|
+
|
3
|
+
class Alias::ConsoleTest < Test::Unit::TestCase
|
4
|
+
before(:all) { @console = Object.new.extend(Alias::Console) }
|
5
|
+
|
6
|
+
test "create_aliases doesn't save failed alias creation" do
|
7
|
+
capture_stderr { @console.create_aliases :blah, {} }
|
8
|
+
Alias.manager.instance_eval("@created_aliases").should == {}
|
9
|
+
end
|
10
|
+
|
11
|
+
test "create_aliases takes partial creator names" do
|
12
|
+
Alias.manager.expects(:create_aliases).with(:instance_method, {}, anything)
|
13
|
+
@console.create_aliases(:in, {})
|
14
|
+
end
|
15
|
+
|
16
|
+
test "search_aliases lists aliases if given nothing" do
|
17
|
+
Alias.manager.expects(:all_aliases)
|
18
|
+
@console.search_aliases
|
19
|
+
end
|
20
|
+
|
21
|
+
context "save_aliases" do
|
22
|
+
before(:all) { eval "module ::Bluh; def blah; end; end" }
|
23
|
+
before(:each) { Alias.manager.instance_eval("@created_aliases = nil") }
|
24
|
+
|
25
|
+
test "saves created aliases" do
|
26
|
+
hash = {"Bluh"=>{"blah"=>"bl"}}
|
27
|
+
@console.create_aliases :instance_method, hash
|
28
|
+
File.expects(:exists?).returns(false)
|
29
|
+
Alias.expects(:save_to_file).with("#{ENV['HOME']}/.alias.yml", {:aliases=>{:instance_method=>hash}}.to_yaml)
|
30
|
+
capture_stdout { @console.save_aliases }.should =~ /Save/
|
31
|
+
end
|
32
|
+
|
33
|
+
test "saves to given file" do
|
34
|
+
hash = {"Bluh"=>{"blah"=>"b"}}
|
35
|
+
@console.create_aliases :instance_method, hash
|
36
|
+
Alias.expects(:save_to_file).with("explicit", {:aliases=>{:instance_method=>hash}}.to_yaml)
|
37
|
+
capture_stdout { @console.save_aliases('explicit') }.should =~ /explicit/
|
38
|
+
end
|
39
|
+
|
40
|
+
test "prints message if nothing to save" do
|
41
|
+
capture_stdout { @console.save_aliases }.should =~ /Didn't save/
|
42
|
+
end
|
43
|
+
|
44
|
+
test "saves aliases to config/alias.yml if config/ exists" do
|
45
|
+
File.expects(:directory?).returns(true)
|
46
|
+
@console.create_aliases :instance_method, {"Bluh"=>{"blah"=>"b2"}}
|
47
|
+
Alias.expects(:save_to_file).with("config/alias.yml", anything)
|
48
|
+
capture_stdout { @console.save_aliases }
|
49
|
+
end
|
50
|
+
|
51
|
+
test "merges existing aliases with created aliases" do
|
52
|
+
hash = {"Bluh"=>{"blah"=>"b3"}}
|
53
|
+
@console.create_aliases :instance_method, hash
|
54
|
+
Alias.expects(:read_config_file).returns({:aliases=>{:instance_method=>{"Bluh"=>{"bling"=>"bl"}}}})
|
55
|
+
Alias.expects(:save_to_file).with("#{ENV['HOME']}/.alias.yml",
|
56
|
+
{:aliases=>{:instance_method=>{"Bluh"=>{'bling'=>'bl', 'blah'=>'b3'}}}}.to_yaml)
|
57
|
+
capture_stdout { @console.save_aliases }
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -1,33 +1,38 @@
|
|
1
1
|
require File.join(File.dirname(__FILE__), 'test_helper.rb')
|
2
2
|
|
3
|
-
class Alias::ConstantCreatorTest < Test::Unit::TestCase
|
3
|
+
class Alias::Creators::ConstantCreatorTest < Test::Unit::TestCase
|
4
4
|
context "AliasConstantCreator" do
|
5
|
-
before(:each) { @
|
5
|
+
before(:each) { @manager = Alias::Manager.new }
|
6
|
+
|
7
|
+
def create_aliases(hash, options={})
|
8
|
+
@manager.create_aliases(:constant, hash, options)
|
9
|
+
end
|
10
|
+
|
11
|
+
def expect_aliases(hash)
|
12
|
+
arr = Alias::Creators::ConstantCreator.maps_config(hash)
|
13
|
+
Alias::Creators::ConstantCreator.expects(:generates_aliases).with(arr).returns('')
|
14
|
+
end
|
6
15
|
|
7
16
|
test "deletes existing aliases" do
|
8
|
-
|
9
|
-
|
10
|
-
h1.should == {"Array"=>"Ar"}
|
17
|
+
expect_aliases "Array"=>'Ar'
|
18
|
+
create_aliases "Alias::Creators::ConstantCreator"=>"Alias::Creator", "Array"=>"Ar"
|
11
19
|
end
|
12
|
-
|
13
|
-
test "deletes existing
|
14
|
-
h1 = {"Array"=>"
|
15
|
-
|
16
|
-
|
17
|
-
h2 = {"ArgumentError"=>"A"}
|
18
|
-
@creator.create(h2)
|
19
|
-
assert_equal A, ArgumentError
|
20
|
+
|
21
|
+
test "deletes existing aliases unless force option" do
|
22
|
+
h1 = {"Alias::Creators::ConstantCreator"=>"Alias::Creator", "Array"=>"Ar"}
|
23
|
+
expect_aliases h1
|
24
|
+
create_aliases h1, :force=>true
|
20
25
|
end
|
21
|
-
|
22
|
-
test "
|
23
|
-
eval "::
|
24
|
-
|
25
|
-
|
26
|
+
|
27
|
+
test "deletes invalid classes" do
|
28
|
+
eval "module ::Bling; end"
|
29
|
+
expect_aliases 'Array'=>'Ar'
|
30
|
+
create_aliases "Blah"=>"Bling", "Array"=>"Ar"
|
26
31
|
end
|
27
|
-
|
28
|
-
test "
|
29
|
-
|
30
|
-
|
32
|
+
|
33
|
+
test "creates aliases" do
|
34
|
+
create_aliases 'Time'=>'T'
|
35
|
+
::Time.should == ::T
|
31
36
|
end
|
32
37
|
end
|
33
38
|
end
|
data/test/creator_test.rb
CHANGED
@@ -1,70 +1,29 @@
|
|
1
1
|
require File.join(File.dirname(__FILE__), 'test_helper.rb')
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
test "sets modified_at timestamp when creating aliases" do
|
28
|
-
stub_time = Time.new
|
29
|
-
Time.expects(:now).returns(stub_time)
|
30
|
-
@creator.expects(:create_aliases)
|
31
|
-
@creator.create({})
|
32
|
-
@creator.modified_at.should == stub_time
|
33
|
-
end
|
34
|
-
|
35
|
-
test "with modified_at > searched_at has been modified_since_last_search?" do
|
36
|
-
some_time = Time.new
|
37
|
-
@creator.modified_at = some_time + 100
|
38
|
-
@creator.searched_at = some_time
|
39
|
-
assert @creator.modified_since_last_search?
|
40
|
-
end
|
41
|
-
|
42
|
-
test "with modified_at greater than searched_at has been modified_since_last_search?" do
|
43
|
-
some_time = Time.new
|
44
|
-
@creator.modified_at = some_time + 100
|
45
|
-
@creator.searched_at = some_time
|
46
|
-
assert @creator.modified_since_last_search?
|
47
|
-
end
|
48
|
-
|
49
|
-
test "with modified_at less than searched_at has not been modified_since_last_search?" do
|
50
|
-
some_time = Time.new
|
51
|
-
@creator.modified_at = some_time
|
52
|
-
@creator.searched_at = some_time + 100
|
53
|
-
assert !@creator.modified_since_last_search?
|
54
|
-
end
|
55
|
-
|
56
|
-
test "with no searched_at has been modified_since_last_search?" do
|
57
|
-
@creator.modified_at = Time.new
|
58
|
-
@creator.searched_at = nil
|
59
|
-
assert @creator.modified_since_last_search?
|
60
|
-
end
|
61
|
-
|
62
|
-
test "sets modified_at when calling alias_map=" do
|
63
|
-
stub_time = Time.new
|
64
|
-
Time.expects(:now).returns(stub_time)
|
65
|
-
@creator.alias_map = {'blah'=>'b'}
|
66
|
-
@creator.modified_at.should == stub_time
|
3
|
+
module Alias
|
4
|
+
class CreatorTest < Test::Unit::TestCase
|
5
|
+
context "invalid creator" do
|
6
|
+
before(:all) { eval "class Alias::TestCreator < Alias::Creator; end"}
|
7
|
+
test "raises AbstractMethodError if map not defined" do
|
8
|
+
assert_raises(Creator::AbstractMethodError) {
|
9
|
+
TestCreator.maps_config({})
|
10
|
+
}
|
11
|
+
end
|
12
|
+
|
13
|
+
test "raises AbstractMethodError if generate not defined" do
|
14
|
+
assert_raises(Creator::AbstractMethodError) {
|
15
|
+
TestCreator.generates_aliases([])
|
16
|
+
}
|
17
|
+
end
|
18
|
+
|
19
|
+
test "raises ArgumentError when no validator is given" do
|
20
|
+
assert_raises(ArgumentError) { TestCreator.valid :name }
|
21
|
+
end
|
22
|
+
|
23
|
+
test "prints error and deletes validator when invalid one is given" do
|
24
|
+
capture_stderr { TestCreator.valid(:name, :if=>:blah) }.should =~ /not set/
|
25
|
+
TestCreator.validators[:name].should == nil
|
26
|
+
end
|
67
27
|
end
|
68
|
-
|
69
28
|
end
|
70
29
|
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), 'test_helper.rb')
|
2
|
+
|
3
|
+
class Alias::Creators::InstanceMethodCreatorTest < Test::Unit::TestCase
|
4
|
+
context "InstanceMethodCreator" do
|
5
|
+
before(:each) { @manager = Alias::Manager.new }
|
6
|
+
def expect_aliases(hash)
|
7
|
+
arr = Alias::Creators::InstanceMethodCreator.maps_config(hash)
|
8
|
+
Alias::Creators::InstanceMethodCreator.expects(:generates_aliases).with(arr).returns('')
|
9
|
+
end
|
10
|
+
|
11
|
+
def create_aliases(hash)
|
12
|
+
@manager.create_aliases(:instance_method, hash)
|
13
|
+
end
|
14
|
+
|
15
|
+
test "deletes existing instance method aliases" do
|
16
|
+
expect_aliases "String"=>{"strip"=>"st"}
|
17
|
+
create_aliases 'String'=>{'strip'=>'st', 'chomp'=>'chop'}
|
18
|
+
end
|
19
|
+
|
20
|
+
test "deletes invalid classes" do
|
21
|
+
expect_aliases "String"=>{'strip','st'}
|
22
|
+
create_aliases "String"=>{'strip','st'}, 'Blah'=>{'map'=>'m'}
|
23
|
+
end
|
24
|
+
|
25
|
+
test "deletes invalid instance method keys" do
|
26
|
+
expect_aliases "Array"=>{}, "String"=>{"strip"=>"st"}
|
27
|
+
create_aliases 'String'=>{'strip'=>'st'},'Array'=>{'blah', 'bl'}
|
28
|
+
end
|
29
|
+
|
30
|
+
test "creates aliases" do
|
31
|
+
Kernel.eval %[
|
32
|
+
class ::SampleClass
|
33
|
+
def whoop; 'WHOOP'; end
|
34
|
+
end
|
35
|
+
]
|
36
|
+
obj = SampleClass.new
|
37
|
+
create_aliases 'SampleClass'=>{:whoop=>:can_of_wass, :blah=>:bl}
|
38
|
+
SampleClass.new.whoop.should == SampleClass.new.can_of_wass
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
data/test/manager_test.rb
CHANGED
@@ -2,109 +2,104 @@ require File.join(File.dirname(__FILE__), 'test_helper.rb')
|
|
2
2
|
|
3
3
|
class Alias::ManagerTest < Test::Unit::TestCase
|
4
4
|
before(:each) { @manager = Alias::Manager.new}
|
5
|
-
|
6
|
-
context "
|
7
|
-
|
8
|
-
|
5
|
+
|
6
|
+
context "create_aliases" do
|
7
|
+
before(:all) { eval %[class Alias::Creators::ValidTestCreator < Alias::Creator; map { [] }; generate { ' '}; end]}
|
8
|
+
def create_aliases(options={})
|
9
|
+
@manager.create_aliases :valid_test, {}, options
|
10
|
+
end
|
11
|
+
|
12
|
+
test "creates aliases" do
|
13
|
+
Kernel.expects(:eval).with(' ')
|
14
|
+
create_aliases
|
15
|
+
end
|
16
|
+
|
17
|
+
test "doesn't create aliases with pretend option" do
|
18
|
+
Kernel.expects(:eval).never
|
19
|
+
capture_stdout { create_aliases :pretend=>true }.should == "\n \n"
|
20
|
+
end
|
21
|
+
|
22
|
+
test "with manager's verbose sets creator's verbose" do
|
9
23
|
@manager.verbose = true
|
10
|
-
|
11
|
-
|
24
|
+
create_aliases
|
25
|
+
@manager.creators[:valid_test].verbose.should == true
|
26
|
+
end
|
27
|
+
|
28
|
+
test "with manager's verbose array sets creator's verbose" do
|
29
|
+
@manager.verbose = [:valid_test]
|
30
|
+
create_aliases
|
31
|
+
@manager.creators[:valid_test].verbose.should == true
|
32
|
+
end
|
33
|
+
|
34
|
+
test "with manager's verbose array doesn't set creator's verbose" do
|
35
|
+
@manager.verbose = [:another]
|
36
|
+
create_aliases
|
37
|
+
@manager.creators[:valid_test].verbose.should == false
|
38
|
+
end
|
39
|
+
|
40
|
+
test "with manager's force sets creator's force" do
|
41
|
+
@manager.force = true
|
42
|
+
create_aliases
|
43
|
+
@manager.creators[:valid_test].force.should == true
|
44
|
+
end
|
45
|
+
|
46
|
+
test "with manager's force array sets creator's force" do
|
47
|
+
@manager.force = [:valid_test]
|
48
|
+
create_aliases
|
49
|
+
@manager.creators[:valid_test].force.should == true
|
50
|
+
end
|
51
|
+
|
52
|
+
test "with manager's force array doesn't set creators force" do
|
53
|
+
@manager.force = [:another]
|
54
|
+
create_aliases
|
55
|
+
@manager.creators[:valid_test].force.should == false
|
12
56
|
end
|
13
|
-
|
57
|
+
|
14
58
|
test "force option sets force in creator object" do
|
15
|
-
|
16
|
-
@manager.
|
17
|
-
assert @manager.alias_creators[:constant].force
|
18
|
-
end
|
19
|
-
|
20
|
-
test "creates constant aliases" do
|
21
|
-
h1 = {'Time'=>'T', 'auto_alias'=>['Date']}
|
22
|
-
@manager.create_aliases(:constant, h1)
|
23
|
-
@manager.alias_map(:constant).should == {'Time'=>'T', 'Date'=>'D'}
|
24
|
-
end
|
25
|
-
|
26
|
-
test "creates instance method aliases" do
|
27
|
-
Kernel.eval %[
|
28
|
-
class ::SampleClass
|
29
|
-
def whoop; 'WHOOP'; end
|
30
|
-
end
|
31
|
-
]
|
32
|
-
obj = SampleClass.new
|
33
|
-
@manager.create_aliases(:instance_method, {'SampleClass'=>{:whoop=>:can_of_wass, :blah=>:bl}})
|
34
|
-
@manager.alias_map(:instance_method).should == {'SampleClass'=>{:whoop=>:can_of_wass}}
|
35
|
-
SampleClass.new.whoop.should == SampleClass.new.can_of_wass
|
36
|
-
end
|
37
|
-
|
38
|
-
test "creates class method aliases" do
|
39
|
-
Kernel.eval %[
|
40
|
-
class ::SampleClass
|
41
|
-
def self.cap; 'itup'; end
|
42
|
-
end
|
43
|
-
]
|
44
|
-
hash1 = {'SampleClass'=>{:cap=>:capohow}, 'Array'=>{:blah=>:bl}}
|
45
|
-
@manager.create_aliases(:class_method, hash1)
|
46
|
-
expected_result = {"SampleClass"=>{:cap=>:capohow}, "Array"=>{}}
|
47
|
-
assert_equal expected_result, @manager.alias_map(:class_method)
|
48
|
-
SampleClass.capohow.should == SampleClass.cap
|
59
|
+
create_aliases :force=>true
|
60
|
+
@manager.creators[:valid_test].force.should == true
|
49
61
|
end
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
62
|
+
|
63
|
+
test "verbose option sets verbose in creator object" do
|
64
|
+
create_aliases :verbose=>true
|
65
|
+
@manager.creators[:valid_test].verbose.should == true
|
66
|
+
end
|
67
|
+
|
68
|
+
test "prints error if nonexistent creator given" do
|
69
|
+
capture_stderr {@manager.create_aliases :blah, {} }.should =~ /not found/
|
70
|
+
end
|
71
|
+
|
72
|
+
test "prints error if necessary creator methods not defined" do
|
73
|
+
eval "class Alias::Creators::BlingCreator < Alias::Creator; end"
|
74
|
+
capture_stderr { @manager.create_aliases :bling, {} }.should =~ /BlingCreator/
|
75
|
+
end
|
76
|
+
|
77
|
+
test "prints error if aliases fail to create" do
|
78
|
+
eval "class Alias::Creators::Bling2Creator < Alias::Creator; map {[]}; generate { 'blah' }; end"
|
79
|
+
capture_stderr { @manager.create_aliases :bling2, {} }.should =~ /failed to create aliases/
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
context "search" do
|
84
|
+
before(:each) {
|
85
|
+
@manager.instance_variable_set "@creators", {:constant=>Alias::Creators::ConstantCreator.new}
|
86
|
+
@manager.stubs(:all_aliases).returns([{:name=>'Array', :alias=>'A'}, {:name=>'Abbrev', :alias=>'B'}])
|
87
|
+
}
|
88
|
+
|
89
|
+
test "key and symbol value" do
|
90
|
+
@manager.search(:name=>:Array).should == [{:name=>'Array', :alias=>'A'}]
|
73
91
|
end
|
74
92
|
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
expected_result = [{:type=>"constant", :name=>"Array", :alias=>"A"}, {:type=>"constant", :name=>"Abbrev", :alias=>"Ab"}]
|
86
|
-
assert @manager.indexed_aliases(false).nil?
|
87
|
-
@manager.indexed_aliases.should == expected_result
|
88
|
-
end
|
89
|
-
|
90
|
-
test "with modified creator, deletes old + adds new aliases" do
|
91
|
-
original_aliases = [{:type=>"constant", :name=>"Enumerable", :alias=>"E"}]
|
92
|
-
@manager.indexed_aliases = original_aliases
|
93
|
-
setup_index
|
94
|
-
@creator.stubs(:modified_since_last_search?).returns(true)
|
95
|
-
expected_result = [{:type=>"constant", :name=>"Array", :alias=>"A"}, {:type=>"constant", :name=>"Abbrev", :alias=>"Ab"}]
|
96
|
-
assert @manager.indexed_aliases(false).include?(original_aliases[0])
|
97
|
-
@manager.indexed_aliases.should == expected_result
|
98
|
-
assert !@manager.indexed_aliases.include?(original_aliases[0])
|
99
|
-
end
|
100
|
-
|
101
|
-
test "with unmodified creator, doesn't change any aliases" do
|
102
|
-
setup_index
|
103
|
-
@manager.indexed_aliases = [{:type=>"constant", :name=>"Enumerable", :alias=>"E"}]
|
104
|
-
@creator.stubs(:modified_since_last_search?).returns(false)
|
105
|
-
@manager.indexed_aliases.should == [{:type=>"constant", :name=>"Enumerable", :alias=>"E"}]
|
106
|
-
end
|
93
|
+
test "with key and string value" do
|
94
|
+
@manager.search(:name=>'A').should == [{:name=>'Array', :alias=>'A'}, {:name=>'Abbrev', :alias=>'B'}]
|
95
|
+
end
|
96
|
+
|
97
|
+
test "with a string" do
|
98
|
+
@manager.search('Array').should == [{:name=>'Array', :alias=>'A'}]
|
99
|
+
end
|
100
|
+
|
101
|
+
test "with multiple search terms" do
|
102
|
+
@manager.search(:name=>'A', :alias=>'A').should == [{:name=>'Array', :alias=>'A'}]
|
107
103
|
end
|
108
104
|
end
|
109
|
-
|
110
105
|
end
|
data/test/test_helper.rb
CHANGED
@@ -2,10 +2,30 @@ require 'rubygems'
|
|
2
2
|
require 'test/unit'
|
3
3
|
require 'context' #gem install jeremymcanally-context -s http://gems.github.com
|
4
4
|
require 'mocha' #gem install mocha
|
5
|
-
require 'matchy' #gem install jeremymcanally-
|
6
|
-
require 'pending'
|
5
|
+
require 'matchy' #gem install jeremymcanally-matchy -s http://gems.github.com
|
7
6
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
8
7
|
require 'alias'
|
9
8
|
|
10
9
|
class Test::Unit::TestCase
|
11
|
-
|
10
|
+
def capture_stdout(&block)
|
11
|
+
original_stdout = $stdout
|
12
|
+
$stdout = fake = StringIO.new
|
13
|
+
begin
|
14
|
+
yield
|
15
|
+
ensure
|
16
|
+
$stdout = original_stdout
|
17
|
+
end
|
18
|
+
fake.string
|
19
|
+
end
|
20
|
+
|
21
|
+
def capture_stderr(&block)
|
22
|
+
original_stderr = $stderr
|
23
|
+
$stderr = fake = StringIO.new
|
24
|
+
begin
|
25
|
+
yield
|
26
|
+
ensure
|
27
|
+
$stderr = original_stderr
|
28
|
+
end
|
29
|
+
fake.string
|
30
|
+
end
|
31
|
+
end
|
data/test/util_test.rb
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), 'test_helper.rb')
|
2
|
+
|
3
|
+
module Alias
|
4
|
+
class UtilTest < Test::Unit::TestCase
|
5
|
+
test "any_const_get fetches simple class" do
|
6
|
+
Util.any_const_get("Array").should == Array
|
7
|
+
end
|
8
|
+
|
9
|
+
test "any_const_get fetches nested class" do
|
10
|
+
eval "module ::Somemodule; class Someclass; end; end"
|
11
|
+
Util.any_const_get("Somemodule::Someclass").should == Somemodule::Someclass
|
12
|
+
end
|
13
|
+
|
14
|
+
test "any_const_get returns nil for nonexistent class" do
|
15
|
+
Util.any_const_get("NonexistentClass").should == nil
|
16
|
+
end
|
17
|
+
|
18
|
+
test "slice only returns valid keys given" do
|
19
|
+
Util.slice({:a=>1,:b=>2}, :a, :c).should == {:a=>1}
|
20
|
+
end
|
21
|
+
|
22
|
+
test "slice_off! returns given keys but takes them off existing hash" do
|
23
|
+
h = {:a=>1, :b=>2}
|
24
|
+
Util.slice_off!(h, :a, :c).should == {:a=>1}
|
25
|
+
h.should == {:b=>2}
|
26
|
+
end
|
27
|
+
|
28
|
+
test "camelize should uppercase non-underscored string" do
|
29
|
+
Util.camelize('man').should == 'Man'
|
30
|
+
end
|
31
|
+
|
32
|
+
test "camelize should camelize underscored string" do
|
33
|
+
Util.camelize('some_test').should == 'SomeTest'
|
34
|
+
end
|
35
|
+
|
36
|
+
test "make_shortest_aliases" do
|
37
|
+
eval "::Y = 'some value'"
|
38
|
+
expected_hash = {"Yo"=>"Y", "Man"=>"M", "Cool"=>"C", 'Yay'=>'Ya'}
|
39
|
+
Util.make_shortest_aliases(['Yo','Yay','Cool','Man']).should == expected_hash
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|