Skip to content
This repository has been archived by the owner on Sep 1, 2023. It is now read-only.

Commit

Permalink
Cleanup delta encoder unit tests
Browse files Browse the repository at this point in the history
  • Loading branch information
oxtopus committed Apr 9, 2015
1 parent 0c5b45e commit 571e4ef
Showing 1 changed file with 49 additions and 39 deletions.
88 changes: 49 additions & 39 deletions tests/unit/nupic/encoders/delta_test.py
Expand Up @@ -31,8 +31,10 @@

from nupic.encoders.delta_capnp import DeltaEncoderProto



class DeltaEncoderTest(unittest.TestCase):
'''Unit tests for DeltaEncoder class'''
"""Unit tests for DeltaEncoder class"""


def setUp(self):
Expand All @@ -41,59 +43,67 @@ def setUp(self):


def testDeltaEncoder(self):
"""simple delta reconstruction test"""
for i in range(5):
encarr = self._dencoder.encodeIntoArray(i, np.zeros(100), learn=True)
self._dencoder.setStateLock(True)
for i in range(5, 7):
encarr = self._dencoder.encodeIntoArray(i, np.zeros(100), learn=True)
res = self._dencoder.topDownCompute(encarr)
self.assertEqual(res[0].value, 6)
self.assertEqual(self._dencoder.topDownCompute(encarr)[0].value, res[0].value)
self.assertEqual(self._dencoder.topDownCompute(encarr)[0].scalar, res[0].scalar)
self.assertTrue((self._dencoder.topDownCompute(encarr)[0].encoding == res[0].encoding).all())
"""simple delta reconstruction test"""
for i in range(5):
encarr = self._dencoder.encodeIntoArray(i, np.zeros(100), learn=True)
self._dencoder.setStateLock(True)
for i in range(5, 7):
encarr = self._dencoder.encodeIntoArray(i, np.zeros(100), learn=True)
res = self._dencoder.topDownCompute(encarr)
self.assertEqual(res[0].value, 6)
self.assertEqual(self._dencoder.topDownCompute(encarr)[0].value,
res[0].value)
self.assertEqual(self._dencoder.topDownCompute(encarr)[0].scalar,
res[0].scalar)
self.assertTrue(np.array_equal(
self._dencoder.topDownCompute(encarr)[0].encoding,
res[0].encoding))


def testEncodingVerification(self):
"""encoding verification test passed"""
feedIn = [1, 10, 4, 7, 9, 6, 3, 1]
expectedOut = [0, 9, -6, 3, 2, -3, -3, -2]
self._dencoder.setStateLock(False)
#Check that the deltas are being returned correctly.
for i in range(len(feedIn)):
aseencode = np.zeros(100)
self._adaptscalar.encodeIntoArray(expectedOut[i], aseencode, learn=True)
delencode = np.zeros(100)
self._dencoder.encodeIntoArray(feedIn[i], delencode, learn=True)
self.assertTrue((delencode[0] == aseencode[0]).all())
"""encoding verification test passed"""
feedIn = [1, 10, 4, 7, 9, 6, 3, 1]
expectedOut = [0, 9, -6, 3, 2, -3, -3, -2]
self._dencoder.setStateLock(False)
#Check that the deltas are being returned correctly.
for i in range(len(feedIn)):
aseencode = np.zeros(100)
self._adaptscalar.encodeIntoArray(expectedOut[i], aseencode, learn=True)
delencode = np.zeros(100)
self._dencoder.encodeIntoArray(feedIn[i], delencode, learn=True)
self.assertTrue(np.array_equal(delencode[0], aseencode[0]))


def testLockingState(self):
"""Check that locking the state works correctly"""
feedIn = [1, 10, 9, 7, 9, 6, 3, 1]
expectedOut = [0, 9, -6, 3, 2, -3, -3, -2]
for i in range(len(feedIn)):
if i == 3:
self._dencoder.setStateLock(True)
"""Check that locking the state works correctly"""
feedIn = [1, 10, 9, 7, 9, 6, 3, 1]
expectedOut = [0, 9, -6, 3, 2, -3, -3, -2]
for i in range(len(feedIn)):
if i == 3:
self._dencoder.setStateLock(True)

aseencode = np.zeros(100)
self._adaptscalar.encodeIntoArray(expectedOut[i], aseencode, learn=True)
delencode = np.zeros(100)
if i>=3:
self._dencoder.encodeIntoArray(feedIn[i]-feedIn[2], delencode, learn=True)
else:
self._dencoder.encodeIntoArray(expectedOut[i], delencode, learn=True)
aseencode = np.zeros(100)
self._adaptscalar.encodeIntoArray(expectedOut[i], aseencode, learn=True)
delencode = np.zeros(100)
if i>=3:
self._dencoder.encodeIntoArray(feedIn[i]-feedIn[2], delencode,
learn=True)
else:
self._dencoder.encodeIntoArray(expectedOut[i], delencode, learn=True)

self.assertTrue((delencode[0] == aseencode[0]).all())
self.assertTrue(np.array_equal(delencode[0], aseencode[0]))


def testEncodeInvalidInputType(self):
try:
self._dencoder.encode("String")
except TypeError as e:
self.assertEqual(e.message, "Expected a scalar input but got input of type <type 'str'>")
self.assertEqual(
e.message,
"Expected a scalar input but got input of type <type 'str'>")
else:
self.fail("Should have thrown TypeError during attempt to encode string with scalar encoder.")
self.fail("Should have thrown TypeError during attempt to encode string "
"with scalar encoder.")


def testReadWrite(self):
Expand Down

0 comments on commit 571e4ef

Please sign in to comment.