cldwalker-alias 0.1.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. data/CHANGELOG.rdoc +16 -0
  2. data/README.rdoc +56 -77
  3. data/Rakefile +4 -4
  4. data/VERSION.yml +2 -2
  5. data/lib/alias/console.rb +13 -49
  6. data/lib/alias/creator.rb +102 -81
  7. data/lib/alias/creators/any_to_instance_method_creator.rb +22 -0
  8. data/lib/alias/creators/class_method_creator.rb +19 -0
  9. data/lib/alias/creators/class_to_instance_method_creator.rb +25 -0
  10. data/lib/alias/creators/constant_creator.rb +11 -0
  11. data/lib/alias/creators/instance_method_creator.rb +19 -0
  12. data/lib/alias/manager.rb +107 -49
  13. data/lib/alias/util.rb +86 -0
  14. data/lib/alias/validator.rb +94 -0
  15. data/lib/alias.rb +70 -36
  16. data/test/alias_test.rb +54 -53
  17. data/test/aliases.yml +8 -4
  18. data/test/any_to_instance_method_creator_test.rb +39 -0
  19. data/test/class_method_creator_test.rb +42 -0
  20. data/test/class_to_instance_method_creator_test.rb +48 -0
  21. data/test/console_test.rb +60 -0
  22. data/test/constant_creator_test.rb +27 -22
  23. data/test/creator_test.rb +24 -65
  24. data/test/instance_method_creator_test.rb +41 -0
  25. data/test/manager_test.rb +92 -97
  26. data/test/test_helper.rb +23 -3
  27. data/test/util_test.rb +42 -0
  28. data/test/validator_test.rb +72 -0
  29. metadata +40 -24
  30. data/aliases.yml.example +0 -16
  31. data/lib/alias/class_method_creator.rb +0 -9
  32. data/lib/alias/constant_creator.rb +0 -50
  33. data/lib/alias/core_extensions.rb +0 -46
  34. data/lib/alias/instance_method_creator.rb +0 -9
  35. data/lib/alias/method_creator_helper.rb +0 -77
  36. data/lib/config_struct.rb +0 -17
  37. data/test/core_extensions_test.rb +0 -34
  38. 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) { @creator = Alias::ConstantCreator.new}
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
- h1 = {"Alias::ConstantCreator"=>"Alias::Creator", "Array"=>"Ar"}
9
- @creator.delete_existing_aliases(h1)
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 alias unless it was created by the object" do
14
- h1 = {"Array"=>"A"}
15
- @creator.create(h1)
16
- assert_not_equal A, ArgumentError
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 "makes shortest aliases" do
23
- eval "::Y = 'some value'"
24
- expected_hash = {"Yo"=>"Y", "Man"=>"M", "Cool"=>"C", 'Yay'=>'Ya'}
25
- @creator.make_shortest_aliases(['Yo','Yay','Cool','Man']).should == expected_hash
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 "to_searchable_array is an array of hashes" do
29
- @creator.alias_map = {'Alias'=>'A'}
30
- @creator.to_searchable_array.should == [{:name=>'Alias', :alias=>'A'}]
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
- class Alias::CreatorTest < Test::Unit::TestCase
4
- test "Creator deletes invalid class keys" do
5
- h1 = {'Alias::Creator'=>'whoop','Yay'=>'Haha'}
6
- @creator = Alias::Creator.new
7
- @creator.delete_invalid_class_keys(h1)
8
- h1.should == {'Alias::Creator'=>'whoop'}
9
- end
10
-
11
- context "Creator" do
12
- before(:each) { @creator = Alias::Creator.new}
13
- test "calls delete_existing_aliases when no force" do
14
- @creator.force = false
15
- @creator.expects(:delete_existing_aliases)
16
- @creator.expects(:create_aliases)
17
- @creator.create({})
18
- end
19
-
20
- test "doesn't call delete_existing_aliases when force" do
21
- @creator.force = true
22
- @creator.expects(:delete_existing_aliases).never
23
- @creator.expects(:create_aliases)
24
- @creator.create({})
25
- end
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 "Manager" do
7
- test "verbosity trickles down to creator objects" do
8
- h1 = {'String'=>'Strang'}
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
- @manager.create_aliases(:constant, h1)
11
- assert @manager.alias_creators[:constant].verbose
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
- h1 = {'force'=>true}
16
- @manager.create_aliases(:constant, h1)
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
- context "search" do
52
- def setup_search
53
- @manager.alias_creators = {:constant=>Alias::ConstantCreator.new}
54
- @manager.expects(:indexed_aliases).returns([{:name=>'Array', :alias=>'A'}, {:name=>'Abbrev', :alias=>'Ab'}])
55
- end
56
-
57
- test "sets creator's searched_at" do
58
- setup_search
59
- assert @manager.alias_creators[:constant].searched_at.nil?
60
- @manager.search :name=>'blah'
61
- assert @manager.alias_creators[:constant].searched_at.is_a?(Time)
62
- end
63
-
64
- test "with string returns exact match" do
65
- setup_search
66
- @manager.search(:name=>'Array').should == [{:name=>'Array', :alias=>'A'}]
67
- end
68
-
69
- test "with regex returns multiple matches " do
70
- setup_search
71
- @manager.search(:name=>/A/).should == [{:name=>'Array', :alias=>'A'}, {:name=>'Abbrev', :alias=>'Ab'}]
72
- end
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
- context "when indexing search" do
76
- def setup_index
77
- @creator = Alias::ConstantCreator.new
78
- @creator.alias_map = {'Array'=>'A', 'Abbrev'=>'Ab'}
79
- @manager.alias_creators = {:constant=>@creator}
80
- end
81
-
82
- test "works when first initialized" do
83
- setup_index
84
- @creator.stubs(:modified_since_last_search?).returns(true)
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-stump -s http://gems.github.com
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
- end
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