test('create a html layout', function () {
    var document = new Document();
    var fragment = document.createDocumentFragment();
    fragment.appendChild(new Doctype());
    var html = document.createElement('html');
    fragment.appendChild(html);
    var head = document.createElement('head');
    html.appendChild(head);
    var body = document.createElement('body');
    html.appendChild(body);
    expect(fragment.innerHTML, '<!DOCTYPE html><html><head></head><body></body></html>');
});
test('create a html layout', () => {
    let document = new Document();
    let fragment = document.createDocumentFragment();
    fragment.appendChild(new Doctype());
    let html = document.createElement('html');
    fragment.appendChild(html);
    let head = document.createElement('head');
    html.appendChild(head);
    let body = document.createElement('body');
    html.appendChild(body);
    expect(fragment.innerHTML, '<!DOCTYPE html><html><head></head><body></body></html>');
});
test('appendChild DocumentFragment', function () {
    var parentNode = new ParentNode();
    var span1 = document.createElement('span');
    var span2 = document.createElement('span');
    var fragment = document.createDocumentFragment();
    fragment.appendChild(span1);
    expect(fragment.childNodes.length, 1);
    expect(fragment.firstChild, span1);
    expect(fragment.lastChild, span1);
    fragment.appendChild(span2);
    expect(fragment.childNodes.length, 2);

    var result = parentNode.appendChild(fragment);
    expect(result, fragment);
    expect(fragment.childNodes.length, 0);
    expect(parentNode.childNodes.length, 2);
    expect(parentNode.firstChild, span1);
    expect(parentNode.lastChild, span2);
});
test('insertBefore fragment', function () {
    var parentNode = new ParentNode();
    var span1 = document.createElement('span');
    var span2 = document.createElement('span');
    parentNode.appendChild(span1);
    parentNode.appendChild(span2);

    var fragment = document.createDocumentFragment();
    var span3 = document.createElement('span');
    var span4 = document.createElement('span');
    fragment.appendChild(span3);
    fragment.appendChild(span4);

    var result = parentNode.insertBefore(fragment, span1);
    expect(result, fragment);
    expect(parentNode.childNodes.length, 4);
    expect(fragment.childNodes.length, 0);
    expect(parentNode.childNodes[0], span3);
    expect(parentNode.childNodes[1], span4);
    expect(parentNode.childNodes[2], span1);
    expect(parentNode.childNodes[3], span2);
});
test('Clone documentFragment node deep', function () {
    var fragment = document.createDocumentFragment();
    fragment.innerHTML = '<p>some node text</p><span></span>';
    var copy = fragment.cloneNode(true);
    expect(copy.innerHTML, '<p>some node text</p><span></span>');
});