code: def test_eulerian_path_eulerian_circuit(self):
      G = nx.DiGraph()
      result = [(1, 2), (2, 3), (3, 4), (4, 1)]
      result2 = [(2, 3), (3, 4), (4, 1), (1, 2)]
      result3 = [(3, 4), (4, 1), (1, 2), (2, 3)]
      G.add_edges_from(result)
      assert result == list(nx.eulerian_path(G))
      assert result == list(nx.eulerian_path(G, source=1))
      assert result2 == list(nx.eulerian_path(G, source=2))
      assert result3 == list(nx.eulerian_path(G, source=3))
  
imports: import collections
  import pytest
  import networkx
label_desc: Use image node_id 4 for calling the TestEulerianPath obj's underlying member method code with example usage: obj.test_eulerian_path_eulerian_circuit() without return types