def test_project(self): clan = basic_clans['left func'] if self.print_examples: ss = clan.get_left_set() pc = _convert_clan_to_list_of_dicts(ss, clan) print(clan) print(ss) print(pc) csv = io.StringIO() export_csv(clan, csv) csv_str = csv.getvalue() self.assertEqual(csv_str, "a,b,c\r\n1,2,3\r\n") if self.print_examples: # \r doesn't print well in the (PyCharm?) console csv_str_pr = 'csv:\n' + csv_str.replace('\r\n', '\n') print(csv_str_pr) clan = Set(Set([Couplet(s, c) for s, c in zip('abcd', [1, 2, 3, "foo, bar"])])) csv = io.StringIO() export_csv(clan, csv) csv_str = csv.getvalue() self.assertEqual(csv_str, """a,b,c,d\r\n1,2,3,"foo, bar"\r\n""")
def test_project(self): clan = basic_clans["left func"] if self.print_examples: ss = clan.get_left_set() pc = _convert_clan_to_list_of_dicts(ss, clan) print(clan) print(ss) print(pc) csv = io.StringIO() export_csv(clan, csv) csv_str = csv.getvalue() self.assertEqual(csv_str, "a,b,c\r\n1,2,3\r\n") if self.print_examples: # \r doesn't print well in the (PyCharm?) console csv_str_pr = "csv:\n" + csv_str.replace("\r\n", "\n") print(csv_str_pr) clan = Set(Set([Couplet(s, c) for s, c in zip("abcd", [1, 2, 3, "foo, bar"])])) csv = io.StringIO() export_csv(clan, csv) csv_str = csv.getvalue() self.assertEqual(csv_str, """a,b,c,d\r\n1,2,3,"foo, bar"\r\n""")
def test_csv(self): """Test loading clan from csv.""" clan = Set({Set({Couplet('a', '1'), Couplet('b', '2')})}) st1 = import_csv(IoCsvTests.path('set1.csv')) self.assertEqual(clan, st1) self.assertEqual(st1.cached_clan, CacheStatus.IS) self.assertEqual(st1.cached_functional, CacheStatus.IS) self.assertEqual(st1.cached_regular, CacheStatus.IS) clan = Set({Set({Couplet('a', '1'), Couplet('b', '2')})}) st1a = import_csv(IoCsvTests.path('set1a.csv')) # NOTE: duplicate row is removed self.assertEqual(clan, st1a) self.assertEqual(st1a.cached_clan, CacheStatus.IS) self.assertEqual(st1a.cached_functional, CacheStatus.IS) self.assertEqual(st1a.cached_regular, CacheStatus.IS) clan = Set(Set({Couplet('a', '1'), Couplet('b', '2'), Couplet('row', 0)}), Set({Couplet('a', '1'), Couplet('b', '2'), Couplet('row', 1)})) st1a = import_csv(IoCsvTests.path('set1a.csv'), index_column='row') # NOTE: duplicate row is NOT removed self.assertEqual(clan, st1a) self.assertEqual(st1a.cached_clan, CacheStatus.IS) self.assertEqual(st1a.cached_functional, CacheStatus.IS) self.assertEqual(st1a.cached_regular, CacheStatus.IS) expected = Multiset({Set(Couplet('a', '1'), Couplet('b', '2')): 2}) actual = import_csv(IoCsvTests.path('set1a.csv'), has_dup_rows=True) # NOTE: duplicate row is not removed self.assertEqual(actual, expected) self.assertEqual(actual.cached_multiclan, CacheStatus.IS) self.assertEqual(actual.cached_functional, CacheStatus.IS) self.assertEqual(actual.cached_regular, CacheStatus.IS) clan = Set({Set({Couplet('a', '1'), Couplet('b', '2')}), Set({Couplet('a', '3'), Couplet('b', '4')})}) st2 = import_csv(IoCsvTests.path('set2.csv')) self.assertEqual(clan, st2) self.assertEqual(st2.cached_clan, CacheStatus.IS) self.assertEqual(st2.cached_functional, CacheStatus.IS) self.assertEqual(st2.cached_regular, CacheStatus.IS) clan = Set(Set([Couplet(s, c) for s, c in zip('abcd', [1, 2, 3, 4])]), Set([Couplet(s, c) for s, c in zip('abc', [5, 6, 7])]), Set([Couplet(s, c) for s, c in zip('bd', [8, 9])])) types = {'a': int, 'b': int, 'c': int, 'd': int} st3 = import_csv(IoCsvTests.path('set3.csv'), types) # print("expected", clan) # print("actual", st3) self.assertEqual(clan, st3) self.assertEqual(st3.cached_clan, CacheStatus.IS) self.assertEqual(st3.cached_functional, CacheStatus.IS) self.assertEqual(st3.cached_regular, CacheStatus.IS_NOT) expected = Multiset({Set(Couplet('a', '1'), Couplet('b', '2'), Couplet('c', '3'), Couplet('d', '4')): 1, Set(Couplet('a', '5'), Couplet('b', '6'), Couplet('c', '7')): 1, Set(Couplet('b', '8'), Couplet('d', '9')): 1}) actual = import_csv(IoCsvTests.path('set3.csv'), has_dup_rows=True) self.assertEqual(actual, expected) self.assertEqual(actual.cached_multiclan, CacheStatus.IS) self.assertEqual(actual.cached_functional, CacheStatus.IS) self.assertEqual(actual.cached_regular, CacheStatus.IS_NOT) expected = Multiset({Set(Couplet('a', '5'), Couplet('b', '6'), Couplet('c', '7')): 1, Set(Couplet('b', '8'), Couplet('d', '9')): 1, Set(Couplet('a', '1'), Couplet('b', '2'), Couplet('c', '3'), Couplet('d', '4')): 1}) export_path = IoCsvTests.path('export.csv') self.assertFalse(export_csv(expected, export_path)) self.assertTrue(export_csv(expected, export_path, ordered_lefts='abcd')) actual = import_csv(export_path, has_dup_rows=True) self.assertEqual(actual, expected)
file = StringIO(sales_csv) sales_multiclan = import_csv(file, has_dup_rows=True) # note the use of flag to return a multiclan print(sales_multiclan) # lets see how our cashiers are doing cashier_diagonal = _mo.Multiset({_mo.Set(_mo.Couplet('cashier', 'cashier')): 1}) cashier_sales = _multiclans.compose(sales_multiclan, cashier_diagonal) print("To find out how many sales each cashier has had, we can do the following:") print(str("sales_multiclan") + ' COMPOSE ' + str(cashier_diagonal)) print('=> EVALUATES TO ' + str(cashier_sales) + "\n") # lets see what products we sold for the day product_diagonal = _mo.Multiset({_mo.Set(_mo.Couplet('product', 'product')): 1}) product_sales = _multiclans.compose(sales_multiclan, product_diagonal) print("To find out how many products we sold, we can do the following:") print(str("sales_multiclan") + ' COMPOSE ' + str(product_diagonal)) print('=> EVALUATES TO ' + str(product_sales) + "\n") # Print some of these new math objects in LaTeX. print(_math_object_to_latex(simple_union)) print(_math_object_to_latex(sales_multiclan)) print(_math_object_to_latex(product_sales)) # Export a multiclan print("\nConverting the multiclan back to a csv file is easy.") sales_csv_out = StringIO() export_csv(sales_multiclan, sales_csv_out) csv_str = sales_csv_out.getvalue() print(csv_str)
# lets see how our cashiers are doing cashier_diagonal = _mo.Multiset( {_mo.Set(_mo.Couplet('cashier', 'cashier')): 1}) cashier_sales = _multiclans.compose(sales_multiclan, cashier_diagonal) print( "To find out how many sales each cashier has had, we can do the following:" ) print(str("sales_multiclan") + ' COMPOSE ' + str(cashier_diagonal)) print('=> EVALUATES TO ' + str(cashier_sales) + "\n") # lets see what products we sold for the day product_diagonal = _mo.Multiset( {_mo.Set(_mo.Couplet('product', 'product')): 1}) product_sales = _multiclans.compose(sales_multiclan, product_diagonal) print("To find out how many products we sold, we can do the following:") print(str("sales_multiclan") + ' COMPOSE ' + str(product_diagonal)) print('=> EVALUATES TO ' + str(product_sales) + "\n") # Print some of these new math objects in LaTeX. print(_math_object_to_latex(simple_union)) print(_math_object_to_latex(sales_multiclan)) print(_math_object_to_latex(product_sales)) # Export a multiclan print("\nConverting the multiclan back to a csv file is easy.") sales_csv_out = StringIO() export_csv(sales_multiclan, sales_csv_out) csv_str = sales_csv_out.getvalue() print(csv_str)
def test_csv(self): """Test loading clan from csv.""" clan = Set({Set({Couplet('a', '1'), Couplet('b', '2')})}) st1 = import_csv(IoCsvTests.path('set1.csv')) self.assertEqual(clan, st1) self.assertEqual(st1.cached_clan, CacheStatus.IS) self.assertEqual(st1.cached_functional, CacheStatus.IS) self.assertEqual(st1.cached_regular, CacheStatus.IS) clan = Set({Set({Couplet('a', '1'), Couplet('b', '2')})}) st1a = import_csv(IoCsvTests.path('set1a.csv')) # NOTE: duplicate row is removed self.assertEqual(clan, st1a) self.assertEqual(st1a.cached_clan, CacheStatus.IS) self.assertEqual(st1a.cached_functional, CacheStatus.IS) self.assertEqual(st1a.cached_regular, CacheStatus.IS) clan = Set( Set({Couplet('a', '1'), Couplet('b', '2'), Couplet('row', 0)}), Set({Couplet('a', '1'), Couplet('b', '2'), Couplet('row', 1)})) st1a = import_csv(IoCsvTests.path('set1a.csv'), index_column='row') # NOTE: duplicate row is NOT removed self.assertEqual(clan, st1a) self.assertEqual(st1a.cached_clan, CacheStatus.IS) self.assertEqual(st1a.cached_functional, CacheStatus.IS) self.assertEqual(st1a.cached_regular, CacheStatus.IS) expected = Multiset({Set(Couplet('a', '1'), Couplet('b', '2')): 2}) actual = import_csv(IoCsvTests.path('set1a.csv'), has_dup_rows=True) # NOTE: duplicate row is not removed self.assertEqual(actual, expected) self.assertEqual(actual.cached_multiclan, CacheStatus.IS) self.assertEqual(actual.cached_functional, CacheStatus.IS) self.assertEqual(actual.cached_regular, CacheStatus.IS) clan = Set({ Set({Couplet('a', '1'), Couplet('b', '2')}), Set({Couplet('a', '3'), Couplet('b', '4')}) }) st2 = import_csv(IoCsvTests.path('set2.csv')) self.assertEqual(clan, st2) self.assertEqual(st2.cached_clan, CacheStatus.IS) self.assertEqual(st2.cached_functional, CacheStatus.IS) self.assertEqual(st2.cached_regular, CacheStatus.IS) clan = Set(Set([Couplet(s, c) for s, c in zip('abcd', [1, 2, 3, 4])]), Set([Couplet(s, c) for s, c in zip('abc', [5, 6, 7])]), Set([Couplet(s, c) for s, c in zip('bd', [8, 9])])) types = {'a': int, 'b': int, 'c': int, 'd': int} st3 = import_csv(IoCsvTests.path('set3.csv'), types) # print("expected", clan) # print("actual", st3) self.assertEqual(clan, st3) self.assertEqual(st3.cached_clan, CacheStatus.IS) self.assertEqual(st3.cached_functional, CacheStatus.IS) self.assertEqual(st3.cached_regular, CacheStatus.IS_NOT) expected = Multiset({ Set(Couplet('a', '1'), Couplet('b', '2'), Couplet('c', '3'), Couplet('d', '4')): 1, Set(Couplet('a', '5'), Couplet('b', '6'), Couplet('c', '7')): 1, Set(Couplet('b', '8'), Couplet('d', '9')): 1 }) actual = import_csv(IoCsvTests.path('set3.csv'), has_dup_rows=True) self.assertEqual(actual, expected) self.assertEqual(actual.cached_multiclan, CacheStatus.IS) self.assertEqual(actual.cached_functional, CacheStatus.IS) self.assertEqual(actual.cached_regular, CacheStatus.IS_NOT) expected = Multiset({ Set(Couplet('a', '5'), Couplet('b', '6'), Couplet('c', '7')): 1, Set(Couplet('b', '8'), Couplet('d', '9')): 1, Set(Couplet('a', '1'), Couplet('b', '2'), Couplet('c', '3'), Couplet('d', '4')): 1 }) export_path = IoCsvTests.path('export.csv') self.assertFalse(export_csv(expected, export_path)) self.assertTrue(export_csv(expected, export_path, ordered_lefts='abcd')) actual = import_csv(export_path, has_dup_rows=True) self.assertEqual(actual, expected)