Skip to content

Commit 277ce21

Browse files
committed
Added tests from previous branch, some of them fail
1 parent 0ab738a commit 277ce21

File tree

1 file changed

+231
-0
lines changed

1 file changed

+231
-0
lines changed
Lines changed: 231 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,231 @@
1+
from raphtory import filter
2+
from filters_setup import init_graph, create_test_graph
3+
from utils import with_disk_variants
4+
import pytest
5+
6+
7+
@with_disk_variants(init_graph, variants=["graph", "event_disk_graph"])
8+
def test_edges_src_property_eq():
9+
def check(graph):
10+
expr = filter.Edge.src().property("p2") == 2
11+
result = sorted(graph.filter(expr).edges.id)
12+
expected = sorted([("2", "1"), ("2", "3")])
13+
assert result == expected
14+
return check
15+
16+
17+
@with_disk_variants(init_graph, variants=["graph", "event_disk_graph"])
18+
def test_edges_dst_property_contains():
19+
def check(graph):
20+
# dst node "3" has p20 == "Gold_boat"; dst node "4" has p20 updated from Gold_boat to Gold_ship so it doesn't appear here
21+
expr = filter.Edge.dst().property("p20").contains("boat")
22+
result = sorted(graph.filter(expr).edges.id)
23+
expected = sorted([("2", "3")])
24+
assert result == expected
25+
return check
26+
27+
@with_disk_variants(init_graph, variants=["graph", "event_disk_graph"])
28+
def test_edges_dst_property_any_contains():
29+
def check(graph):
30+
# dst node "3" has p20 == "Gold_boat"; dst node "4" has p20 updated from Gold_boat to Gold_ship so it appears with .temporal().any()
31+
expr = filter.Edge.dst().property("p20").temporal().any().contains("boat")
32+
result = sorted(graph.filter(expr).edges.id)
33+
expected = sorted([("2", "3"), ("3", "4")])
34+
assert result == expected
35+
return check
36+
37+
38+
@with_disk_variants(init_graph, variants=["graph", "event_disk_graph"])
39+
def test_edges_dst_property_gt():
40+
def check(graph):
41+
expr = filter.Edge.dst().property("p100") > 55
42+
result = sorted(graph.filter(expr).edges.id)
43+
expected = sorted([("2", "3")]) # edge (2,3) is at times 2 and 3; IDs dedup by view
44+
assert result == expected
45+
return check
46+
47+
48+
@with_disk_variants(create_test_graph, variants=("graph", "persistent_graph"))
49+
def test_edges_src_property_temporal_sum():
50+
def check(graph):
51+
expr = filter.Edge.src().property("prop6").temporal().last().sum() == 12
52+
result = sorted(graph.filter(expr).edges.id)
53+
expected = sorted([("a", "d")])
54+
assert result == expected
55+
return check
56+
57+
58+
@with_disk_variants(create_test_graph, variants=("graph", "persistent_graph"))
59+
def test_edges_src_property_any_equals():
60+
def check(graph):
61+
# src node "d" doesn't exist as src; src of edges are a,b,c; node "a" has prop8 = [2,3,3]
62+
expr = filter.Edge.src().property("prop8").temporal().any().any() == 3
63+
result = sorted(graph.filter(expr).edges.id)
64+
expected = sorted([("a", "d")])
65+
assert result == expected
66+
return check
67+
68+
69+
@with_disk_variants(create_test_graph, variants=("graph", "persistent_graph"))
70+
def test_edges_src_metadata_sum_with_same_name_property():
71+
def check(graph):
72+
# src node "a" metadata prop1 sum == 36
73+
# src node "b" and "c" property prop1 < 36, they don't appear because it's property not metadata
74+
expr = filter.Edge.src().metadata("prop1").sum() <= 36
75+
result = sorted(graph.filter(expr).edges.id)
76+
expected = sorted([("a", "d")])
77+
assert result == expected
78+
return check
79+
80+
81+
@with_disk_variants(create_test_graph, variants=("graph", "persistent_graph"))
82+
def test_edges_src_metadata_avg():
83+
def check(graph):
84+
expr = filter.Edge.src().metadata("prop2").avg() <= 2.0
85+
result = sorted(graph.filter(expr).edges.id)
86+
expected = sorted([("a", "d"), ("b", "d")])
87+
assert result == expected
88+
return check
89+
90+
91+
@with_disk_variants(init_graph, variants=["graph", "event_disk_graph"])
92+
def test_edges_src_property_and_edge_property():
93+
def check(graph):
94+
expr = (filter.Edge.src().property("p2") == 2) & (
95+
filter.Edge.property("p20").temporal().any().contains("ship")
96+
)
97+
result = sorted(graph.filter(expr).edges.id)
98+
expected = sorted([("2", "3")])
99+
assert result == expected
100+
return check
101+
102+
@with_disk_variants(init_graph, variants=["graph", "event_disk_graph"])
103+
def test_edges_src_and_dst_property():
104+
def check(graph):
105+
expr = (filter.Edge.src().property("p2") == 2) & (
106+
filter.Edge.dst().property("p20").contains("boat")
107+
)
108+
result = sorted(graph.filter(expr).edges.id)
109+
expected = sorted([("2", "3")])
110+
assert result == expected
111+
return check
112+
113+
114+
@with_disk_variants(init_graph, variants=["graph", "event_disk_graph"])
115+
def test_edges_src_or_dst_property():
116+
def check(graph):
117+
expr = (filter.Edge.src().property("p2") == 2) | (
118+
filter.Edge.dst().property("p20").contains("boat")
119+
)
120+
result = sorted(graph.filter(expr).edges.id)
121+
expected = sorted([("2", "1"), ("2", "3")])
122+
assert result == expected
123+
return check
124+
125+
126+
@with_disk_variants(create_test_graph, variants=("graph", "persistent_graph"))
127+
def test_edges_src_property_and_dst_name():
128+
def check(graph):
129+
expr = (filter.Edge.src().property("prop1") >= 20) & (
130+
filter.Edge.dst().name() == "d"
131+
)
132+
result = sorted(graph.filter(expr).edges.id)
133+
expected = sorted([("a", "d"), ("c", "d")])
134+
assert result == expected
135+
return check
136+
137+
138+
@with_disk_variants(create_test_graph, variants=("graph", "persistent_graph"))
139+
def test_edges_src_metadata_and_edge_property():
140+
def check(graph):
141+
expr = (filter.Edge.src().metadata("prop1").sum() == 36) & (
142+
filter.Edge.property("eprop1") > 20
143+
)
144+
result = sorted(graph.filter(expr).edges.id)
145+
expected = sorted([("a", "d")])
146+
assert result == expected
147+
return check
148+
149+
150+
# node_type endpoint filters
151+
@with_disk_variants(init_graph, variants=["graph", "event_disk_graph"])
152+
def test_edges_src_node_type_eq():
153+
def check(graph):
154+
expr = filter.Edge.src().node_type() == "fire_nation"
155+
result = sorted(graph.filter(expr).edges.id)
156+
expected = sorted([("1", "2"), ("3", "1"), ("3", "4")])
157+
assert result == expected
158+
159+
return check
160+
161+
162+
@with_disk_variants(init_graph, variants=["graph", "event_disk_graph"])
163+
def test_edges_dst_node_type_contains():
164+
def check(graph):
165+
expr = filter.Edge.dst().node_type().contains("nomads")
166+
result = sorted(graph.filter(expr).edges.id)
167+
expected = sorted([("1", "2")])
168+
assert result == expected
169+
170+
return check
171+
172+
173+
@with_disk_variants(init_graph, variants=["graph", "event_disk_graph"])
174+
def test_edges_src_and_dst_node_type():
175+
def check(graph):
176+
expr = (
177+
filter.Edge.src().node_type().starts_with("fire")
178+
& filter.Edge.dst().node_type().contains("nomads")
179+
)
180+
result = sorted(graph.filter(expr).edges.id)
181+
expected = sorted([("1", "2")])
182+
assert result == expected
183+
184+
return check
185+
186+
187+
@with_disk_variants(init_graph, variants=["graph", "event_disk_graph"])
188+
def test_edges_src_or_dst_node_type():
189+
def check(graph):
190+
expr = (
191+
(filter.Edge.src().node_type() == "air_nomads")
192+
| (filter.Edge.dst().node_type() == "fire_nation")
193+
)
194+
result = sorted(graph.filter(expr).edges.id)
195+
expected = sorted([("2", "3"), ("2", "1"), ("3", "1")])
196+
assert result == expected
197+
198+
return check
199+
200+
201+
@with_disk_variants(init_graph, variants=["graph", "event_disk_graph"])
202+
def test_edges_not_src_node_type():
203+
def check(graph):
204+
expr = ~filter.Edge.src().node_type().contains("fire")
205+
result = sorted(graph.filter(expr).edges.id)
206+
expected = sorted(
207+
[
208+
("2", "3"),
209+
("2", "1"),
210+
("David Gilmour", "John Mayer"),
211+
("John Mayer", "Jimmy Page"),
212+
]
213+
)
214+
assert result == expected
215+
216+
return check
217+
218+
219+
@with_disk_variants(create_test_graph, variants=("graph", "persistent_graph"))
220+
def test_edges_src_node_type_eq_compose_with_edge_prop():
221+
def check(graph):
222+
# edge ("c","d") has eprop1 > 20 but src node_type isn't fire_nation, so not included here
223+
expr = (
224+
(filter.Edge.src().node_type() == "fire_nation")
225+
& (filter.Edge.property("eprop1") > 20)
226+
)
227+
result = sorted(graph.filter(expr).edges.id)
228+
expected = sorted([("a", "d")])
229+
assert result == expected
230+
231+
return check

0 commit comments

Comments
 (0)