<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=ProjectPrometheus%2FAT_RecommendationPrototype</id>
	<title>ProjectPrometheus/AT RecommendationPrototype - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=ProjectPrometheus%2FAT_RecommendationPrototype"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=ProjectPrometheus/AT_RecommendationPrototype&amp;action=history"/>
	<updated>2026-05-14T19:27:36Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=ProjectPrometheus/AT_RecommendationPrototype&amp;diff=37741&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:24, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=ProjectPrometheus/AT_RecommendationPrototype&amp;diff=37741&amp;oldid=prev"/>
		<updated>2021-02-07T05:24:04Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt; &lt;br /&gt;
 import unittest&lt;br /&gt;
 &lt;br /&gt;
 WEIGHT_VIEW = 1&lt;br /&gt;
 WEIGHT_LIGHTREVIEW = 3&lt;br /&gt;
 WEIGHT_HEAVYREVIEW = 9&lt;br /&gt;
 &lt;br /&gt;
 class Customer:&lt;br /&gt;
     def __init__(self):&lt;br /&gt;
         self.bookList = []&lt;br /&gt;
         self.bookViewList = {}&lt;br /&gt;
         self.lightReviewBookList = {}&lt;br /&gt;
         self.heavyReviewBookList = {}&lt;br /&gt;
         &lt;br /&gt;
         self.startPoint = 0 &lt;br /&gt;
 &lt;br /&gt;
     def viewBooks(self, aBookList):&lt;br /&gt;
         for book in aBookList:&lt;br /&gt;
             self.viewBook(book)&lt;br /&gt;
 &lt;br /&gt;
     def _getPrefCoef(self, aBook):&lt;br /&gt;
         point = 0&lt;br /&gt;
         if self.bookViewList.has_key(aBook):&lt;br /&gt;
             point += self.bookViewList[aBook] * WEIGHT_VIEW&lt;br /&gt;
         if self.lightReviewBookList.has_key(aBook):&lt;br /&gt;
             point += self.lightReviewBookList[aBook] * WEIGHT_LIGHTREVIEW&lt;br /&gt;
         if self.heavyReviewBookList.has_key(aBook):&lt;br /&gt;
             point += self.heavyReviewBookList[aBook] * WEIGHT_HEAVYREVIEW&lt;br /&gt;
 &lt;br /&gt;
         return point&lt;br /&gt;
 &lt;br /&gt;
     def _addBookRelation(self, aNewBook, anIncrementPoint):&lt;br /&gt;
         for book in self.bookList:&lt;br /&gt;
             aNewBook.addBookRelation(book, self._getPrefCoef(book) + self._getPrefCoef(aNewBook))&lt;br /&gt;
             book.addBookRelation(aNewBook, self._getPrefCoef(aNewBook) + self._getPrefCoef(book))&lt;br /&gt;
 &lt;br /&gt;
         self.bookList.append(aNewBook)&lt;br /&gt;
 &lt;br /&gt;
     def _editBookRelation(self, anEditBook, anIncrementPoint):&lt;br /&gt;
         for book in self.bookList:&lt;br /&gt;
             if book is not anEditBook:&lt;br /&gt;
                 anEditBook.addBookRelation(book, anIncrementPoint)&lt;br /&gt;
                 book.addBookRelation(anEditBook, anIncrementPoint)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
     def _bookAction(self, aBook, anIncrementPoint):&lt;br /&gt;
         if not aBook in self.bookList:&lt;br /&gt;
             self._addBookRelation(aBook, anIncrementPoint)&lt;br /&gt;
         else:&lt;br /&gt;
             self._editBookRelation(aBook, anIncrementPoint)&lt;br /&gt;
             self.bookList.append(aBook)&lt;br /&gt;
 &lt;br /&gt;
     def viewBook(self, aBook):&lt;br /&gt;
         if self.bookViewList.has_key(aBook):&lt;br /&gt;
             self.bookViewList[aBook] += 1 &lt;br /&gt;
         else:&lt;br /&gt;
             self.bookViewList[aBook] = 1 &lt;br /&gt;
 &lt;br /&gt;
         self._bookAction(aBook, 1 * WEIGHT_VIEW)&lt;br /&gt;
         &lt;br /&gt;
     def getViewBookList(self):&lt;br /&gt;
         return tuple(self.bookList)&lt;br /&gt;
 &lt;br /&gt;
     def lightReviewBook(self, aBook, aPoint):&lt;br /&gt;
         self.lightReviewBookList[aBook] = aPoint&lt;br /&gt;
         self._bookAction(aBook, aPoint * WEIGHT_LIGHTREVIEW)&lt;br /&gt;
 &lt;br /&gt;
     def heavyReviewBook(self, aBook, aPoint):&lt;br /&gt;
         self.heavyReviewBookList[aBook] = aPoint&lt;br /&gt;
         self._bookAction(aBook, aPoint * WEIGHT_HEAVYREVIEW)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 class Book:&lt;br /&gt;
     def __init__(self, aBookName):&lt;br /&gt;
         self.bookRelation = {}&lt;br /&gt;
         self.bookName = aBookName&lt;br /&gt;
 &lt;br /&gt;
     def addBookRelation(self, aBook, aRelationPoint):&lt;br /&gt;
         if self.bookRelation.has_key(aBook):&lt;br /&gt;
             self.bookRelation[aBook] += aRelationPoint&lt;br /&gt;
         else:&lt;br /&gt;
             self.bookRelation[aBook] = aRelationPoint&lt;br /&gt;
        &lt;br /&gt;
     def getRelatedBookList(self):&lt;br /&gt;
         return tuple(self.bookRelation)&lt;br /&gt;
 &lt;br /&gt;
     def getBookCoef(self, aBook):&lt;br /&gt;
         return self.bookRelation[aBook]&lt;br /&gt;
 &lt;br /&gt;
     def getRecommendationBookList(self):&lt;br /&gt;
         bookList = []&lt;br /&gt;
         for book in self.bookRelation.keys():&lt;br /&gt;
             bookList.append((self.bookRelation[book], book))&lt;br /&gt;
 &lt;br /&gt;
         bookList.sort()&lt;br /&gt;
         bookList.reverse()&lt;br /&gt;
 &lt;br /&gt;
         returnList = []&lt;br /&gt;
         for bookdata in bookList:&lt;br /&gt;
             returnList.append(bookdata[1])&lt;br /&gt;
 &lt;br /&gt;
         return tuple(returnList)&lt;br /&gt;
 &lt;br /&gt;
     def getRecommendationBookListLimitScore(self, aScore):&lt;br /&gt;
         bookList = []&lt;br /&gt;
         for book in self.bookRelation.keys():&lt;br /&gt;
             #print self.bookName, &amp;quot; relation : &amp;quot; , book.bookName, self.bookRelation[book]&lt;br /&gt;
             if self.bookRelation[book] &amp;amp;gt;= aScore:&lt;br /&gt;
                 bookList.append((self.bookRelation[book], book))&lt;br /&gt;
 &lt;br /&gt;
         bookList.sort()&lt;br /&gt;
         bookList.reverse()&lt;br /&gt;
 &lt;br /&gt;
         returnList = []&lt;br /&gt;
         for bookdata in bookList:&lt;br /&gt;
             returnList.append(bookdata[1])&lt;br /&gt;
 &lt;br /&gt;
         return tuple(returnList)&lt;br /&gt;
        &lt;br /&gt;
 class TestCustomer(unittest.TestCase):&lt;br /&gt;
     def testOne(self):&lt;br /&gt;
         man = Customer()&lt;br /&gt;
         book1 = Book(&amp;quot;B1&amp;quot;)&lt;br /&gt;
         book2 = Book(&amp;quot;B2&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
         man.lightReviewBook(book1, 2)&lt;br /&gt;
         man.lightReviewBook(book2, 3)&lt;br /&gt;
 &lt;br /&gt;
         self.assert_ (man.lightReviewBookList == {book1:2, book2:3})&lt;br /&gt;
            &lt;br /&gt;
 class TestRecommendationSystem(unittest.TestCase):&lt;br /&gt;
     def setUp(self):&lt;br /&gt;
         self.musician = Customer()&lt;br /&gt;
         self.mathematician = Customer()&lt;br /&gt;
         self.book1 = Book(&amp;#039;B1&amp;#039;)&lt;br /&gt;
         self.book2 = Book(&amp;#039;B2&amp;#039;)&lt;br /&gt;
         self.book3 = Book(&amp;#039;B3&amp;#039;)&lt;br /&gt;
         self.book4 = Book(&amp;#039;B4&amp;#039;)&lt;br /&gt;
         self.book5 = Book(&amp;#039;B5&amp;#039;)&lt;br /&gt;
         self.book6 = Book(&amp;#039;B6&amp;#039;)&lt;br /&gt;
         self.book7 = Book(&amp;#039;B7&amp;#039;)&lt;br /&gt;
         self.book8 = Book(&amp;#039;B8&amp;#039;)&lt;br /&gt;
         self.book9 = Book(&amp;#039;B9&amp;#039;)&lt;br /&gt;
         self.book10 = Book(&amp;#039;B10&amp;#039;)&lt;br /&gt;
  &lt;br /&gt;
     def tearDown(self):&lt;br /&gt;
         self.musician = None&lt;br /&gt;
         self.mathematician = None&lt;br /&gt;
 &lt;br /&gt;
     def testHeavyReviewSmall(self):&lt;br /&gt;
         #1,2,3,4,5 HR Point&lt;br /&gt;
         self.musician.heavyReviewBook(self.book1, 3)&lt;br /&gt;
         self.musician.heavyReviewBook(self.book2, 4)&lt;br /&gt;
 &lt;br /&gt;
         expected = 3*WEIGHT_HEAVYREVIEW + 4*WEIGHT_HEAVYREVIEW&lt;br /&gt;
         actual = self.book1.getBookCoef(self.book2)&lt;br /&gt;
         #self.assertEquals( book1.getBookCoef(book2), expected)&lt;br /&gt;
         self.assertEquals(actual, expected)&lt;br /&gt;
 &lt;br /&gt;
     def testHeavyReviewBig(self):&lt;br /&gt;
         self.musician.heavyReviewBook(self.book1, 3)&lt;br /&gt;
         self.musician.heavyReviewBook(self.book2, 4)&lt;br /&gt;
 &lt;br /&gt;
         self.assertEquals(self.book1.getBookCoef(self.book2), (3 + 4) * WEIGHT_HEAVYREVIEW)&lt;br /&gt;
 &lt;br /&gt;
         self.musician.heavyReviewBook(self.book3, 2)&lt;br /&gt;
         self.assertEquals(self.book3.getBookCoef(self.book1),(3+2) * WEIGHT_HEAVYREVIEW)&lt;br /&gt;
         self.assertEquals(self.book3.getBookCoef(self.book2), (2+4) * WEIGHT_HEAVYREVIEW)&lt;br /&gt;
 &lt;br /&gt;
         self.mathematician.heavyReviewBook(self.book2, 1)&lt;br /&gt;
         self.mathematician.heavyReviewBook(self.book3, 2)&lt;br /&gt;
 &lt;br /&gt;
         self.assertEquals(self.book2.getBookCoef(self.book3), (6+3) * WEIGHT_HEAVYREVIEW)&lt;br /&gt;
         self.assertEquals(self.book3.getBookCoef(self.book2), (6+3) * WEIGHT_HEAVYREVIEW)&lt;br /&gt;
         &lt;br /&gt;
         self.mathematician.heavyReviewBook(self.book1, 5)&lt;br /&gt;
 &lt;br /&gt;
         self.assertEquals(self.book1.getBookCoef(self.book3), (2+5+5) * WEIGHT_HEAVYREVIEW)&lt;br /&gt;
         self.assertEquals(self.book1.getBookCoef(self.book2), (7+5+1) * WEIGHT_HEAVYREVIEW)&lt;br /&gt;
 &lt;br /&gt;
         self.musician.heavyReviewBook(self.book4, 4)&lt;br /&gt;
         self.mathematician.heavyReviewBook(self.book4,3)&lt;br /&gt;
 &lt;br /&gt;
         self.assertEquals(self.book4.getBookCoef(self.book1), (7+8) * WEIGHT_HEAVYREVIEW)&lt;br /&gt;
         self.assertEquals(self.book4.getBookCoef(self.book2), (8+4) * WEIGHT_HEAVYREVIEW)&lt;br /&gt;
         self.assertEquals(self.book4.getBookCoef(self.book3), (6+5) * WEIGHT_HEAVYREVIEW)&lt;br /&gt;
 &lt;br /&gt;
     def testLightReviewBig(self):&lt;br /&gt;
         self.musician.lightReviewBook(self.book1, 3)&lt;br /&gt;
         self.musician.lightReviewBook(self.book2, 4)&lt;br /&gt;
 &lt;br /&gt;
         self.assertEquals(self.book1.getBookCoef(self.book2), (3 + 4) * WEIGHT_LIGHTREVIEW)&lt;br /&gt;
 &lt;br /&gt;
         self.musician.lightReviewBook(self.book3, 2)&lt;br /&gt;
         self.assertEquals(self.book3.getBookCoef(self.book1),(3+2) * WEIGHT_LIGHTREVIEW)&lt;br /&gt;
         self.assertEquals(self.book3.getBookCoef(self.book2), (2+4) * WEIGHT_LIGHTREVIEW)&lt;br /&gt;
 &lt;br /&gt;
         self.mathematician.lightReviewBook(self.book2, 1)&lt;br /&gt;
         self.mathematician.lightReviewBook(self.book3, 2)&lt;br /&gt;
 &lt;br /&gt;
         self.assertEquals(self.book2.getBookCoef(self.book3), (6+3) * WEIGHT_LIGHTREVIEW)&lt;br /&gt;
         self.assertEquals(self.book3.getBookCoef(self.book2), (6+3) * WEIGHT_LIGHTREVIEW)&lt;br /&gt;
         &lt;br /&gt;
         self.mathematician.lightReviewBook(self.book1, 5)&lt;br /&gt;
 &lt;br /&gt;
         self.assertEquals(self.book1.getBookCoef(self.book3), (2+5+5) * WEIGHT_LIGHTREVIEW)&lt;br /&gt;
         self.assertEquals(self.book1.getBookCoef(self.book2), (7+5+1) * WEIGHT_LIGHTREVIEW)&lt;br /&gt;
 &lt;br /&gt;
         self.musician.lightReviewBook(self.book4, 4)&lt;br /&gt;
         self.mathematician.lightReviewBook(self.book4,3)&lt;br /&gt;
 &lt;br /&gt;
         self.assertEquals(self.book4.getBookCoef(self.book1), (7+8) * WEIGHT_LIGHTREVIEW)&lt;br /&gt;
         self.assertEquals(self.book4.getBookCoef(self.book2), (8+4) * WEIGHT_LIGHTREVIEW)&lt;br /&gt;
         self.assertEquals(self.book4.getBookCoef(self.book3), (6+5) * WEIGHT_LIGHTREVIEW)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
     def testLightReviewSmall(self):&lt;br /&gt;
         #1,2,3,4,5 LR Point&lt;br /&gt;
         self.musician.lightReviewBook(self.book1, 3)&lt;br /&gt;
         self.musician.lightReviewBook(self.book2, 4)&lt;br /&gt;
 &lt;br /&gt;
         expected = 3 * WEIGHT_LIGHTREVIEW + 4 * WEIGHT_LIGHTREVIEW &lt;br /&gt;
         actual = self.book1.getBookCoef(self.book2)&lt;br /&gt;
         self.assertEquals(actual, expected)&lt;br /&gt;
 &lt;br /&gt;
     def testViewBook(self):&lt;br /&gt;
         self.musician.viewBooks((self.book9,))&lt;br /&gt;
         self.musician.viewBooks((self.book10,))&lt;br /&gt;
         expectedList = (self.book9,self.book10,)&lt;br /&gt;
         &lt;br /&gt;
         self.assert_(expectedList == self.musician.getViewBookList()) &lt;br /&gt;
 &lt;br /&gt;
     def testViewSmall(self):&lt;br /&gt;
         self.musician.viewBook(self.book9)&lt;br /&gt;
         self.musician.viewBook(self.book10)&lt;br /&gt;
 &lt;br /&gt;
         actual = self.book9.getBookCoef(self.book10)&lt;br /&gt;
         expected = 2&lt;br /&gt;
         self.assertEquals (actual, expected)&lt;br /&gt;
         &lt;br /&gt;
         self.musician.viewBook(self.book1)&lt;br /&gt;
 &lt;br /&gt;
         self.assertEquals(self.book1.getBookCoef(self.book9), 2)&lt;br /&gt;
         self.assertEquals(self.book1.getBookCoef(self.book10), 2)&lt;br /&gt;
         &lt;br /&gt;
         self.assertEquals(self.book9.getBookCoef(self.book1), 2)&lt;br /&gt;
         self.assertEquals(self.book9.getBookCoef(self.book10), 2)&lt;br /&gt;
 &lt;br /&gt;
         self.assertEquals(self.book10.getBookCoef(self.book1), 2)&lt;br /&gt;
         self.assertEquals(self.book10.getBookCoef(self.book9), 2)&lt;br /&gt;
 &lt;br /&gt;
     def testViewBig(self):&lt;br /&gt;
         self.musician.viewBook(self.book9)&lt;br /&gt;
         self.musician.viewBook(self.book10)&lt;br /&gt;
 &lt;br /&gt;
         actual = self.book9.getBookCoef(self.book10)&lt;br /&gt;
         expected = 2&lt;br /&gt;
         self.assertEquals (actual, expected)&lt;br /&gt;
         &lt;br /&gt;
         self.musician.viewBook(self.book1)&lt;br /&gt;
 &lt;br /&gt;
         self.assertEquals(self.book1.getBookCoef(self.book9), 2)&lt;br /&gt;
         self.assertEquals(self.book1.getBookCoef(self.book10), 2)&lt;br /&gt;
         &lt;br /&gt;
         self.assertEquals(self.book9.getBookCoef(self.book1), 2)&lt;br /&gt;
         self.assertEquals(self.book9.getBookCoef(self.book10), 2)&lt;br /&gt;
 &lt;br /&gt;
         self.assertEquals(self.book10.getBookCoef(self.book1), 2)&lt;br /&gt;
         self.assertEquals(self.book10.getBookCoef(self.book9), 2) &lt;br /&gt;
 &lt;br /&gt;
         self.mathematician.viewBook(self.book6)&lt;br /&gt;
         self.mathematician.viewBook(self.book7)&lt;br /&gt;
         self.mathematician.viewBook(self.book10)&lt;br /&gt;
         self.mathematician.viewBook(self.book9)&lt;br /&gt;
 &lt;br /&gt;
         self.assertEquals(self.book10.getBookCoef(self.book9), 4) &lt;br /&gt;
         self.assertEquals(self.book9.getBookCoef(self.book10), 4) &lt;br /&gt;
 &lt;br /&gt;
         self.assertEquals(self.book6.getBookCoef(self.book7), 2)&lt;br /&gt;
         self.assertEquals(self.book6.getBookCoef(self.book9), 2)&lt;br /&gt;
 &lt;br /&gt;
     def testVLH(self):&lt;br /&gt;
         self.musician.viewBook(self.book1)&lt;br /&gt;
         self.musician.viewBook(self.book2)&lt;br /&gt;
         self.assertEquals(self.book1.getBookCoef(self.book2), 2 * WEIGHT_VIEW)&lt;br /&gt;
 &lt;br /&gt;
         self.musician.lightReviewBook(self.book1, 2)&lt;br /&gt;
         self.assertEquals(self.book2.getBookCoef(self.book1), 2 * WEIGHT_LIGHTREVIEW + 2 * WEIGHT_VIEW)&lt;br /&gt;
         self.assertEquals(self.book1.getBookCoef(self.book2), 2 * WEIGHT_LIGHTREVIEW + 2 * WEIGHT_VIEW)&lt;br /&gt;
 &lt;br /&gt;
     def testRecommendationBookList(self):&lt;br /&gt;
         self.musician.lightReviewBook(self.book1, 3)&lt;br /&gt;
         self.musician.lightReviewBook(self.book2, 4)&lt;br /&gt;
         self.musician.lightReviewBook(self.book3, 5)&lt;br /&gt;
         self.musician.lightReviewBook(self.book4, 1)&lt;br /&gt;
        &lt;br /&gt;
         bookList = self.book1.getRecommendationBookList()&lt;br /&gt;
         expected = ( self.book3, self.book2, self.book4 )&lt;br /&gt;
         self.assertEquals(bookList, expected)&lt;br /&gt;
 &lt;br /&gt;
         #for book in bookList:&lt;br /&gt;
         #    print book.bookName&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
     def testRecommendationBookListBig(self):&lt;br /&gt;
         self.musician.lightReviewBook(self.book1, 3)&lt;br /&gt;
         self.musician.lightReviewBook(self.book2, 4)&lt;br /&gt;
         self.musician.lightReviewBook(self.book3, 5)&lt;br /&gt;
         self.musician.lightReviewBook(self.book4, 1)&lt;br /&gt;
 &lt;br /&gt;
         self.musician.heavyReviewBook(self.book1, 3)&lt;br /&gt;
         self.musician.heavyReviewBook(self.book2, 5)&lt;br /&gt;
         self.musician.heavyReviewBook(self.book3, 4)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
         self.mathematician.heavyReviewBook(self.book4, 5)&lt;br /&gt;
         self.mathematician.heavyReviewBook(self.book9, 2)&lt;br /&gt;
         self.mathematician.lightReviewBook(self.book3, 3)&lt;br /&gt;
 &lt;br /&gt;
         bookList = self.book1.getRecommendationBookList()&lt;br /&gt;
         self.assertEquals(bookList,(self.book2,self.book3,self.book4))&lt;br /&gt;
 &lt;br /&gt;
         bookList = self.book2.getRecommendationBookList()&lt;br /&gt;
         self.assertEquals(bookList,(self.book3,self.book1,self.book4))&lt;br /&gt;
 &lt;br /&gt;
         bookList = self.book3.getRecommendationBookList()&lt;br /&gt;
         self.assertEquals(bookList,(self.book2,self.book1,self.book4,self.book9))&lt;br /&gt;
 &lt;br /&gt;
         bookList = self.book4.getRecommendationBookList()&lt;br /&gt;
         self.assertEquals(bookList,(self.book3,self.book9,self.book2,self.book1))&lt;br /&gt;
 &lt;br /&gt;
     def testRecommendationBookListLimitScore(self):&lt;br /&gt;
         self.musician.lightReviewBook(self.book1, 3)&lt;br /&gt;
         self.musician.lightReviewBook(self.book2, 4)&lt;br /&gt;
         self.musician.lightReviewBook(self.book3, 5)&lt;br /&gt;
         self.musician.lightReviewBook(self.book4, 1)&lt;br /&gt;
 &lt;br /&gt;
         limitedBookList = self.book1.getRecommendationBookListLimitScore(15)&lt;br /&gt;
         expected = (self.book3, self.book2)&lt;br /&gt;
         self.assertEquals(limitedBookList, expected)&lt;br /&gt;
     def testRecommendationBookListLimitScoreMore(self):&lt;br /&gt;
         self.musician.lightReviewBook(self.book1, 3)&lt;br /&gt;
         self.musician.lightReviewBook(self.book2, 4)&lt;br /&gt;
         self.musician.lightReviewBook(self.book3, 5)&lt;br /&gt;
         self.musician.lightReviewBook(self.book4, 1)&lt;br /&gt;
 &lt;br /&gt;
         self.mathematician.lightReviewBook(self.book1, 3)&lt;br /&gt;
         self.mathematician.lightReviewBook(self.book3, 4)&lt;br /&gt;
         self.mathematician.lightReviewBook(self.book5, 5)&lt;br /&gt;
         self.mathematician.lightReviewBook(self.book7, 5)&lt;br /&gt;
         self.mathematician.lightReviewBook(self.book9, 5)&lt;br /&gt;
         &lt;br /&gt;
         limitedBookList = self.book1.getRecommendationBookListLimitScore(15)&lt;br /&gt;
         expected = (self.book3,self.book9,self.book7,self.book5,self.book2)&lt;br /&gt;
         self.assertEquals(limitedBookList, expected)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 def printBookList(aBookList):&lt;br /&gt;
     output = &amp;#039;\n&amp;#039;&lt;br /&gt;
     for book in aBookList:&lt;br /&gt;
         output += book.bookName&lt;br /&gt;
         output += &amp;#039;,&amp;#039;&lt;br /&gt;
     print output&lt;br /&gt;
 &lt;br /&gt;
         &lt;br /&gt;
 if __name__==&amp;quot;__main__&amp;quot;:&lt;br /&gt;
     unittest.main(argv=(&amp;#039;&amp;#039;, &amp;#039;-v&amp;#039;))&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>