def test_join(self): table1 = Table('table1', ['c1', 'c2'], ColumnTypes([int, int])) table1.append_row([1, 2]) table1.append_row([1, 4]) table1.append_row([2, 3]) table2 = Table('table2', ['c1', 'c3'], ColumnTypes([int, str])) table2.append_row([1, 'str1']) table2.append_row([2, 'str2']) table3 = table1.join(table2, 'c1') rows_data = list(map(lambda x: x.data, table3.rows)) self.assertTrue([1, 2, 'str1'] in rows_data) self.assertTrue([1, 4, 'str1'] in rows_data) self.assertTrue([2, 3, 'str2'] in rows_data)
def test_persist(self): dbms: DBMS = DBMS() db1: Database = dbms.create_database('db1') table1 = Table('table1', ['c1', 'c2'], ColumnTypes([int, str])) table1.append_row([1, '1']) table1.append_row([2, '2']) table2 = Table('table2', ['c1', 'c2'], ColumnTypes([str, int])) table2.append_row(['1', 1]) table2.append_row(['2', 2]) table3 = Table('table3', ['c1', 'c3'], ColumnTypes([int, int])) table3.append_row([1, 1]) table3.append_row([1, 2]) table3.append_row([2, 1]) table3.append_row([2, 2]) db1.add_table(table1) db1.add_table(table2) db1.add_table(table3) db2: Database = dbms.create_database('db2') table3 = Table('table3', ['c1', 'c2'], ColumnTypes([Char, Color])) table3.append_row([Char('a'), Color('#ffffff')]) table3.append_row([Char('b'), Color('#aaaaaa')]) table4 = Table('table4', ['c1', 'c2'], ColumnTypes([Color, Char])) table4.append_row([Color('#ffffff'), Char('a')]) table4.append_row([Color('#ffffff'), Char('a')]) db2.add_table(table3) db2.add_table(table4) dbms.persist() DBMS.load() for database_name in dbms.get_databases_names(): for table_name, table in dbms.get_database( database_name)._tables.items(): print(table.to_json())