def test_json(self): # Assert JSON output. v = db.Datasheet(rows=[[u"Schrödinger", 3], [u"Hofstadter", 5]]) self.assertEqual(v.json, u'[["Schrödinger", 3], ["Hofstadter", 5]]') # Assert JSON output with headers. v = db.Datasheet(rows=[[u"Schrödinger", 3], [u"Hofstadter", 5]], fields=[("name", db.STRING), ("age", db.INT)]) random.seed(0) self.assertEqual(v.json, u'[{"age": 3, "name": "Schrödinger"}, {"age": 5, "name": "Hofstadter"}]') print "pattern.db.Datasheet.json"
def test_json(self): # Assert JSON output. v = db.Datasheet(rows=[["Schrödinger", 3], ["Hofstadter", 5]]) self.assertEqual(v.json, '[["Schrödinger", 3], ["Hofstadter", 5]]') # Assert JSON output with headers. v = db.Datasheet(rows=[["Schrödinger", 3], ["Hofstadter", 5]], fields=[("name", db.STRING), ("age", db.INT)]) random.seed(0) w = db.json.loads(v.json) self.assertTrue({"age": 3, "name": "Schrödinger"} in w) self.assertTrue({"age": 5, "name": "Hofstadter"} in w) print("pattern.db.Datasheet.json")
def test_copy(self): # Assert Datasheet.copy(). v = db.Datasheet([[1,2,3], [4,5,6], [7,8,9]]) self.assertTrue(v.copy(), [[1,2,3], [4,5,6], [7,8,9]]) self.assertTrue(v.copy(rows=[0]), [[1,2,3]]) self.assertTrue(v.copy(rows=[0], columns=[0]), [[1]]) self.assertTrue(v.copy(columns=[0]), [[1], [4], [7]]) print "pattern.db.Datasheet.copy()"
def test_column(self): # Assert DatasheetColumn object. # It has a reference to the parent Datasheet, as long as it is not deleted from the datasheet. v = db.Datasheet(rows=[[1,3],[2,4]]) column = v.columns[0] column.insert(1, 0, default=None) self.assertEqual(v, [[1,3], [0,None], [2,4]]) del v.columns[0] self.assertTrue(column._datasheet, None) print "pattern.db.DatasheetColumn"
def test_group(self): # Assert Datasheet.group(). v1 = db.Datasheet(rows=[[1,2,"a"],[1,3,"b"],[1,4,"c"],[0,0,"d"]]) v2 = v1.group(0) v3 = v1.group(0, function=db.LAST) v4 = v1.group(0, function=(db.FIRST, db.COUNT, db.CONCATENATE)) v5 = v1.group(0, function=db.CONCATENATE, key=lambda j: j>0) self.assertEqual(v2, [[1,2,"a"], [0,0,"d"]]) self.assertEqual(v3, [[1,4,"c"], [0,0,"d"]]) self.assertEqual(v4, [[1,3,u"a,b,c"], [0,1,u"d"]]) self.assertEqual(v5, [[True,u"2,3,4",u"a,b,c"], [False,u"0",u"d"]]) print "pattern.db.Datasheet.group()"
def test_slice(self): # Assert Datasheet slices. v = db.Datasheet([[1,2,3], [4,5,6], [7,8,9]]) v = v.copy() self.assertEqual(v.slice(0,1,3,2), [[2,3], [5,6], [8,9]]) self.assertEqual(v[2], [7,8,9]) self.assertEqual(v[2,2], 9) self.assertEqual(v[2,1:], [8,9]) self.assertEqual(v[0:2], [[1,2,3], [4,5,6]]) self.assertEqual(v[0:2,1], [2,5]) self.assertEqual(v[0:2,0:2], [[1,2], [4,5]]) # Assert new Datasheet for i:j slices. self.assertTrue(isinstance(v[0:2], db.Datasheet)) self.assertTrue(isinstance(v[0:2,0:2], db.Datasheet)) print "pattern.db.Datasheet.slice()"
def test_fields(self): # Assert Datasheet with incomplete headers. v = db.Datasheet(rows=[[u"Schrödinger", "cat"]], fields=[("name", db.STRING)]) self.assertEqual(v.fields, [("name", db.STRING)]) # Assert (None, None) for missing headers. v.columns.swap(0,1) self.assertEqual(v.fields, [(None, None), ("name", db.STRING)]) v.columns[0] = ["dog"] self.assertEqual(v.fields, [(None, None), ("name", db.STRING)]) # Assert removing a column removes the header. v.columns.pop(0) self.assertEqual(v.fields, [("name",db.STRING)]) # Assert new columns with header description. v.columns.append(["cat"]) v.columns.append([3], field=("age", db.INTEGER)) self.assertEqual(v.fields, [("name", db.STRING), (None, None), ("age", db.INTEGER)]) # Assert column by name. self.assertEqual(v.name, [u"Schrödinger"]) print "pattern.db.Datasheet.fields"
def test_columns(self): # Assert Datasheet.columns DatasheetColumns object. v = db.Datasheet(rows=[[1,3],[2,4]]) v.columns += [5,6] v.columns[0] = [0,0] v.columns.swap(0,1) v.columns.insert(1, [1,1]) v.columns.pop(1) self.assertTrue(isinstance(v.columns, db.DatasheetColumns)) self.assertEqual(v.columns, [[3,4],[0,0],[5,6]]) self.assertEqual(v.columns[0], [3,4]) self.assertEqual(v.columns[-1], [5,6]) self.assertEqual(v.columns.count([3,4]), 1) self.assertEqual(v.columns.index([3,4]), 0) self.assertEqual(sorted(v.columns, reverse=True), [[5,6],[3,4],[0,0]]) self.assertRaises(AttributeError, v._set_columns, []) # Assert default for new columns with missing rows. v.columns.extend([[7],[9]], default=0) self.assertEqual(v.columns, [[3,4],[0,0],[5,6],[7,0],[9,0]]) print "pattern.db.Datasheet.columns"
def test_flip(self): # Assert flip matrix. v = db.flip(db.Datasheet([[1,2], [3,4]])) self.assertEqual(v, [[1,3], [2,4]]) print "pattern.db.flip()"
def test_map(self): # Assert Datasheet.map() (in-place). v = db.Datasheet(rows=[[1,2],[3,4]]) v.map(lambda x: x+1) self.assertEqual(v, [[2,3],[4,5]]) print "pattern.db.Datasheet.map()"