table.core.js 5.6 KB
Newer Older
T
taoqili 已提交
1 2 3 4 5 6 7
/**
 * Created with JetBrains PhpStorm.
 * User: taoqili
 * Date: 13-2-21
 * Time: 下午1:31
 * To change this template use File | Settings | File Templates.
 */
T
taoqili 已提交
8 9 10 11 12 13 14
function getTable(str) {
    var div = document.getElementById("testTable");
    if(!div){
        div = document.createElement("div");
        div.id = "testTable";
        document.body.appendChild(div);
    }
T
taoqili 已提交
15
    div.innerHTML = "<table border='1'>" + str + "</table>";
T
taoqili 已提交
16 17
    return div.firstChild;
}
T
taoqili 已提交
18
UT = UE.UETable;
T
taoqili 已提交
19
test("create UETable",function(){
T
taoqili 已提交
20
    var table = getTable("<tr><td>ddd</td></tr>"),
T
taoqili 已提交
21
        ut = new UT(table);
T
taoqili 已提交
22
    ok(ut.table === table,"UT对象创建成功");
T
taoqili 已提交
23
    ok(ut.colsNum == 1 && ut.rowsNum == 1,"单元格行、列数为1");
T
taoqili 已提交
24 25
});

T
taoqili 已提交
26 27 28
test("getMaxRows",function(){
    var table = getTable("<tr><td>1</td><td>2</td><td>3</td></tr>" +
                         "<tr><td>1</td><td>2</td><td>3</td></tr>"),
T
taoqili 已提交
29
        ut = new UT(table);
T
taoqili 已提交
30 31
    var maxRows = ut.getMaxRows();
    equal(maxRows,2,"最大行数为2");
T
taoqili 已提交
32
    table = getTable("<tr><td rowspan='3'>1</td><td>2</td><td rowspan='2'>3</td></tr>" +
T
taoqili 已提交
33
                     "<tr><td>2</td></tr>");
T
taoqili 已提交
34 35
    ut = new UT(table);
    maxRows = ut.getMaxRows();
T
taoqili 已提交
36 37 38 39 40 41 42 43
    equal(maxRows,3,"最大行数为3");
});
test("getMaxCols",function(){
    var table = getTable("<tr><td>1</td><td>2</td><td>3</td></tr>" +
                         "<tr><td>1</td><td>2</td><td>3</td></tr>"),
        ut = new UT(table);
    var maxCols = ut.getMaxCols();
    equal(maxCols,3,"最大列数为3");
T
taoqili 已提交
44

T
taoqili 已提交
45 46 47 48 49
    table = getTable("<tr><td rowspan='3'>1</td><td>2</td><td rowspan='2'>3</td></tr>" +
        "<tr><td>2</td><td colspan='3'></td></tr>");
    ut = new UT(table);
    maxCols = ut.getMaxCols();
    equal(maxCols,6,"最大列数为6");
T
taoqili 已提交
50 51 52 53 54 55 56 57 58 59 60
});

test("getSameEndPosCells",function(){
    var table = getTable("<tr><td rowspan='2'>1</td><td>2</td><td>3</td></tr>" +
                         "<tr><td>2</td><td>3</td></tr>"),
        ut = new UT(table);
    var cell = table.rows[0].cells[0],
        cells1 = ut.getSameEndPosCells(cell,"x"),
        cells2 = ut.getSameEndPosCells(cell,"y");
    ok(cells1.length == 1, "获取到同样X轴结尾位置的cell1个");
    ok(cells2.length == 2, "获取到同样Y轴结尾位置的cell2个");
T
taoqili 已提交
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
});

test("getHSideCell",function(){
    var table = getTable("<tr><td rowspan='2'>1</td><td>2</td><td>3</td></tr>" +
        "<tr><td>2</td><td>3</td></tr>"),
        ut = new UT(table);
    var rows = table.rows,
        cell = rows[1].cells[1],
        cell1 = ut.getHSideCell(cell),
        cell2 = ut.getHSideCell(cell,true);
    equal(cell1,rows[1].cells[0],"左边单元格");
    equal(cell2,null,"位于右边缘的单元格无右邻居单元格");
    equal(ut.getHSideCell(rows[0][0]),null,"位于左边缘的单元格无左邻居单元格");
});

test("getVSideCell",function(){
    var table = getTable("<tr><td rowspan='2'>1</td><td>2</td><td>3</td></tr>" +
            "<tr><td>2</td><td>3</td></tr>"),
        ut = new UT(table);
    var rows = table.rows,
        cell = rows[1].cells[1],
        cell1 = ut.getVSideCell(cell),
        cell2 = ut.getVSideCell(cell,true),
        cell3 = ut.getVSideCell(cell,true,true);
    equal(cell1,rows[0].cells[2],"上边单元格");
    equal(cell2,null,"位于下边缘的单元格无下邻居单元格");
    equal(cell3,null,"位于左边缘的单元格无左邻居单元格");
});
test("setCellContent",function(){
    var table = getTable("<tr><td rowspan='2'>1</td><td>2</td><td>3</td></tr>" +
            "<tr><td>2</td><td>3</td></tr>"),
        ut = new UT(table);
    var cell = table.rows[0].cells[0];
    ut.setCellContent(cell,"这是测试内容");
    equal(cell.innerHTML,"这是测试内容","设置了正确的内容");
    ut.setCellContent(cell);
    equal(cell.innerHTML,browser.ie ? domUtils.fillChar : "<br>");
});

test("cloneCell",function(){
    var table = getTable("<tr><td style='border-top-color: red;border-bottom-color: green' rowspan='2'>1</td><td>2</td><td>3</td></tr>" +
            "<tr><td class='selectedClass'>2</td><td>3</td></tr>"),
        ut = new UT(table);

    var cell = ut.cloneCell(table.rows[0].cells[0]);
    equal(cell.rowSpan,2,"clone了一个2行一列的单元格");
    equal(cell.style.borderTopColor,"green","上边框的颜色将会被下边框取代");
    cell = ut.cloneCell(table.rows[0].cells[0],true);
    ok(cell.rowSpan,1,"忽略被合并单元格时将会充值单元格的rowspan和colspan为1")
});

T
taoqili 已提交
112 113 114


test("getCellsRange、getCells",function(){
T
taoqili 已提交
115 116 117
    var table = getTable("<tr><td rowspan='2'>1</td><td>2</td><td>3</td></tr>" +
            "<tr><td class='selectedClass'>2</td><td>3</td></tr>"),
        ut = new UT(table);
T
taoqili 已提交
118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
    var range = ut.getCellsRange(table.rows[0].cells[1],table.rows[1].cells[0]);
    ok(range.beginRowIndex===0 && range.beginColIndex===1 && range.endRowIndex===1 && range.endColIndex===1,"获取到range")

    var cells = ut.getCells(range);
    ok(cells.length ==2,"获取到2个单元格");
    ok(cells[0] == table.rows[0].cells[1],"第一个单元格存在");
});

test("insertRow、deleterRow",function(){
    var table = getTable("<tr><td rowspan='2'>1</td><td>2</td><td>3</td></tr>" +
            "<tr><td class='selectedClass'>2</td><td>3</td></tr>"),
        ut = new UT(table);

    var cellPrototype = document.createElement("td");
    cellPrototype.innerHTML = "aa";
    cellPrototype.setAttribute("vAlign","top");
    ut.insertRow(2,cellPrototype);
    ok(table.rows.length ===3,"行数变成3行");
    ok(table.rows[2].cells[0].getAttribute("vAlign") =="top","新插入的单元格中包含原型单元格中的属性");
T
taoqili 已提交
137

T
taoqili 已提交
138
});