def test_input_table(self): engine = Engine() engine.loader = StringLoader('import doesntexist\n') wiki = ''' |OccupantList| |user |room | |anna |lotr | |luke |lotr | ''' table = Table(wiki_table_to_plain(wiki)) engine.process(table, throw=False)
class TestActionFixture(unittest.TestCase): def setUp(self): self.engine = Engine() self.engine.loader = CreateFixture(globals()) def process(self, wiki): self.table = Table(wiki_table_to_plain(wiki)) return self.engine.process(self.table) def test_existing_attribute(self): wiki = ''' |ActionFixture| |start|FakeBuyActions| ''' fixture = self.process(wiki) def test_existing_attribute2(self): wiki = ''' |ActionFixture| |start|FakeBuyActions| |check|total|00.00| ''' fixture = self.process(wiki)
class Client(Protocol): def __init__(self): self.engine = Engine() self.engine.print_traceback = True self.proto = FitnesseProtocol(self) def ack(self): self.ack_received = True def connectionMade(self): self.socketToken = sys.argv[4] request = "GET /?responder=socketCatcher&ticket=%s HTTP/1.1\r\n\r\n" % self.socketToken bytes = request.encode("UTF-8") self.transport.write(bytes) def dataReceived(self, data): self.proto.dataReceived(data) def content(self, data): self.doc = Document(data) self.doc.visit_tables(self) def on_table(self, table): fixture = self.engine.process(table, throw=False) self.write_table(table) def on_comment(self, node): html = str(node.toxml()) self.transport.write(util.format_10_digit_number(len(html) + 1)) self.transport.write(html) self.transport.write('\n') def done(self): self.transport.loseConnection() def write_table(self, table): html = str(table.toxml()) # Fixme : str() workaround for 'Data must not be unicode' self.transport.write(util.format_10_digit_number(len(html) + 1)) self.transport.write(html) self.transport.write('\n') def write_number(self, number): self.transport.write(util.format_10_digit_number(number)) def report(self): summary = self.engine.summary # 0 right, 0 wrong, 0 ignored, 0 exceptions self.write_number(0) self.write_number(summary.right) self.write_number(summary.wrong) self.write_number(summary.ignored) self.write_number(summary.exceptions) summary.reset()
class TestRowFixture2(unittest.TestCase): def setUp(self): self.engine = Engine() self.engine.loader = CreateFixture(globals()) def process(self, wiki): self.table = Table(wiki_table_to_plain(wiki)) return self.engine.process(self.table) def test_passing_table(self): wiki = ''' |OccupantList| |user |room | |anna |lotr | |luke |lotr | ''' fixture = self.process(wiki) self.assertEqual(fixture.differ.missing, []) self.assertEqual(fixture.differ.surplus, []) def test_one_missing_row(self): wiki = ''' |OccupantList| |user |room | |anna |lotr | |luke |lotr | |bob |lotr | ''' fixture = self.process(wiki) self.assertEqual(fixture.differ.missing, [[Cell('bob'), Cell('lotr')]]) self.assertEqual(fixture.differ.surplus, []) self.assert_(self.table.cell(0,4).is_missing) def test_one_surplus_row(self): wiki = ''' |OccupantList| |user |room | |anna |lotr | ''' fixture = self.process(wiki) self.assertEqual(fixture.differ.missing, []) self.assertEqual(fixture.differ.surplus, [['luke', 'lotr']]) self.assertEqual(len(self.table.rows), 4)
class TestActionFixture(unittest.TestCase): def setUp(self): self.engine = Engine() self.engine.loader = CreateFixture(globals()) def process(self, wiki): self.table = Table(wiki_table_to_plain(wiki)) return self.engine.process(self.table) def _test_existing_attribute(self): wiki = ''' |ActionFixture| |start|FakeBuyActions| ''' fixture = self.process(wiki) def _test_existing_attribute2(self): wiki = ''' |ActionFixture| |start|FakeBuyActions| |check|total|00.00| ''' fixture = self.process(wiki) def test_foobar(self): wiki = ''' |ActionFixture| |start|ChatServer2| ''' fixture = self.process(wiki) wiki = ''' |ActionFixture| |enter|user|anna| |press|connect| |enter|room|lotr| |press|new room| |press|enter room| ''' fixture = self.process(wiki)
class TestRowFixture3(unittest.TestCase): def setUp(self): self.engine = Engine() self.engine.loader = CreateFixture(globals()) def process(self, wiki): self.table = Table(wiki_table_to_plain(wiki)) return self.engine.process(self.table) def test_two_surplus_rows(self): wiki = ''' |OccupantList3| |order| |1 | |2 | ''' fixture = self.process(wiki) self.assertEqual(fixture.differ.missing, []) self.assertEqual(fixture.differ.surplus, []) self.assertEqual(len(self.table.rows), 4)
class TestFixtures(unittest.TestCase): def setUp(self): self.engine = Engine() self.engine.loader = CreateFixture(globals()) def process(self, wiki): return self.engine.process(Table(wiki_table_to_html(wiki))) def testSignature(self): class FooFixture(object): def test_func(self, arg1, arg2): self.called = True fixture = FooFixture() f = getattr(fixture, "test_func") self.assert_(inspect.ismethod(f)) self.assertEqual(2, len(inspect.getargspec(f)[0]) - 1) args = [1, 2] f(*args) self.assert_(fixture.called) def test_action_fixture(self): wiki = """ |FakeActionFixture| |enter|user |anna| |check|amount|24| |check|add |12|7| """ fixture = self.process(wiki) self.assertEqual(fixture.trace[0], ["user", "userName", "anna"]) self.assertEqual(fixture.trace[1], ["amount", "x", "24"]) self.assertEqual(fixture.trace[2], ["add", "x", "12", "y", "7"]) def test_do_fixture(self): wiki = """ |FakeDoFixture| |User|anna|Creates|lotr|Room| """ fixture = self.process(wiki) self.assertEqual(fixture.trace[0], ["UserCreatesRoom", "userName", "anna", "roomName", "lotr"]) def test_market_picture(self): table = "|TradingStart|" name = "TradingStart" fixture = globals()[name]() fixture.run() li = getattr(fixture, "market_picture") pic = li["BHP"] table = "|PrepareMarket|BHP|" def prepare_market(code): pass prepare_market("BHP") table = """ |market picture| |qty |bid price|ask price|qty | |1,900| 82.0|83.0 |1,900| | 500| 82.0| | | """ table = Document(wiki_table_to_html(table)) def test_dual_header(self): table = """ |SubmitOrders| |bid | |ask | | |qty |price|price|qty | |1,900| 82.0|83.0 |1,900| | 500| 82.0| | | """ table = Table(wiki_table_to_html(table)) row1 = table.rows[1] row2 = table.rows[2] l = [] for prefix, i in rzip(row1, row2): l.append(str("%s_%s" % (prefix, i))) self.assertEqual(l, ["bid_qty", "bid_price", "ask_price", "ask_qty"]) def test_function_names(self): t = "user creates room" prefix = "local" words = t.split() words.insert(0, prefix) f = "_".join(words) self.assertEqual(f, "local_user_creates_room") def test_if_fails_if_fixture_doesnt_exist(self): try: fixture = self.process("|NoneExisting|") except Exception, inst: pass self.assertEqual(str(inst), "Could not create fixture 'NoneExisting'")
class TestColumnFixture(unittest.TestCase): def setUp(self): self.engine = Engine() self.engine.loader = CreateFixture(globals()) def process(self, wiki): self.table = Table(wiki_table_to_plain(wiki)) return self.engine.process(self.table) def test_existing_attribute(self): wiki = ''' |FakeColumnFixture| |arg1|arg2|sum()| |20|10|35| ''' fixture = self.process(wiki) # These are float because this is the type in the fixture self.assertEqual(fixture.arg1, 20.0) self.assertEqual(fixture.arg2, 10.0) # These are string self.assertEqual(str(self.table.cell(0,2)), '20') self.assertEqual(str(self.table.cell(1,2)), '10') self.assertEqual(str(self.table.cell(2,2)), '35') def test_failing_test(self): wiki = ''' |FakeColumnFixture| |arg1|arg2|sum()| |20|10|35| ''' fixture = self.process(wiki) cell = self.table.cell(2,2) self.assert_(cell.has_failed) self.assertEqual(cell.actual, 30.0) def test_passing_test(self): wiki = ''' |FakeColumnFixture| |arg1|arg2|sum()| |20|10|30| ''' fixture = self.process(wiki) cell = self.table.cell(2,2) self.assert_(cell.has_passed) def test_non_existing_attribute(self): wiki = ''' |FakeColumnFixture| |quantity| |20| ''' try: fixture = self.process(wiki) except Exception, inst: pass self.assertEqual(self.table.cell(0,2).error_message, """'FakeColumnFixture' object has no attribute 'quantity'""")