pacer 0.9.1.1-java → 1.0.0-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.
Files changed (152) hide show
  1. data/.autotest +4 -1
  2. data/.gitignore +4 -0
  3. data/.rspec +1 -1
  4. data/Gemfile-dev +33 -0
  5. data/Gemfile-release +4 -0
  6. data/README.md +27 -9
  7. data/Rakefile +26 -8
  8. data/bin/autotest +1 -1
  9. data/lib/pacer/blueprints/multi_graph.rb +7 -19
  10. data/lib/pacer/blueprints/ruby_graph.rb +77 -52
  11. data/lib/pacer/blueprints/tg.rb +6 -93
  12. data/lib/pacer/blueprints.rb +0 -1
  13. data/lib/pacer/core/graph/edges_route.rb +10 -12
  14. data/lib/pacer/core/graph/element_route.rb +14 -21
  15. data/lib/pacer/core/graph/graph_index_route.rb +12 -8
  16. data/lib/pacer/core/graph/graph_route.rb +2 -5
  17. data/lib/pacer/core/graph/mixed_route.rb +3 -5
  18. data/lib/pacer/core/graph/vertices_route.rb +26 -27
  19. data/lib/pacer/core/route.rb +35 -66
  20. data/lib/pacer/exceptions.rb +13 -6
  21. data/lib/pacer/extensions/block_filter_element.rb +0 -5
  22. data/lib/pacer/filter/collection_filter.rb +9 -2
  23. data/lib/pacer/filter/empty_filter.rb +12 -3
  24. data/lib/pacer/filter/future_filter.rb +5 -5
  25. data/lib/pacer/filter/loop_filter.rb +7 -13
  26. data/lib/pacer/filter/object_filter.rb +10 -16
  27. data/lib/pacer/filter/property_filter/filters.rb +134 -93
  28. data/lib/pacer/filter/property_filter.rb +22 -19
  29. data/lib/pacer/filter/where_filter/node_visitor.rb +47 -26
  30. data/lib/pacer/filter/where_filter.rb +24 -3
  31. data/lib/pacer/function_resolver.rb +7 -2
  32. data/lib/pacer/graph/graph_ml.rb +39 -0
  33. data/lib/pacer/graph/graph_transactions_mixin.rb +107 -175
  34. data/lib/pacer/graph/pacer_graph.rb +438 -0
  35. data/lib/pacer/graph/simple_encoder.rb +20 -0
  36. data/lib/pacer/graph/yaml_encoder.rb +81 -0
  37. data/lib/pacer/graph.rb +8 -10
  38. data/lib/pacer/pipe/blackbox_pipeline.rb +11 -4
  39. data/lib/pacer/pipe/block_filter_pipe.rb +5 -22
  40. data/lib/pacer/pipe/cross_product_transform_pipe.rb +5 -7
  41. data/lib/pacer/pipe/edges_pipe.rb +22 -0
  42. data/lib/pacer/pipe/enumerable_pipe.rb +3 -9
  43. data/lib/pacer/pipe/expandable_pipe.rb +2 -14
  44. data/lib/pacer/pipe/id_collection_filter_pipe.rb +2 -8
  45. data/lib/pacer/pipe/is_empty_pipe.rb +5 -12
  46. data/lib/pacer/pipe/is_unique_pipe.rb +3 -13
  47. data/lib/pacer/pipe/label_collection_filter_pipe.rb +1 -7
  48. data/lib/pacer/pipe/label_prefix_pipe.rb +0 -6
  49. data/lib/pacer/pipe/loop_pipe.rb +27 -25
  50. data/lib/pacer/pipe/never_pipe.rb +1 -1
  51. data/lib/pacer/pipe/path_wrapping_pipe.rb +40 -0
  52. data/lib/pacer/pipe/process_pipe.rb +2 -20
  53. data/lib/pacer/pipe/property_comparison_pipe.rb +0 -6
  54. data/lib/pacer/pipe/ruby_pipe.rb +10 -3
  55. data/lib/pacer/pipe/simple_visitor_pipe.rb +12 -11
  56. data/lib/pacer/pipe/stream_sort_pipe.rb +1 -7
  57. data/lib/pacer/pipe/stream_uniq_pipe.rb +0 -6
  58. data/lib/pacer/pipe/type_filter_pipe.rb +1 -7
  59. data/lib/pacer/pipe/unary_transform_pipe.rb +6 -8
  60. data/lib/pacer/pipe/unwrapping_pipe.rb +13 -0
  61. data/lib/pacer/pipe/vertices_pipe.rb +22 -0
  62. data/lib/pacer/pipe/visitor_pipe.rb +3 -7
  63. data/lib/pacer/pipe/wrapping_pipe.rb +37 -0
  64. data/lib/pacer/pipes.rb +17 -12
  65. data/lib/pacer/route/mixin/bulk_operations.rb +8 -9
  66. data/lib/pacer/route/mixin/route_operations.rb +17 -11
  67. data/lib/pacer/route/mixins.rb +0 -1
  68. data/lib/pacer/route.rb +198 -121
  69. data/lib/pacer/side_effect/aggregate.rb +22 -2
  70. data/lib/pacer/side_effect/as.rb +73 -0
  71. data/lib/pacer/side_effect/group_count.rb +0 -3
  72. data/lib/pacer/side_effect/is_unique.rb +7 -6
  73. data/lib/pacer/side_effect.rb +1 -1
  74. data/lib/pacer/support/enumerable.rb +14 -12
  75. data/lib/pacer/support/nil_class.rb +5 -0
  76. data/lib/pacer/support/proc.rb +2 -2
  77. data/lib/pacer/support.rb +1 -1
  78. data/lib/pacer/transform/cap.rb +1 -1
  79. data/lib/pacer/transform/has_count_cap.rb +1 -1
  80. data/lib/pacer/transform/join.rb +20 -16
  81. data/lib/pacer/transform/map.rb +6 -2
  82. data/lib/pacer/transform/path.rb +44 -20
  83. data/lib/pacer/transform/sort_section.rb +58 -51
  84. data/lib/pacer/utils/tsort.rb +7 -2
  85. data/lib/pacer/utils.rb +0 -1
  86. data/lib/pacer/version.rb +4 -3
  87. data/lib/pacer/visitors/section.rb +42 -0
  88. data/lib/pacer/visitors/visits_section.rb +32 -0
  89. data/lib/pacer/visitors.rb +7 -0
  90. data/lib/pacer/wrappers/edge_wrapper.rb +164 -11
  91. data/lib/pacer/wrappers/element_wrapper.rb +133 -8
  92. data/lib/pacer/wrappers/index_wrapper.rb +47 -0
  93. data/lib/pacer/wrappers/vertex_wrapper.rb +175 -12
  94. data/lib/pacer/wrappers/wrapper_selector.rb +40 -0
  95. data/lib/pacer/wrappers/wrapping_pipe_function.rb +90 -0
  96. data/lib/pacer/wrappers.rb +3 -1
  97. data/lib/pacer-1.0.0-standalone.jar +0 -0
  98. data/lib/pacer.rb +13 -47
  99. data/pacer.gemspec +0 -8
  100. data/pom.xml +10 -3
  101. data/spec/pacer/blueprints/dex_spec.rb +12 -26
  102. data/spec/pacer/blueprints/neo4j_spec.rb +14 -28
  103. data/spec/pacer/blueprints/tg_spec.rb +6 -54
  104. data/spec/pacer/core/graph/edges_route_spec.rb +1 -1
  105. data/spec/pacer/core/graph/element_route_spec.rb +2 -2
  106. data/spec/pacer/core/graph/graph_route_spec.rb +2 -2
  107. data/spec/pacer/core/graph/vertices_route_spec.rb +10 -3
  108. data/spec/pacer/core/route_spec.rb +35 -58
  109. data/spec/pacer/filter/empty_filter_spec.rb +5 -6
  110. data/spec/pacer/filter/future_filter_spec.rb +8 -8
  111. data/spec/pacer/filter/loop_filter_spec.rb +120 -6
  112. data/spec/pacer/filter/object_filter_spec.rb +15 -0
  113. data/spec/pacer/filter/property_filter/filters_spec.rb +169 -0
  114. data/spec/pacer/filter/property_filter_spec.rb +15 -12
  115. data/spec/pacer/filter/uniq_filter_spec.rb +1 -1
  116. data/spec/pacer/filter/where_filter_spec.rb +55 -7
  117. data/spec/pacer/graph/{graph_mixin_spec.rb → pacer_graph_spec.rb} +114 -185
  118. data/spec/pacer/route/mixin/base_spec.rb +36 -35
  119. data/spec/pacer/route/mixin/route_operations_spec.rb +4 -46
  120. data/spec/pacer/side_effect/as_spec.rb +34 -0
  121. data/spec/pacer/support/enumerable_spec.rb +6 -6
  122. data/spec/pacer/transform/join_spec.rb +7 -5
  123. data/spec/pacer/transform/map_spec.rb +55 -0
  124. data/spec/pacer/transform/path_spec.rb +30 -15
  125. data/spec/pacer/transform/process_spec.rb +42 -0
  126. data/spec/pacer/transform/sort_section_spec.rb +82 -0
  127. data/spec/pacer/wrapper/edge_wrapper_spec.rb +122 -2
  128. data/spec/pacer/wrapper/element_wrapper_spec.rb +289 -3
  129. data/spec/pacer/wrapper/vertex_wrapper_spec.rb +289 -2
  130. data/spec/spec_helper.rb +16 -7
  131. data/spec/support/graph_runner.rb +80 -29
  132. data/tags +1165 -0
  133. metadata +46 -107
  134. data/.rvmrc +0 -0
  135. data/lib/pacer/blueprints/extensions.rb +0 -77
  136. data/lib/pacer/graph/edge_mixin.rb +0 -127
  137. data/lib/pacer/graph/element_mixin.rb +0 -202
  138. data/lib/pacer/graph/graph_indices_mixin.rb +0 -93
  139. data/lib/pacer/graph/graph_mixin.rb +0 -361
  140. data/lib/pacer/graph/index_mixin.rb +0 -30
  141. data/lib/pacer/graph/vertex_mixin.rb +0 -119
  142. data/lib/pacer/pipe/map_pipe.rb +0 -36
  143. data/lib/pacer/pipe/variable_store_iterator_wrapper.rb +0 -26
  144. data/lib/pacer/route/mixin/variable_route_module.rb +0 -26
  145. data/lib/pacer/side_effect/section.rb +0 -25
  146. data/lib/pacer/support/iterator_mixins.rb +0 -110
  147. data/lib/pacer/wrappers/new_element.rb +0 -106
  148. data/lib/pacer-0.9.1.1-standalone.jar +0 -0
  149. data/spec/pacer/graph/edge_mixin_spec.rb +0 -116
  150. data/spec/pacer/graph/element_mixin_spec.rb +0 -297
  151. data/spec/pacer/graph/index_mixin_spec.rb +0 -0
  152. data/spec/pacer/graph/vertex_mixin_spec.rb +0 -192
@@ -1,119 +0,0 @@
1
- module Pacer
2
- # This module is mixed into the raw Blueprints Vertex class from any
3
- # graph implementation.
4
- #
5
- # Adds more convenient/rubyish methods and adds support for extensions
6
- # to some methods where needed.
7
- module VertexMixin
8
- # Add extensions to this vertex.
9
- #
10
- # If any extension has a Vertex module within it, this vertex will
11
- # be extended with the extension's Vertex module.
12
- #
13
- # @see Core::Route#add_extension
14
- #
15
- # @param [[extensions]] exts the extensions to add
16
- # @return [Pacer::EdgeWrapper] this vertex wrapped up and including
17
- # the extensions
18
- def add_extensions(exts)
19
- if exts.any?
20
- Wrappers::VertexWrapper.wrap(self, exts)
21
- else
22
- self
23
- end
24
- end
25
-
26
- # Returns a human-readable representation of the vertex using the
27
- # standard ruby console representation of an instantiated object.
28
- # @return [String]
29
- def inspect
30
- "#<#{ ["V[#{element_id}]", display_name].compact.join(' ') }>"
31
- end
32
-
33
- # Returns the display name of the vertex.
34
- # @return [String]
35
- def display_name
36
- graph.vertex_name.call self if graph and graph.vertex_name
37
- end
38
-
39
- # Deletes the vertex from its graph along with all related edges.
40
- def delete!
41
- graph.removeVertex element
42
- end
43
-
44
- # Copies including the vertex id unless a vertex with that id
45
- # already exists.
46
- # @param [Pacer::GraphMixin] target_graph
47
- # @param opts for compatibility with {Pacer::EdgeMixin#clone_into}
48
- # @yield [v] Optional block yields the vertex after it has been created.
49
- # @return [Pacer::VertexMixin] the new vertex
50
- def clone_into(target_graph, opts = nil)
51
- v_idx = target_graph.index_name("tmp:v:#{graph.to_s}", :vertex, :create => true)
52
- v = target_graph.vertex(element_id) || v_idx.get('id', element_id).first
53
- unless v
54
- v = target_graph.create_vertex element_id, properties
55
- v_idx.put('id', element_id, v)
56
- yield v if block_given?
57
- end
58
- v
59
- end
60
-
61
- # Make a new copy of the element with the next available vertex id.
62
- #
63
- # @param [Pacer::GraphMixin] target_graph
64
- # @yield [v] Optional block yields the vertex after it has been created.
65
- # @return [Pacer::VertexMixin] the new vertex
66
- def copy_into(target_graph)
67
- v = target_graph.create_vertex properties
68
- yield v if block_given?
69
- v
70
- end
71
-
72
- def raw_out_edges(*labels)
73
- element.getOutEdges *labels
74
- end
75
-
76
- def raw_in_edges(*labels)
77
- element.getInEdges *labels
78
- end
79
-
80
- def out_edges(*labels_and_extensions)
81
- labels, exts = split_labels_and_extensions(labels_and_extensions)
82
- edge_iterator(raw_out_edges(*labels).iterator, exts)
83
- end
84
-
85
- def in_edges(*labels_and_extensions)
86
- labels, exts = split_labels_and_extensions(labels_and_extensions)
87
- edge_iterator(raw_in_edges(*labels).iterator, exts)
88
- end
89
-
90
- def both_edges(*labels_and_extensions)
91
- labels, exts = split_labels_and_extensions(labels_and_extensions)
92
- ins = raw_in_edges(*labels).iterator
93
- outs = raw_out_edges(*labels).iterator
94
- edge_iterator(Pacer::Pipes::MultiIterator.new(ins, outs), exts)
95
- end
96
-
97
- protected
98
-
99
- def split_labels_and_extensions(mixed)
100
- labels = Set[]
101
- exts = Set[]
102
- mixed.each do |obj|
103
- if obj.is_a? Symbol or obj.is_a? String
104
- labels << obj
105
- else
106
- exts << obj
107
- end
108
- end
109
- [labels, exts]
110
- end
111
-
112
- def edge_iterator(iter, exts)
113
- iter.extend Pacer::Core::Route::IteratorExtensionsMixin
114
- iter.graph = self.graph
115
- iter.extensions = exts
116
- iter
117
- end
118
- end
119
- end
@@ -1,36 +0,0 @@
1
- module Pacer::Pipes
2
- class MapPipe < AbstractPipe
3
- field_reader :starts
4
-
5
- def initialize(back, block)
6
- super()
7
- @block = block
8
- @back = back
9
- @graph = back.graph if back
10
- @extensions = back.extensions + [Pacer::Extensions::BlockFilterElement]
11
- @is_element = @graph.element_type?(back.element_type) if @graph
12
- end
13
-
14
- def processNextStart
15
- while true
16
- obj = starts.next
17
- begin
18
- if @is_element
19
- obj = obj.add_extensions(@extensions)
20
- obj.back = @back
21
- obj.graph = @back.graph
22
- end
23
- rescue
24
- end
25
- result = @block.call(obj)
26
- return result
27
- end
28
- rescue NativeException => e
29
- if e.cause.getClass == Pacer::NoSuchElementException.getClass
30
- raise e.cause
31
- else
32
- raise e
33
- end
34
- end
35
- end
36
- end
@@ -1,26 +0,0 @@
1
- module Pacer::Pipes
2
- class VariableStoreIteratorWrapper < AbstractPipe
3
-
4
- field_reader :starts
5
- attr_accessor :vars
6
-
7
- def initialize(pipe, vars, variable_name)
8
- super()
9
- setStarts pipe if pipe
10
- @vars = vars
11
- @variable_name = variable_name
12
- end
13
-
14
- protected
15
-
16
- def processNextStart
17
- @vars[@variable_name] = starts.next
18
- rescue NativeException => e
19
- if e.cause.getClass == Pacer::NoSuchElementException.getClass
20
- raise e.cause
21
- else
22
- raise e
23
- end
24
- end
25
- end
26
- end
@@ -1,26 +0,0 @@
1
- module Pacer::Routes
2
-
3
- # Adds support to a route to store a variable inline during processing. See
4
- # Pacer::Routes::RouteOperations#as
5
- module VariableRouteModule
6
- attr_accessor :variable_name
7
-
8
- def root?
9
- false
10
- end
11
-
12
- protected
13
-
14
- def attach_pipe(pipe)
15
- Pacer::Pipes::VariableStoreIteratorWrapper.new(pipe, vars, @variable_name)
16
- end
17
-
18
- def has_routable_class?
19
- false
20
- end
21
-
22
- def inspect_class_name
23
- @variable_name.inspect
24
- end
25
- end
26
- end
@@ -1,25 +0,0 @@
1
- module Pacer
2
- module Routes
3
- module RouteOperations
4
- def section(section_name = nil)
5
- chain_route side_effect: :section, section_name: section_name
6
- end
7
- end
8
- end
9
-
10
- module SideEffect
11
- module Section
12
- attr_accessor :section_name
13
-
14
- protected
15
-
16
- attr_reader :section_visitor
17
-
18
- def attach_pipe(end_pipe)
19
- @section_visitor = pipe = Pacer::Pipes::SimpleVisitorPipe.new
20
- pipe.setStarts end_pipe if end_pipe
21
- pipe
22
- end
23
- end
24
- end
25
- end
@@ -1,110 +0,0 @@
1
- module Pacer::Core::Route
2
- # This mixin allows an iterator to be returned from methods that perform a
3
- # transformation on the elements in their collection. Set the block property
4
- # to the proc that does the transformation.
5
- module IteratorBlockMixin
6
- attr_accessor :graph
7
-
8
- # Set the block that does the transformation.
9
- def block=(block)
10
- @block = block
11
- end
12
-
13
- def next
14
- item = super
15
- item.graph ||= @graph
16
- @block.call(item)
17
- end
18
- end
19
-
20
- module IteratorPathMixin
21
- attr_accessor :graph
22
-
23
- def next
24
- super.collect do |e|
25
- e.graph ||= @graph if e.respond_to? :graph=
26
- e
27
- end
28
- end
29
- end
30
-
31
- module IteratorExtensionsMixin
32
- attr_accessor :graph, :extensions
33
-
34
- def next
35
- item = super
36
- # TODO: optimize this (and other) check:
37
- # - exception?
38
- # - type check?
39
- # - method check?
40
- # - ...?
41
- if item.respond_to? :graph=
42
- item = item.add_extensions @extensions
43
- item.graph ||= @graph
44
- end
45
- item
46
- end
47
- end
48
-
49
- module IteratorWrapperMixin
50
- attr_reader :graph, :extensions, :wrapper
51
-
52
- def wrapper=(w)
53
- @base_wrapper = w
54
- @wrapper = build_wrapper?
55
- @set_graph = set_graph?
56
- end
57
-
58
- def graph=(g)
59
- @graph = g
60
- @wrapper = build_wrapper?
61
- @set_graph = set_graph?
62
- end
63
-
64
- def extensions=(exts)
65
- @extensions = exts
66
- @wrapper = build_wrapper?
67
- @set_graph = set_graph?
68
- end
69
-
70
- def build_wrapper?
71
- @base_wrapper = nil unless defined? @base_wrapper
72
- @extensions = nil unless defined? @extensions
73
- if @base_wrapper and @extensions
74
- @wrapper = @base_wrapper.wrapper_for(@base_wrapper.extensions + @extensions.to_a)
75
- elsif @base_wrapper
76
- @wrapper = @base_wrapper
77
- elsif @extensions
78
- # We don't know what type of wrapper to create
79
- end
80
- end
81
-
82
- if RUBY_VERSION =~ /^1\.8\./
83
- def set_graph?
84
- graph and wrapper and wrapper.instance_methods.include?('graph=')
85
- end
86
- else
87
- def set_graph?
88
- graph and wrapper and wrapper.instance_methods.include?(:graph=)
89
- end
90
- end
91
-
92
- def next
93
- item = wrapper.new(super)
94
- item.graph ||= graph if @set_graph
95
- item
96
- end
97
- end
98
-
99
- module IteratorMixin
100
- attr_accessor :graph
101
-
102
- def next
103
- item = super
104
- if item.respond_to? :graph=
105
- item.graph ||= @graph
106
- end
107
- item
108
- end
109
- end
110
- end
@@ -1,106 +0,0 @@
1
- module Pacer::Wrappers
2
- class NewElement
3
- include Pacer::Element
4
-
5
- def initialize
6
- @properties = {}
7
- @out_edges = []
8
- @in_edges = []
9
- end
10
-
11
- def getId
12
- nil
13
- end
14
- alias get_id getId
15
-
16
- def getPropertyKeys
17
- @properties.keys
18
- end
19
- alias property_keys getPropertyKeys
20
-
21
- def getProperty(prop)
22
- @properties[prop]
23
- end
24
- alias get_property getProperty
25
-
26
- def setProperty(prop, value)
27
- @properties[prop] = value
28
- end
29
- alias set_property setProperty
30
-
31
- def removeProperty(prop)
32
- @properties.delete prop
33
- end
34
- alias remove_property removeProperty
35
-
36
- def graph
37
- @graph
38
- end
39
-
40
- def graph=(graph)
41
- @graph = graph
42
- end
43
-
44
- def <=>(other)
45
- object_id <=> other.object_id
46
- end
47
-
48
- def ==(other)
49
- equal? other
50
- end
51
- end
52
-
53
- class NewVertex < NewElement
54
- include Pacer::Vertex
55
-
56
- def getOutEdges(*args)
57
- @out_edges
58
- end
59
- alias out_edges getOutEdges
60
- alias get_out_edges getOutEdges
61
-
62
- def getInEdges(*args)
63
- @in_edges
64
- end
65
- alias in_edges getInEdges
66
- alias get_in_edges getInEdges
67
-
68
- def getRawVertex
69
- self
70
- end
71
- alias raw_vertex getRawVertex
72
- end
73
-
74
- class NewEdge < NewElement
75
- include Pacer::Edge
76
-
77
- def getInVertex
78
- @in_vertex
79
- end
80
- alias in_vertex getInVertex
81
- alias inVertex getInVertex
82
-
83
- def getOutVertex
84
- @out_vertex
85
- end
86
- alias out_vertex getOutVertex
87
- alias outVertex getOutVertex
88
-
89
- def getLabel
90
- @label
91
- end
92
- alias get_label getLabel
93
- alias label getLabel
94
-
95
- def setLabel(label)
96
- @label = label
97
- end
98
- alias set_label setLabel
99
- alias label= setLabel
100
-
101
- def getRawEdge
102
- self
103
- end
104
- alias raw_edge getRawEdge
105
- end
106
- end
Binary file
@@ -1,116 +0,0 @@
1
- require 'spec_helper'
2
-
3
- shared_examples_for Pacer::EdgeMixin do
4
- use_simple_graph_data
5
-
6
- describe '#e' do
7
- subject { e0.e }
8
- it { should be_an_edges_route }
9
- it { should_not be_a(graph.element_type(:edge)) }
10
- it { should_not be_an_instance_of(graph.element_type(:edge)) }
11
- end
12
-
13
- describe '#add_extensions' do
14
- context 'no extensions' do
15
- subject { e0.add_extensions([]) }
16
- its('extensions.to_a') { should == [] }
17
- it { should_not be_a(Pacer::Wrappers::ElementWrapper) }
18
- end
19
-
20
- context 'with extensions' do
21
- subject { e0.add_extensions([Tackle::SimpleMixin]) }
22
- its('extensions.to_a') { should == [Tackle::SimpleMixin] }
23
- it { should be_a(Pacer::Wrappers::ElementWrapper) }
24
- it { should be_a(Pacer::Wrappers::EdgeWrapper) }
25
- it { should_not be_a(Pacer::Wrappers::VertexWrapper) }
26
-
27
- describe '#e' do
28
- subject { e0.add_extensions([Tackle::SimpleMixin]).e }
29
- its('extensions.to_a') { should == [Tackle::SimpleMixin] }
30
- it { should be_an_edges_route }
31
- it { should be_a(Tackle::SimpleMixin::Route) }
32
- end
33
- end
34
- end
35
-
36
- describe '#delete!' do
37
- before do
38
- @edge_id = e0.element_id
39
- e0.delete!
40
- graph.checkpoint # deleted edges in neo may be looked up during the transaction
41
- end
42
- it 'should be removed' do
43
- graph.edge(@edge_id).should be_nil
44
- end
45
- end
46
-
47
- contexts(
48
- 'into new tg' => proc {
49
- let(:dest) { Pacer.tg }
50
- },
51
- 'into graph2' => proc {
52
- let(:dest) { graph2 }
53
- }) do
54
- describe '#clone_into', :transactions => false do
55
- before { pending 'support temporary hash indices for clone/copy' unless graph.supports_manual_indices? }
56
- context 'including vertices' do
57
- subject { e0.clone_into(dest, :create_vertices => true) }
58
-
59
- its('element_id.to_s') { should == e0.element_id.to_s if graph.supports_custom_element_ids? }
60
- its(:label) { should == 'links' }
61
- its(:graph) { should equal(dest) }
62
- its('in_vertex.properties') { should == { 'name' => 'eliza' } }
63
- its('out_vertex.properties') { should == { 'name' => 'darrick' } }
64
- end
65
-
66
- context 'without vertices' do
67
- subject { e0.clone_into(dest) rescue nil }
68
- it { should be_nil }
69
-
70
- context 'but already existing' do
71
- before do
72
- v0.clone_into(dest)
73
- v1.clone_into(dest)
74
- end
75
- its('element_id.to_s') { should == e0.element_id.to_s if graph.supports_custom_element_ids? }
76
- its(:label) { should == 'links' }
77
- its(:graph) { should equal(dest) }
78
- its('in_vertex.properties') { should == { 'name' => 'eliza' } }
79
- its('out_vertex.properties') { should == { 'name' => 'darrick' } }
80
- end
81
- end
82
- end
83
-
84
- describe '#copy_into', :transactions => false do
85
- before { pending unless graph.supports_manual_indices? }
86
- subject { v0.clone_into(dest); v1.clone_into(dest); e0.copy_into(dest) }
87
- its(:label) { should == 'links' }
88
- its(:graph) { should equal(dest) }
89
- its('in_vertex.properties') { should == { 'name' => 'eliza' } }
90
- its('out_vertex.properties') { should == { 'name' => 'darrick' } }
91
- end
92
-
93
- end
94
-
95
- subject { e0 }
96
- its(:graph) { should equal(graph) }
97
- its(:display_name) { should == "#{ v0.element_id }-links-#{ v1.element_id }" }
98
- its(:inspect) { should == "#<E[#{ e0.element_id }]:#{ v0.element_id }-links-#{ v1.element_id }>" }
99
- context 'with label proc' do
100
- before do
101
- graph.edge_name = proc { |e| "some name" }
102
- end
103
- its(:display_name) { should == "some name" }
104
- its(:inspect) { should == "#<E[#{ e0.element_id }]:some name>" }
105
- end
106
-
107
- context '', :transactions => true do
108
- it { should_not == e1 }
109
- it { should == e0 }
110
- it { should_not == v0 }
111
- end
112
- end
113
-
114
- Run.all do
115
- it_uses Pacer::EdgeMixin
116
- end