class_docstr: Test individual steps for 0-hop and 1-hop
class_docstr_tok: ["Test","individual","steps","for","0-hop","and","1-hop"]
code: def test_tricky_topology_1(self):
      nodes = pd.DataFrame(
          {"n": ["a1", "a2", "b1", "b2"], "t": [0, 0, 1, 1]}
      )
  
      edges = pd.DataFrame({"s": ["a1", "a1"], "d": ["a2", "b1"]})
  
      n_out = pd.DataFrame({"n": ["a1", "a2"], "t": [0, 0]})
  
      e_out = pd.DataFrame({"s": ["a1"], "d": ["a2"]})
  
      g = CGFull().edges(edges, "s", "d").nodes(nodes, "n")
  
      g2 = g.chain([n({"t": 0}), e_undirected(), n({"t": 0})])
  
      if logger.isEnabledFor(logging.DEBUG):
          logger.debug("\nNODES\n")
          logger.debug(g2._nodes.to_dict(orient="records"))
          logger.debug("\nEDGES\n")
          logger.debug(g2._edges.to_dict(orient="records"))
  
      compare_graphs(
          g2,
          n_out.to_dict(orient="records"),
          e_out.to_dict(orient="records"),
      )
  
imports: from functools import lru_cache
  from typing import Dict, List
  import logging
  import pandas
  from common import NoAuthTestCase
  from graphistry.compute.ast import n, e_forward, e_reverse, e_undirected, is_in
  from graphistry.tests.test_compute import CGFull
  from graphistry.tests.test_compute_hops import hops_graph
  from graphistry.util import setup_logger
label_desc: Use image node_id 8 for calling the TestComputeChainWavefront1Mixin obj's underlying member method code with example usage: obj.test_tricky_topology_1() without return types