<commit_before>test(
  'BlocksTest',

  [
    'ephox.snooker.api.Structs',
    'ephox.snooker.lookup.Blocks',
    'ephox.snooker.model.Warehouse'
  ],

  function (Structs, Blocks, Warehouse) {
    var s = Structs.detail;
    var f = Structs.rowdata;
    var warehouse = Warehouse.generate([
      f('r1', [ s('a', 1, 1), s('b', 1, 2) ], 'tbody'),
      f('r2', [ s('c', 2, 1), s('d', 1, 1), s('e', 1, 1) ], 'tbody'),
      f('r3', [ s('f', 1, 2) ], 'tbody')
    ]);
  
    assert.eq(['a', 'd', 'e'], Blocks.columns(warehouse).map(function (c) { return c.getOrDie(); }));
  }
);
<commit_msg>TBIO-4980: update blocks test to have thead and tfoot<commit_after>test(
  'BlocksTest',

  [
    'ephox.snooker.api.Structs',
    'ephox.snooker.lookup.Blocks',
    'ephox.snooker.model.Warehouse'
  ],

  function (Structs, Blocks, Warehouse) {
    var s = Structs.detail;
    var f = Structs.rowdata;
    var warehouse = Warehouse.generate([
      f('r1', [ s('a', 1, 1), s('b', 1, 2) ], 'thead'),
      f('r2', [ s('c', 2, 1), s('d', 1, 1), s('e', 1, 1) ], 'tbody'),
      f('r2', [ s('f', 1, 1), s('g', 1, 1) ], 'tbody'),
      f('r3', [ s('h', 1, 1), s('i', 1, 2) ], 'tfoot')
    ]);
  
    assert.eq(['a', 'd', 'e'], Blocks.columns(warehouse).map(function (c) { return c.getOrDie(); }));
  }
);

{'fraction_non_alphanumeric': 0.2546439628482972, 'fraction_numerical': 0.03173374613003096, 'mean_word_length': 3.003095975232198, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5923177', 'n_tokens_mistral': 583, 'n_tokens_neox': 548, 'n_words': 117}