annotate musixmatch-master/tests/base.py @ 13:844d341cf643 tip

Back up before ISMIR
author Yading Song <yading.song@eecs.qmul.ac.uk>
date Thu, 31 Oct 2013 13:17:06 +0000
parents 8c29444cb5fd
children
rev   line source
yading@7 1 import unittest
yading@7 2 from musixmatch import *
yading@7 3
yading@7 4 class TestBase(unittest.TestCase):
yading@7 5
yading@7 6 Class = base.Base
yading@7 7 def test_label(self):
yading@7 8 self.assertEqual(self.Class.label(), self.Class.__name__.lower())
yading@7 9
yading@7 10 class TestItem(TestBase):
yading@7 11 Class = base.Item
yading@7 12 item = { "item_id": "9673" }
yading@7 13 item_str = "{ 'item_id': '9673'}"
yading@7 14 item_repr = "Item({'item_id': '9673'})"
yading@7 15 item_hash = 9673
yading@7 16 item_id = 'item_id'
yading@7 17
yading@7 18 # def test_fromResponseMessage(self):
yading@7 19 # self.assertRaises(api.Error,
yading@7 20 # self.Class.fromResponseMessage, self.fail)
yading@7 21 # success = self.Class.fromResponseMessage(self.success)
yading@7 22 # self.assertEqual(success[item_id],
yading@7 23 # self.success['body'][self.label()][self.item_id])
yading@7 24 def test_fromDictionary(self):
yading@7 25 item = self.Class.fromDictionary(self.item)
yading@7 26 # Data integrity
yading@7 27 for k in self.item.keys():
yading@7 28 self.assertEqual(item[k], self.item[k])
yading@7 29
yading@7 30 def test__str__(self):
yading@7 31 item = self.Class.fromDictionary(self.item)
yading@7 32 self.assertEqual(str(item),self.item_str)
yading@7 33
yading@7 34 def test__repr__(self):
yading@7 35 item = self.Class.fromDictionary(self.item)
yading@7 36 self.assertEqual(repr(item),self.item_repr)
yading@7 37
yading@7 38 def test__hash__(self):
yading@7 39 item = self.Class.fromDictionary(self.item)
yading@7 40 self.assertEqual(hash(item), self.item_hash)
yading@7 41
yading@7 42 class TestCollection(unittest.TestCase):
yading@7 43
yading@7 44 Class = base.ItemsCollection
yading@7 45 AllowedContent = base.ItemsCollection.allowedin()
yading@7 46 item_list = 'item_list'
yading@7 47 item_id = 'item_id'
yading@7 48 item = 'item'
yading@7 49 message = {
yading@7 50 "body": {
yading@7 51 "item_list": [
yading@7 52 {
yading@7 53 "item": {
yading@7 54 "item_id": "292",
yading@7 55 "item_name": "item_292"
yading@7 56 }
yading@7 57 },
yading@7 58 {
yading@7 59 "item": {
yading@7 60 "item_id": "8976",
yading@7 61 "item_name": "item_8976"
yading@7 62 }
yading@7 63 },
yading@7 64 {
yading@7 65 "item": {
yading@7 66 "item_id": "9673",
yading@7 67 "item_name": "item_9673"
yading@7 68 }
yading@7 69 }
yading@7 70 ]
yading@7 71 },
yading@7 72 "header": {
yading@7 73 "execute_time": 0.14144802093506001,
yading@7 74 "status_code": 200
yading@7 75 }
yading@7 76 }
yading@7 77
yading@7 78 def test_insert(self):
yading@7 79 collection = self.Class()
yading@7 80 saved = self.message['body'][self.item_list][0][self.item]
yading@7 81 item = self.AllowedContent(saved)
yading@7 82 collection.insert(0, item)
yading@7 83 # Item correctly inserted
yading@7 84 self.assertEqual(collection[0], item)
yading@7 85
yading@7 86 saved = self.message['body'][self.item_list][1][self.item]
yading@7 87 collection.insert(0, saved)
yading@7 88 # Item corectly casted to self.AllowedContent
yading@7 89 self.assertEqual(type(collection[0]), self.AllowedContent)
yading@7 90 # Item content integrity
yading@7 91 self.assertEqual(collection[0][self.item_id], saved[self.item_id])
yading@7 92 # Previously inserted item has shifted position
yading@7 93 self.assertEqual(collection[1], item)
yading@7 94
yading@7 95 def test_append(self):
yading@7 96 collection = self.Class()
yading@7 97 saved = self.message['body'][self.item_list][1][self.item]
yading@7 98 item = self.AllowedContent.fromDictionary(saved)
yading@7 99 collection.append(item)
yading@7 100 # Item correctly appended
yading@7 101 self.assertEqual(collection[0], item)
yading@7 102
yading@7 103 saved = self.message['body'][self.item_list][2][self.item]
yading@7 104 collection.append(saved)
yading@7 105 # Item correctly appended
yading@7 106 self.assertEqual(collection[1][self.item_id], saved[self.item_id])
yading@7 107
yading@7 108 saved = self.message['body'][self.item_list][0][self.item]
yading@7 109 collection.append(saved)
yading@7 110 # Item corectly casted to self.AllowedContent
yading@7 111 self.assertEqual(type(collection[2]), self.AllowedContent)
yading@7 112 # Item content integrity
yading@7 113 self.assertEqual(collection[2][self.item_id], saved[self.item_id])
yading@7 114
yading@7 115 def test_extend(self):
yading@7 116 items = [ i[self.item] for i in self.message['body'][self.item_list] ]
yading@7 117 collection = self.Class(self.AllowedContent(items[0]))
yading@7 118 self.assertEqual(type(collection[0]), self.AllowedContent)
yading@7 119 typed = [ self.AllowedContent(i) for i in items[1:] ]
yading@7 120 for i in typed:
yading@7 121 self.assertEqual(type(i), self.AllowedContent)
yading@7 122 collection.extend(typed)
yading@7 123 # Collection correctly extended
yading@7 124 self.assertEqual(collection[1], typed[0])
yading@7 125 self.assertEqual(collection[2], typed[1])
yading@7 126
yading@7 127 row = items[:2] + items[1:3]
yading@7 128 collection.extend(row)
yading@7 129 # Items content integrity: no duplicate
yading@7 130 self.assertEqual(len(collection), 3)
yading@7 131
yading@7 132 collection = self.Class()
yading@7 133 collection.extend(row)
yading@7 134 self.assertEqual(len(row), 4)
yading@7 135 self.assertEqual(len(collection), 3)
yading@7 136 # Items corectly casted to self.AllowedContent
yading@7 137 for i in range(3):
yading@7 138 self.assertEqual(type(collection[i]), self.AllowedContent)
yading@7 139
yading@7 140 # def test__setitem__(self):
yading@7 141 # collection = self.Class(self.AllowedContent(
yading@7 142 # self.message['body'][self.item_list][1][self.item]))
yading@7 143 # saved = self.message['body'][self.item_list][2][self.item]
yading@7 144 # item = self.AllowedContent(saved)
yading@7 145 # collection[0] = item
yading@7 146 # # Index of ItemsCollection correctly set
yading@7 147 # self.assertEqual(collection[0], item)
yading@7 148
yading@7 149 # saved = self.message['body'][self.item_list][0][self.item]
yading@7 150 # collection[0] = saved
yading@7 151 # # Item corectly casted to self.AllowedContent
yading@7 152 # self.assertEqual(type(collection[0]),self.AllowedContent)
yading@7 153 # # Item content integrity
yading@7 154 # self.assertEqual(collection[0][self.item_id], saved[self.item_id])
yading@7 155 # # Wrong setting
yading@7 156 # self.assertRaises(IndexError, collection.__setitem__, 9, saved)
yading@7 157 # self.assertRaises(TypeError, collection.__setitem__, 'test', saved)
yading@7 158
yading@7 159 def test_page(self):
yading@7 160 items = [ i[self.item] for i in self.message['body'][self.item_list] ]
yading@7 161 collection = self.Class(*items)
yading@7 162 self.assertEqual(len(collection), 3)
yading@7 163 for i in range(3):
yading@7 164 self.assertEqual(type(collection[i]), self.AllowedContent)
yading@7 165 page = collection.page(1,2)
yading@7 166 self.assertEqual(len(page), 1)
yading@7 167 self.assertEqual(type(page), self.Class)
yading@7 168 self.assertEqual(type(page[0]), self.AllowedContent)
yading@7 169
yading@7 170 def test_pages(self):
yading@7 171 items = [ i[self.item] for i in self.message['body'][self.item_list] ]
yading@7 172 collection = self.Class(*items)
yading@7 173 self.assertEqual(len(collection), 3)
yading@7 174 pages = collection.pages(2)
yading@7 175 self.assertEqual(pages, 2)
yading@7 176
yading@7 177 def test_paged(self):
yading@7 178 items = [ i[self.item] for i in self.message['body'][self.item_list] ]
yading@7 179 collection = self.Class(*items)
yading@7 180 self.assertEqual(len(collection), 3)
yading@7 181 for i in range(3):
yading@7 182 self.assertEqual(type(collection[i]), self.AllowedContent)
yading@7 183 paged = collection.paged(2)
yading@7 184 self.assertEqual(len(paged), 2)
yading@7 185 for i,l in zip(range(2), (2,1)):
yading@7 186 self.assertEqual(len(paged[i]), l)
yading@7 187 self.assertEqual(type(paged[i]), self.Class)
yading@7 188 for p,i in [(0,0),(0,1),(1,0)]:
yading@7 189 self.assertEqual(id(paged[p][i]), id(collection[(2*p)+i]))
yading@7 190
yading@7 191 def test_pager(self):
yading@7 192 items = [ i[self.item] for i in self.message['body'][self.item_list] ]
yading@7 193 collection = self.Class(*items)
yading@7 194 self.assertEqual(len(collection), 3)
yading@7 195 for i in range(3):
yading@7 196 self.assertEqual(type(collection[i]), self.AllowedContent)
yading@7 197 pager = []
yading@7 198 for page in collection.pager(2):
yading@7 199 self.assertEqual(type(page), self.Class)
yading@7 200 self.assertEqual(type(page[0]), self.AllowedContent)
yading@7 201 pager.append(page)
yading@7 202 self.assertEqual(len(pager), 2)
yading@7 203 self.assertEqual(len(pager[0]), 2)
yading@7 204 self.assertEqual(len(pager[1]), 1)
yading@7 205
yading@7 206 def test__add__(self):
yading@7 207 items = [ i[self.item] for i in self.message['body'][self.item_list] ]
yading@7 208 collection1 = self.Class(*items[:2])
yading@7 209 collection2 = self.Class(*items[1:3])
yading@7 210 collection3 = collection1 + collection2
yading@7 211 # Collection correctly created
yading@7 212 self.assertEqual(type(collection3), self.Class)
yading@7 213 self.assertEqual(len(collection3), 3)
yading@7 214