pacer 1.0.2-java → 1.0.3-java
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.
- data/blog/2012-09-18-pacer-1.0.md +63 -0
- data/lib/pacer/core/graph/element_route.rb +8 -4
- data/lib/pacer/core/graph/vertices_route.rb +1 -1
- data/lib/pacer/core/route.rb +20 -0
- data/lib/pacer/exceptions.rb +1 -0
- data/lib/pacer/filter/future_filter.rb +2 -0
- data/lib/pacer/graph/graph_transactions_mixin.rb +13 -12
- data/lib/pacer/graph/hash_index.rb +29 -0
- data/lib/pacer/graph/pacer_graph.rb +23 -6
- data/lib/pacer/graph/simple_encoder.rb +9 -4
- data/lib/pacer/graph/yaml_encoder.rb +18 -31
- data/lib/pacer/loader.rb +93 -0
- data/lib/pacer/route/mixin/bulk_operations.rb +1 -1
- data/lib/pacer/route.rb +0 -151
- data/lib/pacer/route_builder.rb +142 -0
- data/lib/pacer/side_effect/as.rb +1 -3
- data/lib/pacer/version.rb +1 -1
- data/lib/pacer/wrappers/edge_wrapper.rb +13 -16
- data/lib/pacer/wrappers/element_wrapper.rb +12 -22
- data/lib/pacer/wrappers/vertex_wrapper.rb +7 -4
- data/lib/{pacer-1.0.2-standalone.jar → pacer-1.0.3-standalone.jar} +0 -0
- data/lib/pacer.rb +9 -15
- data/pom.xml +1 -1
- data/spec/pacer/blueprints/dex_spec.rb +1 -154
- data/spec/pacer/blueprints/neo4j_spec.rb +8 -154
- data/spec/pacer/blueprints/orient_spec.rb +5 -0
- data/spec/pacer/blueprints/tg_spec.rb +1 -76
- data/spec/pacer/core/graph/vertices_route_spec.rb +32 -5
- data/spec/pacer/graph/pacer_graph_spec.rb +304 -336
- data/spec/pacer/graph/simple_encoder_spec.rb +78 -0
- data/spec/pacer/graph/yaml_encoder_spec.rb +71 -0
- data/spec/pacer/transform/join_spec.rb +1 -1
- data/spec/pacer/utils/tsort_spec.rb +1 -3
- data/spec/pacer/wrapper/edge_wrapper_spec.rb +46 -40
- data/spec/pacer/wrapper/element_wrapper_spec.rb +8 -13
- data/spec/support/graph_runner.rb +12 -3
- metadata +13 -14
- data/lib/pacer/blueprints.rb +0 -3
- data/lib/pacer/core.rb +0 -8
- data/lib/pacer/filter.rb +0 -17
- data/lib/pacer/graph.rb +0 -12
- data/lib/pacer/route/mixins.rb +0 -2
- data/lib/pacer/routes.rb +0 -6
- data/lib/pacer/side_effect.rb +0 -11
- data/lib/pacer/support.rb +0 -10
- data/lib/pacer/transform.rb +0 -16
- data/lib/pacer/visitors.rb +0 -7
- data/lib/pacer/wrappers.rb +0 -21
@@ -1,163 +1,17 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
Run.neo4j do
|
4
|
-
|
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
|
-
|
10
|
-
|
11
|
-
|
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
|
-
|
85
|
-
|
86
|
-
|
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
|
@@ -1,80 +1,5 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
Run.tg do
|
4
|
-
|
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(:
|
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.
|
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(:
|
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.
|
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.
|
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
|