@@ -79,3 +79,142 @@ def test_graph_union():
7979 u = ret .graph_union (g1 , g2 )
8080 assert len (u .edges ()) == len (g1 .edges ()) + 1
8181 assert set (u .vertices ()) == set (g2 .vertices ())
82+
83+
84+ def test_square_grid_graph ():
85+ g = ret .square_grid_graph [ret .int64 ](side = 3 , dims = 2 )
86+ assert len (g .vertices ()) == 9
87+ assert len (g .edges ()) == 12
88+
89+
90+ def test_regular_ring_lattice ():
91+ g = ret .regular_ring_lattice [ret .int64 ](size = 6 , degree = 2 )
92+ assert len (g .vertices ()) == 6
93+ assert all (ret .degree (g , v ) == 2 for v in g .vertices ())
94+
95+
96+ def test_random_barabasi_albert_graph ():
97+ gen = ret .mersenne_twister (42 )
98+ g = ret .random_barabasi_albert_graph [ret .int64 ](
99+ n = 10 , m = 2 , random_state = gen )
100+ assert len (g .vertices ()) == 10
101+ assert len (g .edges ()) == 2 * (10 - 2 )
102+
103+
104+ def test_random_degree_sequence_graph ():
105+ gen = ret .mersenne_twister (42 )
106+ degree_seq = [2 , 2 , 2 , 2 ]
107+ g = ret .random_degree_sequence_graph [ret .int64 ](
108+ degree_sequence = degree_seq , random_state = gen )
109+ assert len (g .vertices ()) == 4
110+ assert all (ret .degree (g , v ) == 2 for v in g .vertices ())
111+
112+
113+ def test_random_directed_degree_sequence_graph ():
114+ gen = ret .mersenne_twister (42 )
115+ in_out_seq = [(1 , 1 ), (1 , 1 ), (1 , 1 )]
116+ g = ret .random_directed_degree_sequence_graph [ret .int64 ](
117+ in_out_degree_sequence = in_out_seq , random_state = gen )
118+ assert len (g .vertices ()) == 3
119+ for v in g .vertices ():
120+ assert ret .in_degree (g , v ) == 1
121+ assert ret .out_degree (g , v ) == 1
122+
123+
124+ def test_random_expected_degree_sequence_graph ():
125+ gen = ret .mersenne_twister (42 )
126+ weight_seq = [2.0 , 2.0 , 2.0 , 2.0 ]
127+ g = ret .random_expected_degree_sequence_graph [ret .int64 ](
128+ weight_sequence = weight_seq , random_state = gen )
129+ assert len (g .vertices ()) == 4
130+
131+
132+ def test_random_directed_expected_degree_sequence_graph ():
133+ gen = ret .mersenne_twister (42 )
134+ in_out_weight_seq = [(1.0 , 1.0 ), (1.0 , 1.0 ), (1.0 , 1.0 )]
135+ g = ret .random_directed_expected_degree_sequence_graph [ret .int64 ](
136+ in_out_weight_sequence = in_out_weight_seq , random_state = gen )
137+ assert len (g .vertices ()) == 3
138+
139+
140+ def test_random_uniform_hypergraph ():
141+ gen = ret .mersenne_twister (42 )
142+ g = ret .random_uniform_hypergraph [ret .int64 ](
143+ size = 5 , edge_degree = 3 , edge_prob = 0.5 , random_state = gen )
144+ assert len (g .vertices ()) == 5
145+ for e in g .edges ():
146+ assert len (e .incident_verts ()) == 3
147+
148+
149+ def test_random_directed_uniform_hypergraph ():
150+ gen = ret .mersenne_twister (42 )
151+ g = ret .random_directed_uniform_hypergraph [ret .int64 ](
152+ size = 5 , edge_in_degree = 2 , edge_out_degree = 2 ,
153+ edge_prob = 0.5 , random_state = gen )
154+ assert len (g .vertices ()) == 5
155+
156+
157+ def test_random_expected_degree_sequence_hypergraph ():
158+ gen = ret .mersenne_twister (42 )
159+ vertex_weights = [3.0 , 3.0 , 3.0 , 3.0 ]
160+ edge_weights = [4.0 , 4.0 , 4.0 ]
161+ g = ret .random_expected_degree_sequence_hypergraph [ret .int64 ](
162+ vertex_weight_sequence = vertex_weights ,
163+ edge_weight_sequence = edge_weights , random_state = gen )
164+ assert len (g .vertices ()) == 4
165+
166+
167+ def test_random_directed_expected_degree_sequence_hypergraph ():
168+ gen = ret .mersenne_twister (42 )
169+ vertex_in_out_weights = [(1.0 , 1.0 ), (1.0 , 1.0 ),
170+ (1.0 , 1.0 )]
171+ edge_in_out_weights = [(3.0 , 3.0 )]
172+ g = ret .random_directed_expected_degree_sequence_hypergraph [ret .int64 ](
173+ vertex_in_out_weight_sequence = vertex_in_out_weights ,
174+ edge_in_out_weight_sequence = edge_in_out_weights ,
175+ random_state = gen )
176+ assert len (g .vertices ()) == 3
177+
178+
179+ def test_random_fully_mixed_temporal_network ():
180+ gen = ret .mersenne_twister (42 )
181+ g = ret .random_fully_mixed_temporal_network [ret .int64 ](
182+ size = 4 , rate = 1.0 , max_t = 10.0 , random_state = gen )
183+ assert len (g .vertices ()) == 4
184+ t0 , t1 = ret .time_window (g )
185+ assert t0 >= 0.0
186+ assert t1 <= 10.0
187+
188+
189+ def test_random_directed_fully_mixed_temporal_network ():
190+ gen = ret .mersenne_twister (42 )
191+ g = ret .random_directed_fully_mixed_temporal_network [ret .int64 ](
192+ size = 4 , rate = 1.0 , max_t = 10.0 , random_state = gen )
193+ assert len (g .vertices ()) == 4
194+ t0 , t1 = ret .time_window (g )
195+ assert t0 >= 0.0
196+ assert t1 <= 10.0
197+
198+
199+ def test_random_link_activation_temporal_network ():
200+ gen = ret .mersenne_twister (42 )
201+ static_net = ret .complete_graph [ret .int64 ](size = 3 )
202+ iet_dist = ret .exponential_distribution [ret .double ](lmbda = 1.0 )
203+ g = ret .random_link_activation_temporal_network (
204+ base_net = static_net , max_t = 5.0 , iet_dist = iet_dist , random_state = gen )
205+ assert len (g .vertices ()) == 3
206+ t0 , t1 = ret .time_window (g )
207+ assert t0 >= 0.0
208+ assert t1 <= 5.0
209+
210+
211+ def test_random_node_activation_temporal_network ():
212+ gen = ret .mersenne_twister (42 )
213+ base_net = ret .complete_graph [ret .int64 ](size = 4 )
214+ iet_dist = ret .exponential_distribution [ret .double ](lmbda = 1.0 )
215+ g = ret .random_node_activation_temporal_network (
216+ base_net = base_net , max_t = 5.0 , iet_dist = iet_dist , random_state = gen )
217+ assert len (g .vertices ()) == 4
218+ t0 , t1 = ret .time_window (g )
219+ assert t0 >= 0.0
220+ assert t1 <= 5.0
0 commit comments