Esempio n. 1
0
class ELMTest(unittest.TestCase):
    # We will test both FP and FN versions of the ELM
    def setUp(self):
        self.mockConnectionPool = Mock(spec=pycassa.pool.ConnectionPool)
        self.minimizationType = 'FP'
        self.numberNeurons = 100


    def test_init(self):
        # Check that wrong input raises exception
        self.assertRaises(Exception, ELM, 'SomeString', self.mockConnectionPool, self.numberNeurons)
        self.assertRaises(Exception, ELM, self.minimizationType, 'NotAConnectionPool', self.numberNeurons)
        self.assertRaises(Exception, ELM, self.minimizationType, self.mockConnectionPool, 'NotANumber')
        
    @patch('elm.pycassa.columnfamily.ColumnFamily')    
    def test_createTrainingData(self, mockFunction):
        returnedMock = Mock(spec=pycassa.ColumnFamily)
        returnedMock.get = mock_columnfamilyget
        returnedMock.get_range = mock_columnfamilyget_range
        returnedMock.batch = Mock()
        mockbatchinsert = Mock()
        mockbatchinsert.insert = mock_batchinsert
        mockbatch = Mock()
        mockbatch.__enter__ = Mock(return_value=mockbatchinsert)
        mockbatch.__exit__ = Mock(return_value=False)
        mockFunction.return_value = returnedMock
        returnedMock.batch.return_value = mockbatch
        self.myELM = ELM(self.minimizationType, self.mockConnectionPool, self.numberNeurons)
        self.myELM.createTrainingData()

    @patch('elm.pycassa.columnfamily.ColumnFamily')
    def test_storeTrainingDataToCassandra(self, mockFunction):
        returnedMock = Mock(spec=pycassa.ColumnFamily)
        returnedMock.get = mock_columnfamilyget
        returnedMock.get_range = mock_columnfamilyget_range
        returnedMock.batch = Mock()
        mockbatchinsert = Mock()
        mockbatchinsert.insert = mock_batchinsert
        mockbatch = Mock()
        mockbatch.__enter__ = Mock(return_value=mockbatchinsert)
        mockbatch.__exit__ = Mock(return_value=False)
        mockFunction.return_value = returnedMock
        returnedMock.batch.return_value = mockbatch
        self.myELM = ELM(self.minimizationType, self.mockConnectionPool, self.numberNeurons)
        self.myELM.createTrainingData()
        self.myELM.storeTrainingDataToCassandra()

    @patch('elm.pycassa.columnfamily.ColumnFamily')
    def test_train(self, mockFunction):
        returnedMock = Mock(spec=pycassa.ColumnFamily)
        returnedMock.get = mock_columnfamilyget
        returnedMock.batch = Mock()
        mockbatchinsert = Mock()
        mockbatchinsert.insert = mock_batchinsert
        mockbatch = Mock()
        mockbatch.__enter__ = Mock(return_value=mockbatchinsert)
        mockbatch.__exit__ = Mock(return_value=False)
        mockFunction.return_value = returnedMock
        returnedMock.batch.return_value = mockbatch
        self.myELM = ELM(self.minimizationType, self.mockConnectionPool, self.numberNeurons)
        self.myELM.train()


    @patch('elm.pycassa.columnfamily.ColumnFamily')
    def test_verdict(self, mockFunction):
        returnedMock = Mock(spec=pycassa.ColumnFamily)
        returnedMock.get = mock_columnfamilyget
        mockFunction.return_value = returnedMock

        self.myELM = ELM(self.minimizationType, self.mockConnectionPool, self.numberNeurons)
        self.myELM.train()

        inputTestData = np.loadtxt('./test_input_data_training_elm.txt').reshape((633, 9))
        outputTestData = np.loadtxt('./test_output_data_training_elm.txt').reshape((633, 1))
        ELMTestingData = ELMData(inputTestData, outputTestData, [], [])