Skip to content

Commit

Permalink
Clean up pointer handling and add tests
Browse files Browse the repository at this point in the history
  • Loading branch information
blink1073 committed Feb 4, 2017
1 parent 82b106a commit ac0b652
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 3 deletions.
2 changes: 0 additions & 2 deletions oct2py/core.py
Expand Up @@ -27,8 +27,6 @@

# TODO:
# add tests for:
# get_pointer - variable, function, class, object instance
# push and pull - object
# feval - store_as, variable ptr, function ptr, class ptr,
# object instance ptr

Expand Down
2 changes: 1 addition & 1 deletion oct2py/dynamic.py
Expand Up @@ -236,4 +236,4 @@ def _make_function_ptr_instance(session, name):
def _make_variable_ptr_instance(session, name):
"""Make a pointer instance for a given variable by name.
"""
return OctavePtr(weakref.ref(session), name, name)
return OctaveVariablePtr(weakref.ref(session), name, name)
28 changes: 28 additions & 0 deletions oct2py/tests/test_usage.py
Expand Up @@ -162,3 +162,31 @@ def test_octave_class(self):
text = hdlr.stream.getvalue().strip()
self.oc.logger.removeHandler(hdlr)
assert 'X + 2 * X ^ 2' in text

self.oc.push('y', p0)
p2 = self.oc.pull('y')
assert np.allclose(p2.poly, [1, 2, 3])

def test_get_pointer(self):
self.oc.push('y', 1)
yptr = self.oc.get_pointer('y')
assert yptr.name == 'y'
assert yptr.value == 1
assert yptr.address == 'y'

onesptr = self.oc.get_pointer('ones')
assert onesptr.name == 'ones'
assert onesptr.address == '@ones'

self.oc.eval('p = polynomial([1,2,3])')
ppter = self.oc.get_pointer('p')
assert ppter.name == 'p'
assert ppter.address == 'p'
p = ppter.value
assert np.allclose(p.poly, [1, 2, 3])

clsptr = self.oc.get_pointer('polynomial')
value = clsptr([1, 2, 3])
assert np.allclose(value.poly, [1, 2, 3])

self.assertRaises(Oct2PyError, self.oc.get_pointer, 'foo')

0 comments on commit ac0b652

Please sign in to comment.