Skip to content

Commit

Permalink
test: add test for node magic method
Browse files Browse the repository at this point in the history
part of #389
  • Loading branch information
HerringtonDarkholme committed Oct 27, 2023
1 parent 79c663a commit d6eb7b0
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 30 deletions.
51 changes: 21 additions & 30 deletions crates/pyo3/tests/test_simple.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from ast_grep_pyo3 import SgNode, SgRoot
from ast_grep_pyo3 import SgRoot

source = """
function test() {
Expand Down Expand Up @@ -52,33 +52,24 @@ def test_get_match():
def test_get_multi_match():
pass

def test_hash():
node1 = root.find(pattern="let $A = $B")
node2 = root.find(pattern="let $A = 123")
assert hash(node1) == hash(node2)

def test_get_root():
node = root.find(pattern="let a = $A")
assert node is not None
root2 = node.get_root()
assert root2.filename() == "anonymous"
# assert root2 == root


def test_find_all():
nodes = root.find_all(pattern="let $N = $V")
assert len(nodes) == 3

def assert_name(node: SgNode, text: str):
n = node.get_match("N")
assert n is not None
assert n.text() == text

assert_name(nodes[0], "a")
assert_name(nodes[1], "b")
assert_name(nodes[2], "c")

def test_field(): pass
def test_parent(): pass
def test_child(): pass
def test_ancestors(): pass
def test_next(): pass
def test_next_all(): pass
def test_prev(): pass
def test_prev_all(): pass
def test_eq():
node1 = root.find(pattern="let $A = $B")
node2 = root.find(pattern="let $A = 123")
assert node1 == node2

def test_str():
node1 = root.find(pattern="let $A = $B")
assert str(node1) == "lexical_declaration@(1,2)-(1,13)"

def test_repr_short():
node1 = root.find(pattern="let $A = $B")
assert repr(node1) == "SgNode(`let a...`, kind=lexical_declaration, range=(1,2)-(1,13))"

def test_repr_long():
node1 = root.find(pattern="123")
assert repr(node1) == "SgNode(`123`, kind=number, range=(1,10)-(1,13))"
41 changes: 41 additions & 0 deletions crates/pyo3/tests/test_traversal.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
from ast_grep_pyo3 import SgNode, SgRoot

source = """
function test() {
let a = 123
let b = 456
let c = 789
}
""".strip()
sg = SgRoot(source, "javascript")
root = sg.root()

def test_get_root():
node = root.find(pattern="let a = $A")
assert node is not None
root2 = node.get_root()
assert root2.filename() == "anonymous"
# assert root2 == root


def test_find_all():
nodes = root.find_all(pattern="let $N = $V")
assert len(nodes) == 3

def assert_name(node: SgNode, text: str):
n = node.get_match("N")
assert n is not None
assert n.text() == text

assert_name(nodes[0], "a")
assert_name(nodes[1], "b")
assert_name(nodes[2], "c")

def test_field(): pass
def test_parent(): pass
def test_child(): pass
def test_ancestors(): pass
def test_next(): pass
def test_next_all(): pass
def test_prev(): pass
def test_prev_all(): pass

0 comments on commit d6eb7b0

Please sign in to comment.