pacer 1.0.2-java → 1.0.3-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. data/blog/2012-09-18-pacer-1.0.md +63 -0
  2. data/lib/pacer/core/graph/element_route.rb +8 -4
  3. data/lib/pacer/core/graph/vertices_route.rb +1 -1
  4. data/lib/pacer/core/route.rb +20 -0
  5. data/lib/pacer/exceptions.rb +1 -0
  6. data/lib/pacer/filter/future_filter.rb +2 -0
  7. data/lib/pacer/graph/graph_transactions_mixin.rb +13 -12
  8. data/lib/pacer/graph/hash_index.rb +29 -0
  9. data/lib/pacer/graph/pacer_graph.rb +23 -6
  10. data/lib/pacer/graph/simple_encoder.rb +9 -4
  11. data/lib/pacer/graph/yaml_encoder.rb +18 -31
  12. data/lib/pacer/loader.rb +93 -0
  13. data/lib/pacer/route/mixin/bulk_operations.rb +1 -1
  14. data/lib/pacer/route.rb +0 -151
  15. data/lib/pacer/route_builder.rb +142 -0
  16. data/lib/pacer/side_effect/as.rb +1 -3
  17. data/lib/pacer/version.rb +1 -1
  18. data/lib/pacer/wrappers/edge_wrapper.rb +13 -16
  19. data/lib/pacer/wrappers/element_wrapper.rb +12 -22
  20. data/lib/pacer/wrappers/vertex_wrapper.rb +7 -4
  21. data/lib/{pacer-1.0.2-standalone.jar → pacer-1.0.3-standalone.jar} +0 -0
  22. data/lib/pacer.rb +9 -15
  23. data/pom.xml +1 -1
  24. data/spec/pacer/blueprints/dex_spec.rb +1 -154
  25. data/spec/pacer/blueprints/neo4j_spec.rb +8 -154
  26. data/spec/pacer/blueprints/orient_spec.rb +5 -0
  27. data/spec/pacer/blueprints/tg_spec.rb +1 -76
  28. data/spec/pacer/core/graph/vertices_route_spec.rb +32 -5
  29. data/spec/pacer/graph/pacer_graph_spec.rb +304 -336
  30. data/spec/pacer/graph/simple_encoder_spec.rb +78 -0
  31. data/spec/pacer/graph/yaml_encoder_spec.rb +71 -0
  32. data/spec/pacer/transform/join_spec.rb +1 -1
  33. data/spec/pacer/utils/tsort_spec.rb +1 -3
  34. data/spec/pacer/wrapper/edge_wrapper_spec.rb +46 -40
  35. data/spec/pacer/wrapper/element_wrapper_spec.rb +8 -13
  36. data/spec/support/graph_runner.rb +12 -3
  37. metadata +13 -14
  38. data/lib/pacer/blueprints.rb +0 -3
  39. data/lib/pacer/core.rb +0 -8
  40. data/lib/pacer/filter.rb +0 -17
  41. data/lib/pacer/graph.rb +0 -12
  42. data/lib/pacer/route/mixins.rb +0 -2
  43. data/lib/pacer/routes.rb +0 -6
  44. data/lib/pacer/side_effect.rb +0 -11
  45. data/lib/pacer/support.rb +0 -10
  46. data/lib/pacer/transform.rb +0 -16
  47. data/lib/pacer/visitors.rb +0 -7
  48. data/lib/pacer/wrappers.rb +0 -21
@@ -1,163 +1,17 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  Run.neo4j do
4
- describe 'neo4j graph' do
5
- let(:v0) { graph.create_vertex }
6
- let(:v1) { graph.create_vertex }
7
- let(:e0) { graph.create_edge '0', v0, v1, :default }
4
+ use_simple_graph_data
8
5
 
9
- describe '#element_type' do
10
- context 'invalid' do
11
- it { expect { graph.element_type(:nothing) }.to raise_error(ArgumentError) }
12
- end
13
-
14
- context ':vertex' do
15
- subject { graph.element_type(:vertex) }
16
- it { should == :vertex }
17
- end
18
-
19
- context 'a vertex' do
20
- subject { graph.element_type(v0) }
21
- it { should == :vertex }
22
- end
23
-
24
- context ':edge' do
25
- subject { graph.element_type(:edge) }
26
- it { should == :edge }
27
- end
28
-
29
- context 'an edge' do
30
- subject { graph.element_type(e0) }
31
- it { should == :edge }
32
- end
33
-
34
- context ':mixed' do
35
- subject { graph.element_type(:mixed) }
36
- it { should == :mixed }
37
- end
38
-
39
- context ':object' do
40
- subject { graph.element_type(:object) }
41
- it { should == :object }
42
- end
43
-
44
- context 'from element_type' do
45
- context ':vertex' do
46
- subject { graph.element_type(graph.element_type :vertex) }
47
- it { should == :vertex }
48
- end
49
-
50
- context ':edge' do
51
- subject { graph.element_type(graph.element_type :edge) }
52
- it { should == :edge }
53
- end
54
-
55
- context ':mixed' do
56
- subject { graph.element_type(graph.element_type :mixed) }
57
- it { should == :mixed }
58
- end
59
-
60
- context ':object' do
61
- subject { graph.element_type(graph.element_type :object) }
62
- it { should == :object }
63
- end
64
- end
65
-
66
- context 'from index_class' do
67
- context ':vertex' do
68
- subject { graph.element_type(graph.index_class :vertex) }
69
- it { should == :vertex }
70
- end
71
-
72
- context ':edge' do
73
- subject { graph.element_type(graph.index_class :edge) }
74
- it { should == :edge }
75
- end
76
- end
77
- end
78
-
79
- describe '#indices' do
80
- subject { graph.indices.to_a }
81
- its(:count) { should == 0 }
6
+ describe '#vertex' do
7
+ it 'should not raise an exception for invalid key type' do
8
+ graph.vertex('bad id').should be_nil
82
9
  end
10
+ end
83
11
 
84
- describe '#sanitize_properties' do
85
- let(:original) do
86
- { :string => ' bob ',
87
- :symbol => :abba,
88
- :empty => '',
89
- :integer => 121,
90
- :float => 100.001,
91
- :time => Time.utc(1999, 11, 9, 9, 9, 1),
92
- :object => { :a => 1, 1 => :a },
93
- 99 => 'numeric key',
94
- 'string key' => 'string value'
95
- }
96
- end
97
-
98
- subject { graph.sanitize_properties original }
99
-
100
- it { should_not equal(original) }
101
- specify 'original should be unchanged' do
102
- original.should == {
103
- :string => ' bob ',
104
- :symbol => :abba,
105
- :empty => '',
106
- :integer => 121,
107
- :float => 100.001,
108
- :time => Time.utc(1999, 11, 9, 9, 9, 1),
109
- :object => { :a => 1, 1 => :a },
110
- 99 => 'numeric key',
111
- 'string key' => 'string value'
112
- }
113
- end
114
-
115
- specify 'string should be stripped' do
116
- subject[:string].should == 'bob'
117
- end
118
-
119
- specify 'empty string becomes nil' do
120
- subject[:empty].should be_nil
121
- end
122
-
123
- specify 'numbers should be unmodified' do
124
- subject[:integer].should == 121
125
- subject[:float].should == 100.001
126
- end
127
-
128
- specify 'everything else should be yaml' do
129
- subject[:time].should == YAML.dump(Time.utc(1999, 11, 9, 9, 9, 1))
130
- end
131
-
132
- its(:keys) { should == original.keys }
133
- end
134
-
135
- describe '#in_vertex' do
136
- it 'should wrap the vertex' do
137
- v = e0.in_vertex(Tackle::SimpleMixin)
138
- v.should == v1
139
- v.extensions.should include(Tackle::SimpleMixin)
140
- end
141
-
142
- it 'should wrap the vertex 2' do
143
- v = e0.in_vertex([Tackle::SimpleMixin])
144
- v.should == v1
145
- v.extensions.should include(Tackle::SimpleMixin)
146
- end
147
- end
148
-
149
- describe '#out_vertex' do
150
- it 'should wrap the vertex' do
151
- v = e0.out_vertex(Tackle::SimpleMixin)
152
- v.should == v0
153
- v.extensions.should include(Tackle::SimpleMixin)
154
- end
155
-
156
- it 'should wrap the vertex 2' do
157
- v = e0.out_vertex([Tackle::SimpleMixin])
158
- v.should == v0
159
- v.extensions.should include(Tackle::SimpleMixin)
160
- end
12
+ describe '#edge' do
13
+ it 'should not raise an exception for invalid key type' do
14
+ graph.edge('bad id').should be_nil
161
15
  end
162
16
  end
163
17
  end
@@ -0,0 +1,5 @@
1
+ require 'spec_helper'
2
+
3
+ Run.orient do
4
+ # no special cases for Orient?
5
+ end
@@ -1,80 +1,5 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  Run.tg do
4
- describe Pacer::TinkerGraph do
5
- let(:v0) { graph.create_vertex }
6
- let(:v1) { graph.create_vertex }
7
- let(:e0) { graph.create_edge '0', v0, v1, :default }
8
-
9
- describe '#element_type' do
10
- context 'invalid' do
11
- it { expect { graph.element_type(:nothing) }.to raise_error(ArgumentError) }
12
- end
13
-
14
- context ':vertex' do
15
- subject { Pacer.tg.element_type(:vertex) }
16
- it { should == :vertex }
17
- end
18
-
19
- context 'a vertex' do
20
- subject { graph.element_type(v0) }
21
- it { should == :vertex }
22
- end
23
-
24
- context ':edge' do
25
- subject { graph.element_type(:edge) }
26
- it { should == :edge }
27
- end
28
-
29
- context 'an edge' do
30
- subject { graph.element_type(e0) }
31
- it { should == :edge }
32
- end
33
-
34
- context ':mixed' do
35
- subject { graph.element_type(:mixed) }
36
- it { should == :mixed }
37
- end
38
-
39
- context ':object' do
40
- subject { graph.element_type(:object) }
41
- it { should == :object }
42
- end
43
- end
44
-
45
- describe '#sanitize_properties' do
46
- specify 'returns its argument' do
47
- arg = { :a => 1 }
48
- graph.sanitize_properties(arg).should equal(arg)
49
- end
50
- end
51
-
52
- describe '#in_vertex' do
53
- it 'should wrap the vertex' do
54
- v = e0.in_vertex(Tackle::SimpleMixin)
55
- v.should == v1
56
- v.extensions.should include(Tackle::SimpleMixin)
57
- end
58
-
59
- it 'should wrap the vertex 2' do
60
- v = e0.in_vertex([Tackle::SimpleMixin])
61
- v.should == v1
62
- v.extensions.should include(Tackle::SimpleMixin)
63
- end
64
- end
65
-
66
- describe '#out_vertex' do
67
- it 'should wrap the vertex' do
68
- v = e0.out_vertex(Tackle::SimpleMixin)
69
- v.should == v0
70
- v.extensions.should include(Tackle::SimpleMixin)
71
- end
72
-
73
- it 'should wrap the vertex 2' do
74
- v = e0.out_vertex([Tackle::SimpleMixin])
75
- v.should == v0
76
- v.extensions.should include(Tackle::SimpleMixin)
77
- end
78
- end
79
- end
4
+ # no special cases for TinkerGraph?
80
5
  end
@@ -1,5 +1,32 @@
1
1
  require 'spec_helper'
2
2
 
3
+ Run.all(:read_write) do
4
+ use_pacer_graphml_data(:read_write)
5
+
6
+ describe '#property?' do
7
+ before do
8
+ setup_data
9
+ graph.create_vertex other: 'hi'
10
+ graph.create_vertex falsy: false
11
+ graph.create_vertex zero: 0
12
+ end
13
+
14
+ it 'should filter vertices that do not have the given property' do
15
+ graph.v.count.should == 10
16
+ graph.v.property?(:name).count.should == 7
17
+ graph.v.property?(:other).count.should == 1
18
+ end
19
+
20
+ it 'should work even if the value is falsy' do
21
+ graph.v.count.should == 10
22
+ graph.v.property?(:name).count.should == 7
23
+ graph.v.property?(:zero).count.should == 1
24
+
25
+ graph.v.property?(:falsy).count.should == 1
26
+ end
27
+ end
28
+ end
29
+
3
30
  Run.all(:read_only) do
4
31
  use_pacer_graphml_data(:read_only)
5
32
 
@@ -30,12 +57,12 @@ Run.all(:read_only) do
30
57
  subject { graph.v.out }
31
58
  it { should be_a Pacer::Core::Graph::VerticesRoute }
32
59
  its(:count) { should == 14 }
33
- its(:to_a) { should == graph.v.out_e.in_v.to_a }
60
+ its(:to_set) { should == graph.v.out_e.in_v.to_set }
34
61
 
35
62
  describe '(:uses, :wrote)' do
36
63
  subject { graph.v.out(:uses, :wrote) }
37
64
  its(:count) { should == 9 }
38
- it { subject.to_a.should == graph.v.out_e(:uses, :wrote).in_v.to_a }
65
+ it { subject.to_set.should == graph.v.out_e(:uses, :wrote).in_v.to_set }
39
66
  end
40
67
 
41
68
  it 'should not apply extensions to new route' do
@@ -47,11 +74,11 @@ Run.all(:read_only) do
47
74
  subject { graph.v.in }
48
75
  it { should be_a Pacer::Core::Graph::VerticesRoute }
49
76
  its(:count) { should == 14 }
50
- its(:to_a) { should == graph.v.in_e.out_v.to_a }
77
+ its(:to_set) { should == graph.v.in_e.out_v.to_set }
51
78
  describe '(:uses, :wrote)' do
52
79
  subject { graph.v.in(:uses, :wrote) }
53
80
  its(:count) { should == 9 }
54
- it { subject.to_a.should == graph.v.in_e(:uses, :wrote).out_v.to_a }
81
+ it { subject.to_set.should == graph.v.in_e(:uses, :wrote).out_v.to_set }
55
82
  end
56
83
 
57
84
  it 'should not apply extensions to new route' do
@@ -97,7 +124,7 @@ Run.tg(:read_only) do
97
124
  r = graph.v.out_e.in_v.in_e { |e| e.label == 'wrote' }.out_v
98
125
  paths = r.paths
99
126
  paths.first.should_not be_nil
100
- graph.v.out_e.in_v.in_e(:wrote).out_v.paths.collect(&:to_a).should == paths.collect(&:to_a)
127
+ graph.v.out_e.in_v.in_e(:wrote).out_v.paths.to_a.should == paths.to_a
101
128
  end
102
129
  end
103
130
  end