def test_movsum(self): """ Test movsum """ R = Table.inputfromfile('test_csv/real_sales1.csv') expect = Table.inputfromfile('test_csv/moving_sum_of_step_1.csv') R1 = Table.movsum(R, ['qty', 1]) expect = Table.sort(expect, ['saleid']) R1 = Table.sort(R1, ['saleid']) self.assertEqual(len(R1.table), len(expect.table)) for i in range(len(R1.table)): self.assertEqual(R1.table[i]['sum(qty)'], expect.table[i]['sum(qty)']) expect = Table.inputfromfile('test_csv/moving_sum_of_step_3.csv') R1 = Table.movsum(R, ['qty', 3]) expect = Table.sort(expect, ['saleid']) R1 = Table.sort(R1, ['saleid']) self.assertEqual(len(R1.table), len(expect.table)) for i in range(len(R1.table)): self.assertEqual(R1.table[i]['sum(qty)'], expect.table[i]['sum(qty)']) expect = Table.inputfromfile('test_csv/moving_sum_of_step_4.csv') R1 = Table.movsum(R, ['qty', 4]) expect = Table.sort(expect, ['saleid']) R1 = Table.sort(R1, ['saleid']) self.assertEqual(len(R1.table), len(expect.table)) for i in range(len(R1.table)): self.assertEqual(R1.table[i]['sum(qty)'], expect.table[i]['sum(qty)']) expect = Table.inputfromfile('test_csv/moving_sum_of_step_n.csv') R1 = Table.movsum(R, ['qty', len(R1.table)]) expect = Table.sort(expect, ['saleid']) R1 = Table.sort(R1, ['saleid']) self.assertEqual(len(R1.table), len(expect.table)) for i in range(len(R1.table)): self.assertEqual(R1.table[i]['sum(qty)'], expect.table[i]['sum(qty)'])
def test_sort_with_single_column_Nan(self): """Test table with: sort(R, pricerange)""" R = Table.inputfromfile('test_csv/sales1.csv') R = Table.sort(R, ['pricerange']) self.assertIsNotNone(R.table) cur = R.table[0]['pricerange'] for row in R.table: self.assertGreaterEqual(row['pricerange'], cur) cur = row['pricerange']
def test_countgroup(self): """ Test countgroup """ R = Table.inputfromfile('test_csv/real_sales1.csv') expect = Table.inputfromfile('test_csv/count_saleid_groupby_pricerange.csv') R1 = Table.countgroup(R, ['pricerange']) expect = Table.sort(expect, ['pricerange']) R1 = Table.sort(R1, ['pricerange']) self.assertEqual(len(R1.table), len(expect.table)) for i in range(len(R1.table)): self.assertEqual(R1.table[i], expect.table[i]) R = Table.inputfromfile('test_csv/real_sales1.csv') expect = Table.inputfromfile('test_csv/count_saleid_groupby_pricerange_customerid.csv') R1 = Table.countgroup(R, ['pricerange', 'customerid']) expect = Table.sort(expect, ['pricerange', 'customerid']) R1 = Table.sort(R1, ['pricerange', 'customerid']) self.assertEqual(len(R1.table), len(expect.table)) for i in range(len(R1.table)): self.assertEqual(R1.table[i], expect.table[i])
def test_avggroup(self): """ Test avggroup """ R = Table.inputfromfile('test_csv/real_sales1.csv') expect = Table.inputfromfile('test_csv/avg_qty_groupby_princerange.csv') R1 = Table.avggroup(R, ['qty', 'pricerange']) expect = Table.sort(expect, ['pricerange']) R1 = Table.sort(R1, ['pricerange']) self.assertEqual(len(R1.table), len(expect.table)) for i in range(len(R1.table)): self.assertAlmostEqual(R1.table[i]['avg(qty)'], expect.table[i]['avg(qty)'], places=4) R = Table.inputfromfile('test_csv/real_sales1.csv') expect = Table.inputfromfile('test_csv/avg_qty_groupby_customerid_princerange.csv') R1 = Table.avggroup(R, ['qty', 'pricerange', 'customerid']) expect = Table.sort(expect, ['pricerange', 'customerid']) R1 = Table.sort(R1, ['pricerange', 'customerid']) self.assertEqual(len(R1.table), len(expect.table)) for i in range(len(R1.table)): self.assertAlmostEqual(R1.table[i]['avg(qty)'], expect.table[i]['avg(qty)'], places=4)
def test_movavg(self): """ Test movavg """ R = Table.inputfromfile('test_csv/real_sales1.csv') expect = Table.inputfromfile('test_csv/moving_avg_of_step_1.csv') R1 = Table.movavg(R, ['qty', 1]) expect = Table.sort(expect, ['saleid']) R1 = Table.sort(R1, ['saleid']) self.assertEqual(len(R1.table), len(expect.table)) for i in range(len(R1.table)): self.assertAlmostEqual(R1.table[i]['avg(qty)'], expect.table[i]['avg(qty)'], places=4) expect = Table.inputfromfile('test_csv/moving_avg_of_step_3.csv') R1 = Table.movavg(R, ['qty', 3]) expect = Table.sort(expect, ['saleid']) R1 = Table.sort(R1, ['saleid']) self.assertEqual(len(R1.table), len(expect.table)) for i in range(len(R1.table)): self.assertAlmostEqual(R1.table[i]['avg(qty)'], expect.table[i]['avg(qty)'], places=4) expect = Table.inputfromfile('test_csv/moving_avg_of_step_n.csv') R1 = Table.movavg(R, ['qty', len(R.table)]) expect = Table.sort(expect, ['saleid']) R1 = Table.sort(R1, ['saleid']) self.assertEqual(len(R1.table), len(expect.table)) for i in range(len(R1.table)): self.assertAlmostEqual(R1.table[i]['avg(qty)'], expect.table[i]['avg(qty)'], places=3)
def test_sort_with_mulitple_columns(self): """Test table with: sort(R, salesid, storeid)""" R = Table.inputfromfile('test_csv/sales1.csv') R = Table.sort(R, ['saleid', 'storeid']) self.assertIsNotNone(R.table) saleid = R.table[0]['saleid'] storeid = R.table[0]['storeid'] for row in R.table: self.assertGreaterEqual(row['saleid'], saleid) if (row['saleid'] == saleid): self.assertGreaterEqual(row['storeid'], storeid) saleid = row['saleid'] storeid = row['storeid']