42 lines
1.0 KiB
Python
42 lines
1.0 KiB
Python
import easygraph as eg
|
|
import pytest
|
|
|
|
from easygraph.functions.basic import average_degree
|
|
|
|
|
|
def test_average_degree_basic():
|
|
G = eg.Graph()
|
|
G.add_edges_from([(1, 2), (2, 3)])
|
|
assert average_degree(G) == pytest.approx(4 / 3)
|
|
|
|
|
|
def test_average_degree_empty_graph():
|
|
G = eg.Graph()
|
|
with pytest.raises(ZeroDivisionError):
|
|
average_degree(G)
|
|
|
|
|
|
def test_average_degree_self_loop():
|
|
G = eg.Graph()
|
|
G.add_edge(1, 1) # self-loop
|
|
# Self-loop counts as 2 towards degree of node 1
|
|
assert average_degree(G) == pytest.approx(2.0)
|
|
|
|
|
|
def test_average_degree_with_isolated_node():
|
|
G = eg.Graph()
|
|
G.add_edges_from([(1, 2), (2, 3)])
|
|
G.add_node(4) # isolated node
|
|
assert average_degree(G) == pytest.approx(1.0)
|
|
|
|
|
|
def test_average_degree_directed_graph():
|
|
G = eg.DiGraph()
|
|
G.add_edges_from([(1, 2), (2, 3), (3, 1)])
|
|
assert average_degree(G) == pytest.approx(2.0)
|
|
|
|
|
|
def test_average_degree_invalid_input():
|
|
with pytest.raises(AttributeError):
|
|
average_degree(None)
|