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.
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