Skip to content

Commit

Permalink
Bugfix with arrays. Added a test.
Browse files Browse the repository at this point in the history
  • Loading branch information
mwolf76 committed Mar 19, 2012
1 parent e99086d commit ea0cabc
Show file tree
Hide file tree
Showing 6 changed files with 99 additions and 4 deletions.
2 changes: 1 addition & 1 deletion configure.ac
Expand Up @@ -46,7 +46,7 @@ AM_PROG_CC_C_O
AC_PROG_CPP
AC_PROG_CXX
AC_PROG_CXXCPP
CFLAGS="-Wall -Wstrict-prototypes -O3 -fomit-frame-pointer -funroll-loops $excflags$oldcflags"
CFLAGS="-Wall -Wstrict-prototypes -O0 -g -fomit-frame-pointer -funroll-loops $excflags$oldcflags"

if test "x$ac_cv_prog_CPP" != "x"; then
AC_DEFINE(HAVE_CPP, 1, Have preprocessor)
Expand Down
2 changes: 1 addition & 1 deletion src/c/array/array.c
Expand Up @@ -65,7 +65,7 @@ int array_insert(array_ptr array, unsigned index, generic_ptr buf)
((res = array_resize(array, 1 + index)) != ARRAY_OK))
return res;

memcpy(array->space + index, buf, sizeof(generic_ptr));
*(array->space + index) = buf;
if (index >= array->num) array->num = index + 1;

return ARRAY_OK;
Expand Down
5 changes: 4 additions & 1 deletion src/cython/array.pyx
Expand Up @@ -123,7 +123,10 @@ cdef class Array(object):
&value) != 0):
raise ValueError()

return <object> value
if value is NULL:
return None
else:
return <object> value

def __setitem__(self, unsigned ndx, object value):
"""__setitem__(key, value) <==> T[key] = value, O(log(n))
Expand Down
2 changes: 1 addition & 1 deletion src/cython/setup.py
Expand Up @@ -18,7 +18,7 @@
),
Extension("array", ["array.pyx"],
libraries=["array"],
# extra_compile_args=["-O0"],
extra_compile_args=["-O0"],

)
]
Expand Down
3 changes: 3 additions & 0 deletions test/test.py
@@ -1,11 +1,14 @@
import unittest

from test_avl import TestAvl
from test_ht import TestHt
from test_array import TestArray

if __name__ == '__main__':
suite = unittest.TestSuite()

suite.addTest(unittest.makeSuite(TestAvl))
suite.addTest(unittest.makeSuite(TestHt))
suite.addTest(unittest.makeSuite(TestArray))

unittest.TextTestRunner(verbosity=2).run(suite)
89 changes: 89 additions & 0 deletions test/test_array.py
@@ -0,0 +1,89 @@
import unittest
from hops import array

class TestArray(unittest.TestCase):
"""A test class for the array module.
"""
def setUp(self):
"""set up data used in the tests. setUp is called before each
test function execution.
"""
self.array = array.Array()

def testCount(self):
self.assertEquals(0, len(self.array))
for i in range(99, -1, -1):
self.array[i] = i
self.assertEquals(100, len(self.array))

# def testClear(self):
# self.assertEquals(0, len(self.array))
# for i in range(99, -1, -1):
# self.array.insert(0, i)
# self.array.clear()
# self.assertEquals(0, len(self.array))

# def testKeyInsertion(self):
# self.array.insert(42)
# self.assertTrue(42 in self.array)

# def testKeyGetter(self):
# self.array.insert(42)
# self.assertEquals(self.array.get(42, "What?!?"), "Forty-two")

# def testPopExisting(self):
# self.assertEquals(0, len(self.array))
# self.array.insert(42, "Forty-two")
# self.assertEquals(1, len(self.array))

# tmp = self.array.pop(42)
# self.assertEquals(tmp, "Forty-two")
# self.assertEquals(0, len(self.array))

# def testPopNonExisting(self):
# self.assertEquals(0, len(self.array))
# self.array.insert(42, "Forty-two")
# self.assertEquals(1, len(self.array))

# tmp = self.array.pop(44, "Forty-four")
# self.assertEquals(tmp, "Forty-four")
# self.assertEquals(1, len(self.array))

# def testPopItemExisting(self):
# self.assertEquals(0, len(self.array))
# self.array.insert(42, "Forty-two")
# self.assertEquals(1, len(self.array))

# tmp = self.array.popitem(42, "Forty-two")
# self.assertEquals(tmp, (42, "Forty-two"))
# self.assertEquals(0, len(self.array))

# def testPopItemWithDuplicates(self):
# self.assertEquals(0, len(self.array))
# self.array.insert(42, "Forty-two")
# self.assertEquals(1, len(self.array))
# self.array.insert(42, "Duplicate")
# self.assertEquals(2, len(self.array))

# tmp = self.array.popitem(42, "Forty-two")
# self.assertEquals(tmp, (42, "Forty-two"))
# self.assertEquals(1, len(self.array))

# self.assertTrue(42 in self.array)
# self.assertEquals(self.array[42], "Duplicate")

# def testKeyValueInsertion(self):
# self.array.insert(33, "Thirty-three")
# self.assertTrue(33 in self.array)
# self.assertEquals(self.array[33], "Thirty-three")

# def testForwardIterators(self):
# for i in range(0, 100):
# self.array.insert(i, str(i))

# items = iter(self.array)
# count = 0
# for (i, j) in items:
# self.assertEquals(str(i), j)
# count += 1
# self.assertEquals(count, 100)

0 comments on commit ea0cabc

Please sign in to comment.