         XCTAssert(NSEqualRanges(nodesAndRanges[2].range, NSRange(location: 0, length: text3.length())))
     }
 
-    func testLeafNodesWrappingRange2() {
+//    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: 0, length: mainNode.length() - 1)
+        let range = NSRange(location: 1, length: mainNode.length() - 1)
 
         let nodesAndRanges = mainNode.leafNodesWrapping(range)
 

    ///     - (node: p, range: (0...5))
    ///     - (node: div, range: (11...5))
    ///
    func testLowestBlockLevelElements2() {

        let textPart1 = "Hello "
        let textPart2 = "there"
        let textPart3 = " man!"

        let textNode1 = TextNode(text: textPart1)
        let textNode2 = TextNode(text: textPart2)
        let textNode3 = TextNode(text: textPart3)

        let paragraph = ElementNode(name: "p", attributes: [], children: [textNode2])
        let div = ElementNode(name: "div", attributes: [], children: [textNode1, paragraph, textNode3])

        let results = div.lowestBlockLevelElements(intersectingRange: div.range())

        XCTAssertEqual(results.count, 3)
        XCTAssertEqual(results[0].element.name, "div")
        XCTAssertEqual(results[0].intersection.location, 0)
        XCTAssertEqual(results[0].intersection.length, 6)
        XCTAssertEqual(results[1].element.name, "p")
        XCTAssertEqual(results[1].intersection.location, 0)
        XCTAssertEqual(results[1].intersection.length, 5)
        XCTAssertEqual(results[2].element.name, "div")
        XCTAssertEqual(results[2].intersection.location, 11)
        XCTAssertEqual(results[2].intersection.length, 5)
    }


    /// Tests obtaining the block-level elements intercepting the full range of the following

    /// The results should be:
    ///     - The output match the input, no splitting should occur.
    ///
//    func testSplitAtLocation2() {
//        
//        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 = 0
//        
//        paragraph.split(atLocation: splitLocation)
//        
//        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!")
//    }

    /// Tests that splitting an element node at a specified text location works fine.
    ///
    /// HTML string: <div><p>Hello World!</p></div>
