Test case details

Preparation Code

<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script> <script type="text/javascript" src="http://ajax.cdnjs.com/ajax/libs/json2/20110223/json2.js"></script> <script type="text/javascript" src="http://documentcloud.github.com/underscore/underscore-min.js"></script> <div id="dom-creation" style="display: none;">container for creating nodes with innerHTML</div> <script id="template" type="text/html">     <table>         <% $.each(models, function(i, model) { %>             <tr>                 <td><%- model.prop1 %></td>                 <td><%- model.prop2 %></td>                 <td><%- model.prop3 %></td>                 <td><%- model.prop4 %></td>                 <td><%- model.prop5 %></td>             </tr>         <% }); %>     </table> </script> <script id="template-no-with" type="text/html">     <table>         <% $.each(obj.models, function(i, model) { %>             <tr>                 <td><%- model.prop1 %></td>                 <td><%- model.prop2 %></td>                 <td><%- model.prop3 %></td>                 <td><%- model.prop4 %></td>                 <td><%- model.prop5 %></td>             </tr>         <% }); %>     </table> </script>
_.templateNoWith = function(str, data) {         var c  = _.templateSettings;         var tmpl = 'var __p=[],print=function(){__p.push.apply(__p,arguments);};' +           '__p.push(\'' +           str.replace(/\\/g, '\\\\')              .replace(/'/g, "\\'")              .replace(c.escape || noMatch, function(match, code) {                return "',_.escape(" + unescape(code) + "),'";              })              .replace(c.interpolate || noMatch, function(match, code) {                return "'," + unescape(code) + ",'";              })              .replace(c.evaluate || noMatch, function(match, code) {                return "');" + unescape(code).replace(/[\r\n\t]/g, ' ') + ";__p.push('";              })              .replace(/\r/g, '\\r')              .replace(/\n/g, '\\n')              .replace(/\t/g, '\\t')              + "');return __p.join('');";         var func = new Function('obj', '_', tmpl);         if (data) return func(data, _);         return function(data) {           return func.call(this, data, _);         };       };         var models      = [];     var modelsHtml  = [];         for (var i = 0; i < 250; i++) {         var model = {             prop1: 'prop1-' + i,             prop2: 'prop2-' + i,             prop3: 'prop3-' + i,             prop4: 'prop4-' + i,             prop5: 'prop5-' + i         };                 models.push(model);                 modelsHtml.push(             '<tr>' +                 '<td>' + model.prop1 + '</td>' +                 '<td>' + model.prop2 + '</td>' +                 '<td>' + model.prop3 + '</td>' +                 '<td>' + model.prop4 + '</td>' +                 '<td>' + model.prop5 + '</td>' +             '</tr>'         );     }         var models25        = models.slice(0, 25);     var models50        = models.slice(0, 50);     var models75        = models.slice(0, 75);     var models100       = models.slice(0, 100);     var models150       = models.slice(0, 150);     var models200       = models.slice(0, 200);     var models250       = models.slice(0, 250);         var tableHtml25     = '<table>' + modelsHtml.slice(0, 25).join('') + '</table>';     var tableHtml50     = '<table>' + modelsHtml.slice(0, 50).join('') + '</table>';     var tableHtml75     = '<table>' + modelsHtml.slice(0, 75).join('') + '</table>';     var tableHtml100    = '<table>' + modelsHtml.slice(0, 100).join('') + '</table>';     var tableHtml150    = '<table>' + modelsHtml.slice(0, 150).join('') + '</table>';     var tableHtml200    = '<table>' + modelsHtml.slice(0, 200).join('') + '</table>';     var tableHtml250    = '<table>' + modelsHtml.slice(0, 250).join('') + '</table>';         var domCreation     = document.getElementById('dom-creation');         var template        = _.template(document.getElementById('template').innerHTML);     var templateNoWith  = _.templateNoWith(document.getElementById('template-no-with').innerHTML);

Test cases

Test #1

    var div     = domCreation.innerHTML = tableHtml25;     var table   = domCreation.firstChild;

Test #2

    var div     = domCreation.innerHTML = tableHtml50;     var table   = domCreation.firstChild;

Test #3

    var div     = domCreation.innerHTML = tableHtml75;     var table   = domCreation.firstChild;

Test #4

    var div     = domCreation.innerHTML = tableHtml100;     var table   = domCreation.firstChild;

Test #5

    var div     = domCreation.innerHTML = tableHtml150;     var table   = domCreation.firstChild;

Test #6

    var div     = domCreation.innerHTML = tableHtml200;     var table   = domCreation.firstChild;

Test #7

    var div     = domCreation.innerHTML = tableHtml250;     var table   = domCreation.firstChild;

Test #8

    var table   = document.createElement('table');     var models  = models25;     var length  = models.length;         for (var i = 0; i < models.length; i++) {         var model   = models[i];         var row     = document.createElement('tr');                 var cell1 = document.createElement('td');         var text1 = document.createTextNode(model.prop1);         cell1.appendChild(text1);         row.appendChild(cell1);                 var cell2 = document.createElement('td');         var text2 = document.createTextNode(model.prop2);         cell2.appendChild(text2);         row.appendChild(cell2);                 var cell3 = document.createElement('td');         var text3 = document.createTextNode(model.prop3);         cell3.appendChild(text3);         row.appendChild(cell3);                 var cell4 = document.createElement('td');         var text4 = document.createTextNode(model.prop4);         cell4.appendChild(text4);         row.appendChild(cell4);                 var cell5 = document.createElement('td');         var text5 = document.createTextNode(model.prop5);         cell5.appendChild(text5);         row.appendChild(cell5);                 table.appendChild(row);     }

Test #9

    var table   = document.createElement('table');     var models  = models50;     var length  = models.length;         for (var i = 0; i < models.length; i++) {         var model   = models[i];         var row     = document.createElement('tr');                 var cell1 = document.createElement('td');         var text1 = document.createTextNode(model.prop1);         cell1.appendChild(text1);         row.appendChild(cell1);                 var cell2 = document.createElement('td');         var text2 = document.createTextNode(model.prop2);         cell2.appendChild(text2);         row.appendChild(cell2);                 var cell3 = document.createElement('td');         var text3 = document.createTextNode(model.prop3);         cell3.appendChild(text3);         row.appendChild(cell3);                 var cell4 = document.createElement('td');         var text4 = document.createTextNode(model.prop4);         cell4.appendChild(text4);         row.appendChild(cell4);                 var cell5 = document.createElement('td');         var text5 = document.createTextNode(model.prop5);         cell5.appendChild(text5);         row.appendChild(cell5);                 table.appendChild(row);     }

Test #10

    var table   = document.createElement('table');     var models  = models75;     var length  = models.length;         for (var i = 0; i < models.length; i++) {         var model   = models[i];         var row     = document.createElement('tr');                 var cell1 = document.createElement('td');         var text1 = document.createTextNode(model.prop1);         cell1.appendChild(text1);         row.appendChild(cell1);                 var cell2 = document.createElement('td');         var text2 = document.createTextNode(model.prop2);         cell2.appendChild(text2);         row.appendChild(cell2);                 var cell3 = document.createElement('td');         var text3 = document.createTextNode(model.prop3);         cell3.appendChild(text3);         row.appendChild(cell3);                 var cell4 = document.createElement('td');         var text4 = document.createTextNode(model.prop4);         cell4.appendChild(text4);         row.appendChild(cell4);                 var cell5 = document.createElement('td');         var text5 = document.createTextNode(model.prop5);         cell5.appendChild(text5);         row.appendChild(cell5);                 table.appendChild(row);     }

Test #11

    var table   = document.createElement('table');     var models  = models100;     var length  = models.length;         for (var i = 0; i < models.length; i++) {         var model   = models[i];         var row     = document.createElement('tr');                 var cell1 = document.createElement('td');         var text1 = document.createTextNode(model.prop1);         cell1.appendChild(text1);         row.appendChild(cell1);                 var cell2 = document.createElement('td');         var text2 = document.createTextNode(model.prop2);         cell2.appendChild(text2);         row.appendChild(cell2);                 var cell3 = document.createElement('td');         var text3 = document.createTextNode(model.prop3);         cell3.appendChild(text3);         row.appendChild(cell3);                 var cell4 = document.createElement('td');         var text4 = document.createTextNode(model.prop4);         cell4.appendChild(text4);         row.appendChild(cell4);                 var cell5 = document.createElement('td');         var text5 = document.createTextNode(model.prop5);         cell5.appendChild(text5);         row.appendChild(cell5);                 table.appendChild(row);     }

Test #12

    var table   = document.createElement('table');     var models  = models150;     var length  = models.length;         for (var i = 0; i < models.length; i++) {         var model   = models[i];         var row     = document.createElement('tr');                 var cell1 = document.createElement('td');         var text1 = document.createTextNode(model.prop1);         cell1.appendChild(text1);         row.appendChild(cell1);                 var cell2 = document.createElement('td');         var text2 = document.createTextNode(model.prop2);         cell2.appendChild(text2);         row.appendChild(cell2);                 var cell3 = document.createElement('td');         var text3 = document.createTextNode(model.prop3);         cell3.appendChild(text3);         row.appendChild(cell3);                 var cell4 = document.createElement('td');         var text4 = document.createTextNode(model.prop4);         cell4.appendChild(text4);         row.appendChild(cell4);                 var cell5 = document.createElement('td');         var text5 = document.createTextNode(model.prop5);         cell5.appendChild(text5);         row.appendChild(cell5);                 table.appendChild(row);     }

Test #13

    var table   = document.createElement('table');     var models  = models200;     var length  = models.length;         for (var i = 0; i < models.length; i++) {         var model   = models[i];         var row     = document.createElement('tr');                 var cell1 = document.createElement('td');         var text1 = document.createTextNode(model.prop1);         cell1.appendChild(text1);         row.appendChild(cell1);                 var cell2 = document.createElement('td');         var text2 = document.createTextNode(model.prop2);         cell2.appendChild(text2);         row.appendChild(cell2);                 var cell3 = document.createElement('td');         var text3 = document.createTextNode(model.prop3);         cell3.appendChild(text3);         row.appendChild(cell3);                 var cell4 = document.createElement('td');         var text4 = document.createTextNode(model.prop4);         cell4.appendChild(text4);         row.appendChild(cell4);                 var cell5 = document.createElement('td');         var text5 = document.createTextNode(model.prop5);         cell5.appendChild(text5);         row.appendChild(cell5);                 table.appendChild(row);     }

Test #14

    var table   = document.createElement('table');     var models  = models250;     var length  = models.length;         for (var i = 0; i < models.length; i++) {         var model   = models[i];         var row     = document.createElement('tr');                 var cell1 = document.createElement('td');         var text1 = document.createTextNode(model.prop1);         cell1.appendChild(text1);         row.appendChild(cell1);                 var cell2 = document.createElement('td');         var text2 = document.createTextNode(model.prop2);         cell2.appendChild(text2);         row.appendChild(cell2);                 var cell3 = document.createElement('td');         var text3 = document.createTextNode(model.prop3);         cell3.appendChild(text3);         row.appendChild(cell3);                 var cell4 = document.createElement('td');         var text4 = document.createTextNode(model.prop4);         cell4.appendChild(text4);         row.appendChild(cell4);                 var cell5 = document.createElement('td');         var text5 = document.createTextNode(model.prop5);         cell5.appendChild(text5);         row.appendChild(cell5);                 table.appendChild(row);     }

Test #15

var table = $(tableHtml25);

Test #16

var table = $(tableHtml50);

Test #17

var table = $(tableHtml75);

Test #18

var table = $(tableHtml100);

Test #19

var table = $(tableHtml150);

Test #20

var table = $(tableHtml200);

Test #21

var table = $(tableHtml250);

Test #22

var table = $(template({ models: models25 }));

Test #23

var table = $(template({ models: models50 }));

Test #24

var table = $(template({ models: models75 }));

Test #25

var table = $(template({ models: models100 }));

Test #26

var table = $(template({ models: models150 }));

Test #27

var table = $(template({ models: models200 }));

Test #28

var table = $(template({ models: models250 }));

Test #29

var table = $(templateNoWith({ models: models25 }));

Test #30

var table = $(templateNoWith({ models: models50 }));

Test #31

var table = $(templateNoWith({ models: models75 }));

Test #32

var table = $(templateNoWith({ models: models100 }));

Test #33

var table = $(templateNoWith({ models: models150 }));

Test #34

var table = $(templateNoWith({ models: models200 }));

Test #35

var table = $(templateNoWith({ models: models250 }));