diff musixmatch-master/tests/base.py @ 7:8c29444cb5fd

Just did some work
author Yading Song <yading.song@eecs.qmul.ac.uk>
date Sat, 20 Apr 2013 19:01:57 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/musixmatch-master/tests/base.py	Sat Apr 20 19:01:57 2013 +0200
@@ -0,0 +1,214 @@
+import unittest
+from musixmatch import *
+
+class TestBase(unittest.TestCase):
+
+    Class = base.Base
+    def test_label(self):
+        self.assertEqual(self.Class.label(), self.Class.__name__.lower())
+
+class TestItem(TestBase):
+    Class = base.Item
+    item = { "item_id": "9673" }
+    item_str = "{   'item_id': '9673'}"
+    item_repr = "Item({'item_id': '9673'})"
+    item_hash = 9673
+    item_id = 'item_id'
+
+    # def test_fromResponseMessage(self):
+    #     self.assertRaises(api.Error,
+    #         self.Class.fromResponseMessage, self.fail)
+    #     success = self.Class.fromResponseMessage(self.success)
+    #     self.assertEqual(success[item_id],
+    #         self.success['body'][self.label()][self.item_id])
+    def test_fromDictionary(self):
+        item = self.Class.fromDictionary(self.item)
+        # Data integrity
+        for k in self.item.keys():
+            self.assertEqual(item[k], self.item[k])
+
+    def test__str__(self):
+        item = self.Class.fromDictionary(self.item)
+        self.assertEqual(str(item),self.item_str)
+
+    def test__repr__(self):
+        item = self.Class.fromDictionary(self.item)
+        self.assertEqual(repr(item),self.item_repr)
+
+    def test__hash__(self):
+        item = self.Class.fromDictionary(self.item)
+        self.assertEqual(hash(item), self.item_hash)
+
+class TestCollection(unittest.TestCase):
+
+    Class = base.ItemsCollection
+    AllowedContent = base.ItemsCollection.allowedin()
+    item_list = 'item_list'
+    item_id = 'item_id'
+    item = 'item'
+    message = {
+        "body": {
+            "item_list": [
+                {
+                    "item": {
+                        "item_id": "292",
+                        "item_name": "item_292"
+                    }
+                },
+                {
+                    "item": {
+                        "item_id": "8976",
+                        "item_name": "item_8976"
+                    }
+                },
+                {
+                    "item": {
+                        "item_id": "9673",
+                        "item_name": "item_9673"
+                    }
+                }
+            ]
+        },
+        "header": {
+            "execute_time": 0.14144802093506001,
+            "status_code": 200
+        }
+    }
+
+    def test_insert(self):
+        collection = self.Class()
+        saved = self.message['body'][self.item_list][0][self.item]
+        item = self.AllowedContent(saved)
+        collection.insert(0, item)
+        # Item correctly inserted
+        self.assertEqual(collection[0], item)
+
+        saved = self.message['body'][self.item_list][1][self.item]
+        collection.insert(0, saved)
+        # Item corectly casted to self.AllowedContent
+        self.assertEqual(type(collection[0]), self.AllowedContent)
+        # Item content integrity
+        self.assertEqual(collection[0][self.item_id], saved[self.item_id])
+        # Previously inserted item has shifted position
+        self.assertEqual(collection[1], item)
+
+    def test_append(self):
+        collection = self.Class()
+        saved = self.message['body'][self.item_list][1][self.item]
+        item = self.AllowedContent.fromDictionary(saved)
+        collection.append(item)
+        # Item correctly appended
+        self.assertEqual(collection[0], item)
+
+        saved = self.message['body'][self.item_list][2][self.item]
+        collection.append(saved)
+        # Item correctly appended
+        self.assertEqual(collection[1][self.item_id], saved[self.item_id])
+
+        saved = self.message['body'][self.item_list][0][self.item]
+        collection.append(saved)
+        # Item corectly casted to self.AllowedContent
+        self.assertEqual(type(collection[2]), self.AllowedContent)
+        # Item content integrity
+        self.assertEqual(collection[2][self.item_id], saved[self.item_id])
+
+    def test_extend(self):
+        items = [ i[self.item] for i in self.message['body'][self.item_list] ]
+        collection = self.Class(self.AllowedContent(items[0]))
+        self.assertEqual(type(collection[0]), self.AllowedContent)
+        typed = [ self.AllowedContent(i) for i in items[1:] ]
+        for i in typed:
+            self.assertEqual(type(i), self.AllowedContent)
+        collection.extend(typed)
+        # Collection correctly extended
+        self.assertEqual(collection[1], typed[0])
+        self.assertEqual(collection[2], typed[1])
+
+        row = items[:2] + items[1:3]
+        collection.extend(row)
+        # Items content integrity: no duplicate
+        self.assertEqual(len(collection), 3)
+
+        collection = self.Class()
+        collection.extend(row)
+        self.assertEqual(len(row), 4)
+        self.assertEqual(len(collection), 3)
+        # Items corectly casted to self.AllowedContent
+        for i in range(3):
+            self.assertEqual(type(collection[i]), self.AllowedContent)
+
+    # def test__setitem__(self):
+    #     collection = self.Class(self.AllowedContent(
+    #         self.message['body'][self.item_list][1][self.item]))
+    #     saved = self.message['body'][self.item_list][2][self.item]
+    #     item = self.AllowedContent(saved)
+    #     collection[0] = item
+    #     # Index of ItemsCollection correctly set
+    #     self.assertEqual(collection[0], item)
+
+    #     saved = self.message['body'][self.item_list][0][self.item]
+    #     collection[0] = saved
+    #     # Item corectly casted to self.AllowedContent
+    #     self.assertEqual(type(collection[0]),self.AllowedContent)
+    #     # Item content integrity
+    #     self.assertEqual(collection[0][self.item_id], saved[self.item_id])
+    #     # Wrong setting
+    #     self.assertRaises(IndexError, collection.__setitem__, 9, saved)
+    #     self.assertRaises(TypeError, collection.__setitem__, 'test', saved)
+
+    def test_page(self):
+        items = [ i[self.item] for i in self.message['body'][self.item_list] ]
+        collection = self.Class(*items)
+        self.assertEqual(len(collection), 3)
+        for i in range(3):
+            self.assertEqual(type(collection[i]), self.AllowedContent)
+        page = collection.page(1,2)
+        self.assertEqual(len(page), 1)
+        self.assertEqual(type(page), self.Class)
+        self.assertEqual(type(page[0]), self.AllowedContent)
+
+    def test_pages(self):
+        items = [ i[self.item] for i in self.message['body'][self.item_list] ]
+        collection = self.Class(*items)
+        self.assertEqual(len(collection), 3)
+        pages = collection.pages(2)
+        self.assertEqual(pages, 2)
+
+    def test_paged(self):
+        items = [ i[self.item] for i in self.message['body'][self.item_list] ]
+        collection = self.Class(*items)
+        self.assertEqual(len(collection), 3)
+        for i in range(3):
+            self.assertEqual(type(collection[i]), self.AllowedContent)
+        paged = collection.paged(2)
+        self.assertEqual(len(paged), 2)
+        for i,l in zip(range(2), (2,1)):
+            self.assertEqual(len(paged[i]), l)
+            self.assertEqual(type(paged[i]), self.Class)
+        for p,i in [(0,0),(0,1),(1,0)]:
+            self.assertEqual(id(paged[p][i]), id(collection[(2*p)+i]))
+
+    def test_pager(self):
+        items = [ i[self.item] for i in self.message['body'][self.item_list] ]
+        collection = self.Class(*items)
+        self.assertEqual(len(collection), 3)
+        for i in range(3):
+            self.assertEqual(type(collection[i]), self.AllowedContent)
+        pager = []
+        for page in collection.pager(2):
+            self.assertEqual(type(page), self.Class)
+            self.assertEqual(type(page[0]), self.AllowedContent)
+            pager.append(page)
+        self.assertEqual(len(pager), 2)
+        self.assertEqual(len(pager[0]), 2)
+        self.assertEqual(len(pager[1]), 1)
+
+    def test__add__(self):
+        items = [ i[self.item] for i in self.message['body'][self.item_list] ]
+        collection1 = self.Class(*items[:2])
+        collection2 = self.Class(*items[1:3])
+        collection3 = collection1 + collection2
+        # Collection correctly created
+        self.assertEqual(type(collection3), self.Class)
+        self.assertEqual(len(collection3), 3)
+