aquarium 0.1.0 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. data/CHANGES +53 -0
  2. data/README +20 -4
  3. data/Rakefile +19 -4
  4. data/UPGRADE +41 -1
  5. data/examples/aspect_design_example.rb +4 -1
  6. data/examples/aspect_design_example_spec.rb +41 -0
  7. data/examples/design_by_contract_example.rb +2 -3
  8. data/examples/design_by_contract_example_spec.rb +92 -0
  9. data/examples/method_missing_example.rb +1 -1
  10. data/examples/method_missing_example_spec.rb +59 -0
  11. data/examples/method_tracing_example.rb +4 -2
  12. data/examples/method_tracing_example_spec.rb +141 -0
  13. data/lib/aquarium/aspects/advice.rb +2 -2
  14. data/lib/aquarium/aspects/aspect.rb +20 -35
  15. data/lib/aquarium/aspects/dsl.rb +2 -1
  16. data/lib/aquarium/aspects/dsl/aspect_dsl.rb +12 -8
  17. data/lib/aquarium/aspects/dsl/object_dsl.rb +8 -0
  18. data/lib/aquarium/aspects/join_point.rb +16 -10
  19. data/lib/aquarium/aspects/pointcut.rb +3 -3
  20. data/lib/aquarium/extras/design_by_contract.rb +20 -11
  21. data/lib/aquarium/utils.rb +1 -0
  22. data/lib/aquarium/utils/method_utils.rb +41 -0
  23. data/lib/aquarium/utils/name_utils.rb +35 -0
  24. data/lib/aquarium/utils/type_utils.rb +9 -0
  25. data/lib/aquarium/version.rb +3 -5
  26. data/rake_tasks/examples.rake +1 -1
  27. data/spec/aquarium/aspects/aspect_invocation_spec.rb +30 -28
  28. data/spec/aquarium/aspects/aspect_spec.rb +90 -0
  29. data/spec/aquarium/aspects/concurrent_aspects_spec.rb +5 -3
  30. data/spec/aquarium/aspects/concurrent_aspects_with_objects_and_types_spec.rb +3 -1
  31. data/spec/aquarium/aspects/dsl/aspect_dsl_spec.rb +174 -110
  32. data/spec/aquarium/aspects/join_point_spec.rb +120 -19
  33. data/spec/aquarium/aspects/pointcut_spec.rb +24 -14
  34. data/spec/aquarium/extras/design_by_contract_spec.rb +3 -0
  35. data/spec/aquarium/finders/finder_result_spec.rb +1 -1
  36. data/spec/aquarium/finders/method_finder_spec.rb +3 -4
  37. data/spec/aquarium/spec_example_classes.rb +4 -0
  38. data/spec/aquarium/utils/method_utils_spec.rb +124 -1
  39. data/spec/aquarium/utils/name_utils_spec.rb +56 -0
  40. data/spec/aquarium/utils/type_utils_spec.rb +17 -0
  41. metadata +12 -4
  42. data/spec/aquarium/finders/method_sorting_spec.rb +0 -16
@@ -0,0 +1,56 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper.rb'
2
+ require File.dirname(__FILE__) + '/../spec_example_classes'
3
+ require 'aquarium/utils/name_utils'
4
+
5
+ describe Aquarium::Utils::NameUtils, ".make_valid_attr_name_from_method_name" do
6
+ it "should convert an equal sign into _equalsign_" do
7
+ Aquarium::Utils::NameUtils.make_valid_attr_name_from_method_name(:"foo=bar=baz").should eql(:foo_equalsign_bar_equalsign_baz)
8
+ end
9
+
10
+ it "should convert a question mark into _questionmark_" do
11
+ Aquarium::Utils::NameUtils.make_valid_attr_name_from_method_name(:"foo?bar?baz").should eql(:foo_questionmark_bar_questionmark_baz)
12
+ end
13
+
14
+ it "should convert an exclamation mark into _exclamationmark_" do
15
+ Aquarium::Utils::NameUtils.make_valid_attr_name_from_method_name(:"foo!bar!baz").should eql(:foo_exclamationmark_bar_exclamationmark_baz)
16
+ end
17
+
18
+ it "should convert question marks into _tilde_" do
19
+ Aquarium::Utils::NameUtils.make_valid_attr_name_from_method_name(:"foo~bar~baz").should eql(:foo_tilde_bar_tilde_baz)
20
+ end
21
+
22
+ it "should convert all of the above in the same symbol" do
23
+ Aquarium::Utils::NameUtils.make_valid_attr_name_from_method_name(:"foo=bar?baz!boz~bat").should eql(:foo_equalsign_bar_questionmark_baz_exclamationmark_boz_tilde_bat)
24
+ end
25
+ end
26
+
27
+ describe Aquarium::Utils::NameUtils, ".make_valid_object_id_name" do
28
+ it "should return the same id string with a _neg_ prefix if the id is negative" do
29
+ Aquarium::Utils::NameUtils.make_valid_object_id_name("-123").should eql("_neg_123")
30
+ end
31
+
32
+ it "should return the same id string if the id is positive" do
33
+ Aquarium::Utils::NameUtils.make_valid_object_id_name("123").should eql("123")
34
+ end
35
+ end
36
+
37
+ describe Aquarium::Utils::NameUtils, ".make_valid_type_name" do
38
+ it "should return the same name with colons ':' converted to underscores '_'" do
39
+ Aquarium::Utils::NameUtils.make_valid_type_name(Aquarium::Utils::NameUtils).should eql("Aquarium__Utils__NameUtils")
40
+ end
41
+
42
+ it "should return the same name if there are no colons" do
43
+ Aquarium::Utils::NameUtils.make_valid_type_name(String).should eql("String")
44
+ end
45
+ end
46
+
47
+ describe Aquarium::Utils::NameUtils, ".make_type_or_object_key" do
48
+ it "should return the same string as :make_valid_type_name if the input is a type" do
49
+ Aquarium::Utils::NameUtils.make_type_or_object_key(Aquarium::Utils::NameUtils).should eql(Aquarium::Utils::NameUtils.make_valid_type_name(Aquarium::Utils::NameUtils))
50
+ end
51
+
52
+ it "should return the same string as :make_valid_object_name if the input is an object" do
53
+ object = "string"
54
+ Aquarium::Utils::NameUtils.make_type_or_object_key(object).should eql(Aquarium::Utils::NameUtils.make_valid_object_name(object))
55
+ end
56
+ end
@@ -0,0 +1,17 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper.rb'
2
+ require File.dirname(__FILE__) + '/../spec_example_classes'
3
+ require 'aquarium/utils/type_utils'
4
+
5
+ describe Aquarium::Utils::TypeUtils, ".is_type?" do
6
+ it "should be true for a class" do
7
+ Aquarium::Utils::TypeUtils.is_type?(String).should be_true
8
+ end
9
+
10
+ it "should be true for a Module" do
11
+ Aquarium::Utils::TypeUtils.is_type?(Kernel).should be_true
12
+ end
13
+
14
+ it "should be false for an Object" do
15
+ Aquarium::Utils::TypeUtils.is_type?("Object").should be_false
16
+ end
17
+ end
metadata CHANGED
@@ -3,9 +3,9 @@ rubygems_version: 0.9.4
3
3
  specification_version: 1
4
4
  name: aquarium
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.1.0
7
- date: 2007-08-23 00:00:00 -05:00
8
- summary: Aquarium-0.1.0 (r7) - Aspect-Oriented Programming toolkit for Ruby http://aquarium.rubyforge.org
6
+ version: 0.1.5
7
+ date: 2007-09-17 00:00:00 -05:00
8
+ summary: Aquarium-0.1.5 (r7) - Aspect-Oriented Programming toolkit for Ruby http://aquarium.rubyforge.org
9
9
  require_paths:
10
10
  - lib
11
11
  email: aquarium-devel@rubyforge.org
@@ -40,6 +40,7 @@ files:
40
40
  - lib/aquarium/aspects/aspect.rb
41
41
  - lib/aquarium/aspects/default_object_handler.rb
42
42
  - lib/aquarium/aspects/dsl/aspect_dsl.rb
43
+ - lib/aquarium/aspects/dsl/object_dsl.rb
43
44
  - lib/aquarium/aspects/dsl.rb
44
45
  - lib/aquarium/aspects/join_point.rb
45
46
  - lib/aquarium/aspects/pointcut.rb
@@ -63,8 +64,10 @@ files:
63
64
  - lib/aquarium/utils/html_escaper.rb
64
65
  - lib/aquarium/utils/invalid_options.rb
65
66
  - lib/aquarium/utils/method_utils.rb
67
+ - lib/aquarium/utils/name_utils.rb
66
68
  - lib/aquarium/utils/nil_object.rb
67
69
  - lib/aquarium/utils/set_utils.rb
70
+ - lib/aquarium/utils/type_utils.rb
68
71
  - lib/aquarium/utils.rb
69
72
  - lib/aquarium/version.rb
70
73
  - lib/aquarium.rb
@@ -89,7 +92,6 @@ files:
89
92
  - spec/aquarium/extras/design_by_contract_spec.rb
90
93
  - spec/aquarium/finders/finder_result_spec.rb
91
94
  - spec/aquarium/finders/method_finder_spec.rb
92
- - spec/aquarium/finders/method_sorting_spec.rb
93
95
  - spec/aquarium/finders/object_finder_spec.rb
94
96
  - spec/aquarium/finders/type_finder_spec.rb
95
97
  - spec/aquarium/spec_example_classes.rb
@@ -98,12 +100,18 @@ files:
98
100
  - spec/aquarium/utils/hash_utils_spec.rb
99
101
  - spec/aquarium/utils/html_escaper_spec.rb
100
102
  - spec/aquarium/utils/method_utils_spec.rb
103
+ - spec/aquarium/utils/name_utils_spec.rb
101
104
  - spec/aquarium/utils/nil_object_spec.rb
102
105
  - spec/aquarium/utils/set_utils_spec.rb
106
+ - spec/aquarium/utils/type_utils_spec.rb
103
107
  - examples/aspect_design_example.rb
108
+ - examples/aspect_design_example_spec.rb
104
109
  - examples/design_by_contract_example.rb
110
+ - examples/design_by_contract_example_spec.rb
105
111
  - examples/method_missing_example.rb
112
+ - examples/method_missing_example_spec.rb
106
113
  - examples/method_tracing_example.rb
114
+ - examples/method_tracing_example_spec.rb
107
115
  - rake_tasks/examples.rake
108
116
  - rake_tasks/examples_specdoc.rake
109
117
  - rake_tasks/examples_with_rcov.rake
@@ -1,16 +0,0 @@
1
- require File.dirname(__FILE__) + '/../spec_helper.rb'
2
-
3
- describe "Method Extension" do
4
- it "should compare methods by type and name." do
5
- actual = %w[send nil? clone gsub! ].map {|m| Kernel.method(m)}
6
- actual << Module.method(:nesting)
7
- sorted = actual.sort_by {|method| method.to_s}
8
- sorted.should == [
9
- Kernel.method(:gsub!),
10
- Kernel.method(:clone),
11
- Kernel.method(:nil?),
12
- Kernel.method(:send),
13
- Module.method(:nesting)
14
- ]
15
- end
16
- end