def test_series(self): cd = self.get_cubedef_1() cb = CuttingBoard(cd, self.get_data_1()) cq = CubeQuery().row('date').value('number') slice = cb.slice(cq) series = list(slice.series()) self.assertEqual(series, [281, 50]) labels = list(slice.series_labels()) self.assertEqual(labels, [date(2010, 1, 1), date(2010, 2, 1)]) cq = CubeQuery().row('date').value('number') slice = cb.slice(cq, flat=False) series = list(slice.series()) self.assertEqual(series, [(281,), (50,)]) self.assertEqual(series[0].number, 281) labels = list(slice.series_labels()) self.assertEqual(labels, [(date(2010, 1, 1),), (date(2010, 2, 1),)]) cq = CubeQuery().row('date').value('number').value('twice') slice = cb.slice(cq) series = list(slice.series()) self.assertEqual(series, [(281, 562), (50, 100)]) self.assertEqual(series[0].number, 281) self.assertEqual(series[1].twice, 100) labels = list(slice.series_labels()) self.assertEqual(labels, [date(2010, 1, 1), date(2010, 2, 1)])
def test_multirow_slice(self): cd = self.get_cubedef_1() cb = CuttingBoard(cd, self.get_data_1()) cq = CubeQuery().row('month').row('place').col('item').value('number') slice = cb.slice(cq) self.assertEqual(100, slice[1, 'italy']['apples']) self.assertEqual(50, slice[2, 'italy']['apples']) slice = cb.slice(cq, flat=False) self.assertEqual(100, slice[1, 'italy']['apples', ].number) self.assertEqual(50, slice[2, 'italy']['apples', ].number)
def test_1d_slice_access(self): cd = self.get_cubedef_1() cb = CuttingBoard(cd, self.get_data_1()) cq = CubeQuery().row('month').value('number') slice = cb.slice(cq) self.assertEqual(281, slice[1]) self.assertEqual(50, slice[2]) slice = cb.slice(cq, flat=False) self.assertEqual((281,), slice[1, ]) self.assertEqual((50,), slice[2, ]) self.assertEqual(50, slice[2, ].number, "not a namedtuple")
def test_slice_access(self): cd = self.get_cubedef_1() cb = CuttingBoard(cd, self.get_data_1()) cq = CubeQuery().row('month').col('item').value('number') slice = cb.slice(cq) self.assertEqual(180, slice[1]['apples']) self.assertEqual(101, slice[1]['pears']) self.assertEqual(50, slice[2]['apples']) slice = cb.slice(cq, flat=False) self.assertEqual((180,), slice[1, ]['apples', ]) self.assertEqual((101,), slice[1, ]['pears', ]) self.assertEqual((50,), slice[2, ]['apples', ]) self.assertEqual(50, slice[2, ]['apples', ].number, "not a namedtuple")
def test_slice_iteration(self): cd = self.get_cubedef_1() cb = CuttingBoard(cd, self.get_data_1()) cq = CubeQuery().row('date').col('item').value('number') slice = cb.slice(cq) # simulate how i would use this object to build a response self.assertEqual(list(slice.value_labels()), ['number']) self.assertEqual(list(slice.col_labels()), ['apples', 'pears']) data = list(slice.rows()) self.assertEqual([180, 101], list(data[0])) self.assertEqual([50, None], list(data[1])) data = list(slice.rows_with_label()) self.assertEqual(date(2010, 1, 1), data[0][0]) self.assertEqual([180, 101], list(data[0][1])) self.assertEqual(date(2010, 2, 1), data[1][0]) self.assertEqual([50, None], list(data[1][1])) # on the other side, e.g. for plotting: data = list(slice.row_labels()) self.assertEqual(data, [date(2010, 1, 1), date(2010, 2, 1)]) data = list(slice.cols_with_label()) self.assertEqual('apples', data[0][0]) self.assertEqual([180, 50], list(data[0][1])) self.assertEqual('pears', data[1][0]) self.assertEqual([101, None], list(data[1][1]))
def test_slice_iteration_nonflat(self): cd = self.get_cubedef_1() cb = CuttingBoard(cd, self.get_data_1()) cq = CubeQuery().row('date').col('item').value('number') slice = cb.slice(cq, flat=False) # simulate how i would use this object to build a response self.assertEqual(list(slice.value_labels()), ['number']) self.assertEqual(list(slice.col_labels()), [('apples',), ('pears',)]) data = list(slice.rows()) self.assertEqual([(180,), (101,)], list(data[0])) self.assertEqual([(50,), None], list(data[1])) data = list(slice.rows_with_label()) for i, (l, d) in enumerate(data): # consolidate iterators data[i] = l, list(d) self.assertEqual((date(2010, 1, 1),), data[0][0]) self.assertEqual([(180,), (101,)], data[0][1]) self.assertEqual((date(2010, 2, 1),), data[1][0]) self.assertEqual([(50,), None], data[1][1]) self.assertEqual(50, data[1][1][0].number, "not a namedtuple") # on the other side, e.g. for plotting: data = list(slice.row_labels()) self.assertEqual(data, [(date(2010, 1, 1),), (date(2010, 2, 1),)]) data = list(slice.cols_with_label()) for i, (l, d) in enumerate(data): # consolidate iterators data[i] = l, list(d) self.assertEqual(('apples',), data[0][0]) self.assertEqual([(180,), (50,)], list(data[0][1])) self.assertEqual(('pears',), data[1][0]) self.assertEqual([(101,), None], list(data[1][1])) self.assertEqual(101, data[1][1][0].number, "not a namedtuple")