import json import networkx as nx from abp import GraphState, NXGraphState from abp import clifford from abp.util import xyz import mock def test_json_basic(): """ Test that we can export to JSON """ g = mock.simple_graph() js = g.to_json() assert "adj" in js assert "node" in js def test_tuple_keys(): """ Test that we can use tuple-ish keys """ g = NXGraphState() g.add_qubit("string") g.add_qubit((1, 2, 3)) g.add_edge((1, 2, 3), "string") json.dumps(g.to_json(True)) def networkx_test(): """ Test that NXGraphStates really behave like networkx graphs """ g = NXGraphState() g.add_qubit(0, position=xyz(10, 0, 0)) g.add_qubit(1, position=xyz(1, 0, 0)) g.act_hadamard(0) g.act_hadamard(1) g.act_cz(0, 1) g.copy() def test_from_nx(): """ Test that making graphs from networkx objects goes smoothly """ g = nx.random_geometric_graph(100, 2) psi = NXGraphState(g) assert psi.node[0]["vop"] == 0 assert len(psi.edges()) > 0 psi.measure(0, "px", detail=True) psi = NXGraphState(nx.Graph(((0, 1),)))