summaryrefslogtreecommitdiffhomepage
path: root/tests/unit/lib/test_pack_utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unit/lib/test_pack_utils.py')
-rw-r--r--tests/unit/lib/test_pack_utils.py59
1 files changed, 59 insertions, 0 deletions
diff --git a/tests/unit/lib/test_pack_utils.py b/tests/unit/lib/test_pack_utils.py
new file mode 100644
index 00000000..5bc99513
--- /dev/null
+++ b/tests/unit/lib/test_pack_utils.py
@@ -0,0 +1,59 @@
+# Copyright (C) 2012 Nippon Telegraph and Telephone Corporation.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import unittest
+import six
+import struct
+
+from nose.tools import ok_, eq_
+
+from ryu.lib import pack_utils
+
+
+class TestMsgPackInto(unittest.TestCase):
+ """ Test case for msg_pack_into
+ """
+
+ def _test_msg_pack_into(self, offset_type='e'):
+ fmt = '!HH'
+ len_ = struct.calcsize(fmt)
+ buf = bytearray(len_)
+ offset = len_
+ arg1 = 1
+ arg2 = 2
+
+ if offset_type == 'l':
+ offset += 1
+ elif offset_type == 'g':
+ offset -= 1
+
+ pack_utils.msg_pack_into(fmt, buf, offset, arg1, arg2)
+
+ check_offset = len(buf) - len_
+ res = struct.unpack_from(fmt, six.binary_type(buf), check_offset)
+
+ eq_(arg1, res[0])
+ eq_(arg2, res[1])
+
+ return True
+
+ def test_msg_pack_into(self):
+ ok_(self._test_msg_pack_into())
+
+ def test_msg_pack_into_less(self):
+ ok_(self._test_msg_pack_into('l'))
+
+ def test_msg_pack_into_greater(self):
+ ok_(self._test_msg_pack_into('g'))