summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
m---------grextras0
-rw-r--r--include/gras/sbuffer.i11
-rw-r--r--tests/sbuffer_test.py13
3 files changed, 22 insertions, 2 deletions
diff --git a/grextras b/grextras
-Subproject dcc0a5384270c49f99f35446fecd927452ba923
+Subproject 1f150b3b57671f1f14066967c65819317493004
diff --git a/include/gras/sbuffer.i b/include/gras/sbuffer.i
index b910588..69b4833 100644
--- a/include/gras/sbuffer.i
+++ b/include/gras/sbuffer.i
@@ -37,10 +37,17 @@
nitems=self.length,
readonly=readonly
)
+ %}
- def __len__(self): return self.length
+ size_t __len__(void)
+ {
+ return ($self)->length;
+ }
- %}
+ bool __nonzero__(void)
+ {
+ return bool(*($self));
+ }
}
#endif /*INCLUDED_GRAS_SBUFFER_I*/
diff --git a/tests/sbuffer_test.py b/tests/sbuffer_test.py
index da21909..58cdedb 100644
--- a/tests/sbuffer_test.py
+++ b/tests/sbuffer_test.py
@@ -12,10 +12,15 @@ class SBufferTest(unittest.TestCase):
print c.length
print c.memory
+ def test_null_sbuffer(self):
+ s = gras.SBuffer()
+ self.assertFalse(s)
+
def test_make_sbuffer(self):
c = gras.SBufferConfig()
c.length = 42
s = gras.SBuffer(c)
+ self.assertTrue(s)
self.assertEqual(c.length, s.get_actual_length())
self.assertEqual(c.length, s.length)
self.assertEqual(c.length, len(s))
@@ -28,6 +33,14 @@ class SBufferTest(unittest.TestCase):
self.assertEqual(c.length, len(s))
self.assertEqual(c.length, len(a))
+ def test_get_zero_len_sbuffer(self):
+ c = gras.SBufferConfig()
+ c.length = 0
+ s = gras.SBuffer(c)
+ a = s.get()
+ self.assertEqual(c.length, len(s))
+ self.assertEqual(c.length, len(a))
+
def test_more_get_with_offset(self):
c = gras.SBufferConfig()
c.length = 4