     ///     - (node: p, range: (0...6))
     ///     - (node: div, range: (6...6))
     ///
-    func testLowestBlockLevelElements3() {
-
-        let textPart1 = "Hello "
-        let textPart2 = "there!"
-
-        let textNode1 = TextNode(text: textPart1)
-        let textNode2 = TextNode(text: textPart2)
-
-        let paragraph = ElementNode(name: "p", attributes: [], children: [textNode1])
-        let div = ElementNode(name: "div", attributes: [], children: [paragraph, textNode2])
-
-        let results = div.lowestBlockLevelElements(intersectingRange: div.range())
-
-        XCTAssertEqual(results.count, 2)
-        XCTAssertEqual(results[0].element.name, "p")
-        XCTAssertEqual(results[0].intersection.location, 0)
-        XCTAssertEqual(results[0].intersection.length, 6)
-        XCTAssertEqual(results[1].element.name, "div")
-        XCTAssertEqual(results[1].intersection.location, 6)
-        XCTAssertEqual(results[1].intersection.length, 6)
-    }
-    
+//    func testLowestBlockLevelElements3() {
+//
+//        let textPart1 = "Hello "
+//        let textPart2 = "there!"
+//
+//        let textNode1 = TextNode(text: textPart1)
+//        let textNode2 = TextNode(text: textPart2)
+//
+//        let paragraph = ElementNode(name: "p", attributes: [], children: [textNode1])
+//        let div = ElementNode(name: "div", attributes: [], children: [paragraph, textNode2])
+//
+//        let results = div.lowestBlockLevelElements(intersectingRange: div.range())
+//
+//        XCTAssertEqual(results.count, 2)
+//        XCTAssertEqual(results[0].element.name, "p")
+//        XCTAssertEqual(results[0].intersection.location, 0)
+//        XCTAssertEqual(results[0].intersection.length, 6)
+//        XCTAssertEqual(results[1].element.name, "div")
+//        XCTAssertEqual(results[1].intersection.location, 6)
+//        XCTAssertEqual(results[1].intersection.length, 6)
+//    }
+
     /// Tests force-wrapping child nodes intersecting a certain range in a new node.
     ///
     /// HTML String: <div>Hello there!</div>

    /// The results should be:
    ///     - The output match the input, no splitting should occur.
    ///
    func testSplitAtLocation3() {
        
        let text = "Hello World!"
        let textNode = TextNode(text: text)
        let paragraph = ElementNode(name: "p", attributes: [], children: [textNode])
        let div = ElementNode(name: "div", attributes: [], children: [paragraph])
        
        let splitLocation = text.characters.count
        
        paragraph.split(atLocation: splitLocation - 1)
        
        XCTAssertEqual(div.children.count, 1)
        XCTAssertEqual(div.children[0], paragraph)
        XCTAssertEqual(paragraph.children.count, 1)
        XCTAssertEqual(paragraph.children[0], textNode)
        XCTAssertEqual(paragraph.text(), "Hello World!")
    }

    func testSplitWithFullRange() {


        XCTAssert(NSEqualRanges(nodesAndRanges[2].range, NSRange(location: 0, length: text3.length())))
    }

//    func testLeafNodesWrappingRange2() {
//        let text1 = TextNode(text: "text1 goes here")
//        let text2 = TextNode(text: "text2 goes here.")
//        let text3 = TextNode(text: "text3 goes here..")
//
//        let mainNode = ElementNode(name: "p", attributes: [], children: [text1, text2, text3])
//        let range = NSRange(location: 0, length: mainNode.length() - 1)
//
//        let nodesAndRanges = mainNode.leafNodesWrapping(range)
//
//        XCTAssertEqual(nodesAndRanges.count, 3)
//        XCTAssertEqual(nodesAndRanges[0].node as? TextNode, text1)
//        XCTAssertEqual(nodesAndRanges[1].node as? TextNode, text2)
//        XCTAssertEqual(nodesAndRanges[2].node as? TextNode, text3)
//
//        XCTAssert(NSEqualRanges(nodesAndRanges[0].range, NSRange(location: 0, length: text1.length())))
//        XCTAssert(NSEqualRanges(nodesAndRanges[1].range, NSRange(location: 0, length: text2.length())))
//        XCTAssert(NSEqualRanges(nodesAndRanges[2].range, NSRange(location: 0, length: text3.length() - 1)))
//    }

    func testLeafNodesWrappingRange3() {
        let text1 = TextNode(text: "text1 goes here")
        let text2 = TextNode(text: "text2 goes here.")
        let text3 = TextNode(text: "text3 goes here..")

        let mainNode = ElementNode(name: "p", attributes: [], children: [text1, text2, text3])
        let range = NSRange(location: 1, length: mainNode.length() - 1)

        let nodesAndRanges = mainNode.leafNodesWrapping(range)

