def test_seq_dump_padded(self): node = Node([ Node(1, Location("s", 1, 1)), Node("a", Location("k", 2, 3)), ], Location("u", 5, 6)) assert node.dump(" ") == ("list(u:5:6)[\n" " int(s:1:1)(1),\n" " str(k:2:3)(a)\n" " ]")
def test_constructor(self): node = Node("value", Location("name", 1, 2)) assert node.value == "value" assert node.loc.stream_name == "name" assert node.loc.line == 1 assert node.loc.column == 2
def _pos(self, node): # Convert 0-based indices to 1-based (text editor) marks return Location( self._stream_name, node.start_mark.line + 1, node.start_mark.column + 1, )
def test_build_creates_new_instance(self, data): obj = Base.build(Node(data, Location("stream", 1, 2))) assert obj.data == data assert obj.loc.stream_name == "stream" assert obj.loc.line == 1 assert obj.loc.column == 2
def test_str(self): assert str(Node(0, Location("a", 1, 2))) == "Node(a:1:2)[0]"
def __init__(self, value, loc=None): self.value = value self.loc = loc or Location("", 0, 0)
def test_str(self, data): assert str(data) == str(Base(data, Location("s", 4, 5)))
def test_bare_simple(self, data): assert Void(data, Location("path", 2, 3)).bare == data
def test_str(self): assert str(Location("stream", 1, 2)) == "stream:1:2"
def test_str_dump(self): node = Node("string", Location("s", 1, 1)) assert node.dump() == "str(s:1:1)(string)"
def test_scalar_ignores_padding(self): node = Node("string", Location("s", 1, 1)) assert node.dump(" ") == "str(s:1:1)(string)"
def test_sfloat_dump(self): node = Node(123.456, Location("s", 1, 1)) assert node.dump() == "float(s:1:1)(123.456)"
def test_int_dump(self): node = Node(123, Location("s", 1, 1)) assert node.dump() == "int(s:1:1)(123)"
def test_bool_dump(self): node = Node(True, Location("s", 1, 1)) assert node.dump() == "bool(s:1:1)(True)"
def test_null_dump(self): node = Node(None, Location("s", 1, 1)) assert node.dump() == "NoneType(s:1:1)(None)"
def test_str(self): assert str(Node(0, Location("a", 1, 2))) == "int(a:1:2)(0)"