def test_value_on_new_line(): red = node("[1, 2, 3]") assert not red.value_on_new_line red = node("(1, 2, 3)") assert not red.value_on_new_line red = node("[\n1, 2, 3]") assert red.value_on_new_line red = node("(\n1, 2, 3)") assert red.value_on_new_line
def test_on_new_line(): red = node("[1, 2,\n3]") assert not red[0].on_new_line assert not red[1].on_new_line assert red[2].on_new_line red = node("[1, 2, 3]") assert not red[0].on_new_line red = node("[\n1, 2, 3]") assert red[0].on_new_line
def test_assign_on_object_value_fst(): binop = node("ax + (z * 4)") assert binop.first.value == "ax" binop.first = {"type": "name", "value": "pouet"} assert binop.first.value == "pouet" assert binop.first.type == "name"
def test_assign_node_list_fst(): list_node = node("[1, 2, 3]") list_node.value = [{"type": "name", "value": "pouet"}] assert list_node.value[0].value == "pouet" assert list_node.value[0].type == "name" assert isinstance(list_node.value, CommaProxyList)
def test_binary_operator_minus(): binop = node("z - 42") assert binop.value == "-" assert isinstance(binop.first, NameNode) assert binop.first.value == "z" assert isinstance(binop.second, NumberNode) assert binop.second.value == "42"
def test_assign_on_object_value(): binop = node("ax + (z * 4)") binop.first = "pouet" # will be parsed as a name assert binop.first.value == "pouet" assert binop.first.type == "name" binop.first = "42" # will be parsed as a int assert binop.first.value == "42" assert binop.first.type == "number"
def test_parent_assign(): assign_node = node("a = 1 + caramba") assert assign_node.target.parent is assign_node assert assign_node.target.on_attribute == "target" assign_node.target = "plop" assert assign_node.target.parent is assign_node assert assign_node.target.on_attribute == "target" assign_node.target = {"type": "name", "value": "pouet"} assert assign_node.target.parent is assign_node assert assign_node.target.on_attribute == "target" assign_node.target = NameNode({"type": "name", "value": "pouet"}) assert assign_node.target.parent is assign_node assert assign_node.target.on_attribute == "target"
def test_assign_node_list_mixed(): list_node = node("[1, 2, 3]") list_node.value = [ "plop", { "type": "comma", "first_formatting": [], "second_formatting": [] }, { "type": "name", "value": "pouet" } ] assert isinstance(list_node.value, CommaProxyList) assert list_node.value[0].value == "plop" assert list_node.value[0].type == "name" assert list_node.value.node_list[1].type == "comma" assert list_node.value[1].value == "pouet" assert list_node.value[1].type == "name" assert list_node.value.node_list[2].value == "pouet" assert list_node.value.node_list[2].type == "name"
def test_filter(): red = node("[1, 2, 3]") filtered_list = red.value.filter(lambda x: x.value == "2") assert isinstance(filtered_list, NodeList) assert filtered_list.dumps() == "2"
def test_hide(): red = node("[1, 2, 3]") red.hide(red[0]) assert red.dumps() == "[2, 3]"
def test_copy_raise(): code = "raise NotImplementedError" el = node(code).copy() assert el.dumps() == code
def test_node_previous_neighbors(): red = node("[1, 2, 3]") assert list(red[2].previous_neighbors) == list(reversed(red[:2]))
def test_node_previous_intuitive(): red = node("[1, 2, 3]") assert red[1].previous_intuitive == red[0]
def test_node_next_intuitive(): red = node("[1, 2, 3]") assert red[0].next_intuitive == red[1]
def test_node_displayable_previous(): node_list = node("[1, 2, 3]") node_list.hide(node_list[1]) assert node_list[2].displayable_previous == node_list[0] assert node_list[0].displayable_previous is None
def test_node_displayable_next(): node_list = node("[1, 2, 3]") node_list.hide(node_list[1]) assert node_list[0].displayable_next == node_list[2] assert node_list[2].displayable_next is None
def test_comment_el(): code = "def a():\n pass" el = "# comment" red = node(code) red.append(el)
def test_decrease_indentation_space_node(): code = [SpaceNode({"type": "space", "value": "\n "}), node("# hello")] red = NodeList(code) red.decrease_indentation(" ") assert red.dumps() == "\n# hello"
def test_binary_operator_more_complex(): binop = node("ax + (z * 4)") assert binop.first.value == "ax"
def test_associated_sep(): red = node("[1, 2]") assert red[0].associated_sep.baron_type == "comma" assert red[1].associated_sep is None
def test_assign_on_string_value(): binop = node("ax + (z * 4)") binop.first.value = "pouet" assert binop.first.value == "pouet"
def test_pass(): red = node("pass") assert isinstance(red, PassNode)
def test_assign_list_index(): list_node = node("[1, 2, 3]") list_node[0] = "pouet" assert list_node[0].parent == list_node.value assert list_node[0].value == "pouet"
def test_endl(): red = RedBaron("# line1\n#line2") assert red[0].endl.baron_type == "endl" assert red[1].endl is None red = node("[1, 2,\n]") assert red[1].endl.baron_type == "endl"
def test_sort(): import_node = node("from m import b, a, c") import_node.targets.sort(key=lambda el: el.value) assert import_node.dumps() == "from m import a, b, c"
def test_find_in_data(): red = RedBaron("a\nb") assert red.value.find_in_data(red[0])[0] is red[0] assert red.value.find_in_data(red[1])[0] is red[1] with pytest.raises(ValueError): red.value.find_in_data(node("a"))
def test_node_next_neighbors(): red = node("[1, 2, 3]") assert list(red[2].next_neighbors) == list(red[3:])
def test_indentation_import(): red = node("from a import (\na1)") assert red.targets.el_indentation == " "
def test_int(): red = node("1") assert isinstance(red, NumberNode) assert red.value == "1"