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_hop_chain_1_reverse(self):
      g = chain_graph()
  
      g_out_nodes_hop = []
      g_out_nodes = []
      g_out_edges = []
  
      g2_reverse = g.hop(
          nodes=pd.DataFrame({"n": ["a"]}),
          hops=1,
          to_fixed_point=False,
          direction="reverse",
          source_node_match=None,
          edge_match=None,
          destination_node_match=None,
          return_as_wave_front=True,
      )
      compare_graphs(g2_reverse, g_out_nodes_hop, g_out_edges)
  
      g2_reverse_triple = g.chain(
          [e_reverse({}, source_node_match={"n": "a"}, hops=1)]
      )
      compare_graphs(g2_reverse_triple, g_out_nodes, g_out_edges)
  
      g2_reverse_chain = g.chain([n({"n": "a"}), e_reverse({}, hops=1)])
      compare_graphs(g2_reverse_chain, g_out_nodes, g_out_edges)
  
      g2_reverse_chain_closed = g.chain(
          [n({"n": "a"}), e_reverse({}, hops=1), n({})]
      )
      compare_graphs(g2_reverse_chain_closed, g_out_nodes, g_out_edges)
  
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 3 for calling the TestComputeChainWavefront1Mixin obj's underlying member method code with example usage: obj.test_hop_chain_1_reverse() without return types