class TestRedisBayesPrideAndPrejudice(unittest.TestCase):

    def setUp(self):
        self.classifier = RedisBayesWorkClassifier(
            name="Pride and Prejudice",
            datastore=TEST_REDIS)
        self.labels = [False, # b1629290
                       False, # b2006265
                       True, # b1276421
                       True, # b1313597
                       True, # b1329008
                       True, # b1143215
                       True, # b1177629
                       False, # b1224585
                       True, # b1009861
                       True, # b1605863
                       True, # b1685471
                       False, # b1724262
                       False, # b1724269
                       False, # b1285281
                       False, # b1629141
                       False, # b1636638
                       False, # b1636639
                       False, # b1285281
                       True, # b2033293
                       False, # b1724269
                       False, # b1724262
                       False, # b1629141
                       False, # b1238652
                       False, # b1433978
                       False, # b1628582
                       False, # b1022859
                       False, # b1773251
                       False, # b2089950
                       False, # b1146944
                       False] # b1675906
        self.classifier.load_training_marc(
            os.path.join('ColoradoCollege',
                         'pride-and-prejudice.mrc'),
            self.labels)

    def test_init(self):
        self.assert_(self.classifier is not None)
        self.assertEquals(len(self.labels), 30)

        
    def test_classify_(self):
        false_tokens = ["infinite jest david foster wallace",
                        "jane austen sense sensibility"]
        true_tokens = ["pride prejudice jane austen",
                       "pride prejudice jane austen 1775 1817"]
        for tokens in false_tokens:
            print("{0} is {1}".format(tokens,
                                      self.classifier.__classify__(tokens)))
            self.assert_(not self.classifier.__classify__(tokens))
        for tokens in true_tokens:
            self.assert_(self.classifier.__classify__(tokens))
 
    def tearDown(self):
        TEST_REDIS.flushdb()
class TestRedisBayesMobyDick(unittest.TestCase):

    def setUp(self):
        self.classifier = RedisBayesWorkClassifier(
            name="Moby Dick",
            datastore=TEST_REDIS)
        self.labels = [False, False, False, True, True, False, True, False,
                       True, False, True, False, False, False, True, True, True,
                       True, True, True, False, False]
        self.classifier.load_training_marc(os.path.join('ColoradoCollege',
                                                        'moby-dick.mrc'),
                                           self.labels)

    def test_init(self):
        self.assert_(self.classifier is not None)
        self.assertEquals(len(self.labels), 22) 

    def test_classify(self):
        false_tokens = ["pride prejudice jane austen",
                        "infinite jest david foster wallace",
                        "jane eyre emily bronte"]
        true_tokens = ["moby dick hermin melville 1841 1891",
                       "moby dick herman melville"]
        for tokens in false_tokens:
            self.assert_(not self.classifier.__classify__(tokens))
        for tokens in true_tokens:
            self.assert_(self.classifier.__classify__(tokens))

     
    def tearDown(self):
        TEST_REDIS.flushdb()
class TestRedisBayesPrideAndPrejudice(unittest.TestCase):
    def setUp(self):
        self.classifier = RedisBayesWorkClassifier(name="Pride and Prejudice", datastore=TEST_REDIS)
        self.labels = [
            False,  # b1629290
            False,  # b2006265
            True,  # b1276421
            True,  # b1313597
            True,  # b1329008
            True,  # b1143215
            True,  # b1177629
            False,  # b1224585
            True,  # b1009861
            True,  # b1605863
            True,  # b1685471
            False,  # b1724262
            False,  # b1724269
            False,  # b1285281
            False,  # b1629141
            False,  # b1636638
            False,  # b1636639
            False,  # b1285281
            True,  # b2033293
            False,  # b1724269
            False,  # b1724262
            False,  # b1629141
            False,  # b1238652
            False,  # b1433978
            False,  # b1628582
            False,  # b1022859
            False,  # b1773251
            False,  # b2089950
            False,  # b1146944
            False,
        ]  # b1675906
        self.classifier.load_training_marc(os.path.join("ColoradoCollege", "pride-and-prejudice.mrc"), self.labels)

    def test_init(self):
        self.assert_(self.classifier is not None)
        self.assertEquals(len(self.labels), 30)

    def test_classify_(self):
        false_tokens = ["infinite jest david foster wallace", "jane austen sense sensibility"]
        true_tokens = ["pride prejudice jane austen", "pride prejudice jane austen 1775 1817"]
        for tokens in false_tokens:
            print("{0} is {1}".format(tokens, self.classifier.__classify__(tokens)))
            self.assert_(not self.classifier.__classify__(tokens))
        for tokens in true_tokens:
            self.assert_(self.classifier.__classify__(tokens))

    def tearDown(self):
        TEST_REDIS.flushdb()
class TestRedisBayesMobyDick(unittest.TestCase):
    def setUp(self):
        self.classifier = RedisBayesWorkClassifier(name="Moby Dick", datastore=TEST_REDIS)
        self.labels = [
            False,
            False,
            False,
            True,
            True,
            False,
            True,
            False,
            True,
            False,
            True,
            False,
            False,
            False,
            True,
            True,
            True,
            True,
            True,
            True,
            False,
            False,
        ]
        self.classifier.load_training_marc(os.path.join("ColoradoCollege", "moby-dick.mrc"), self.labels)

    def test_init(self):
        self.assert_(self.classifier is not None)
        self.assertEquals(len(self.labels), 22)

    def test_classify(self):
        false_tokens = ["pride prejudice jane austen", "infinite jest david foster wallace", "jane eyre emily bronte"]
        true_tokens = ["moby dick hermin melville 1841 1891", "moby dick herman melville"]
        for tokens in false_tokens:
            self.assert_(not self.classifier.__classify__(tokens))
        for tokens in true_tokens:
            self.assert_(self.classifier.__classify__(tokens))

    def tearDown(self):
        TEST_REDIS.flushdb()