code: def test_compute(self):
      tableset = TableSet(self.tables.values(), self.tables.keys())
  
      new_tableset = tableset.compute(
          [
              (
                  "new_column",
                  Formula(
                      self.text_type,
                      lambda r: "%(letter)s-%(number)i" % r,
                  ),
              )
          ]
      )
  
      new_table = new_tableset["table1"]
  
      self.assertColumnNames(
          new_table,
          (
              "letter",
              "number",
              "new_column",
          ),
      )
      self.assertColumnTypes(new_table, (Text, Number, Text))
      self.assertRows(
          new_table, [("a", 1, "a-1"), ("a", 3, "a-3"), ("b", 2, "b-2")]
      )
  
      new_table = new_tableset["table2"]
  
      self.assertRows(
          new_table, [("b", 0, "b-0"), ("a", 2, "a-2"), ("c", 5, "c-5")]
      )
  
      new_table = new_tableset["table3"]
  
      self.assertSequenceEqual(new_table.rows[0], ("a", 1, "a-1"))
      self.assertSequenceEqual(new_table.rows[1], ("a", 2, "a-2"))
      self.assertSequenceEqual(new_table.rows[2], ("c", 3, "c-3"))
  
imports: import json
  import shutil
  from collections import OrderedDict
  from io import StringIO
  from agate import Table, TableSet
  from agate.computations import Formula
  from agate.data_types import Number, Text
  from agate.testcase import AgateTestCase
label_desc: Use image node_id 17 for calling the TestTableSet obj's underlying member method code with example usage: obj.test_compute() without return types