Commit 27d4f57393350cf28f7be09c9fb15f13ebf7c9c8

Authored by Christian Herdtweck
1 parent 6cc7f5b2

unittest: create tests for is_rtf

Showing 1 changed file with 69 additions and 0 deletions
tests/rtfobj/test_is_rtf.py 0 → 100644
  1 +""" Test rtfobj.is_rtf """
  2 +
  3 +from __future__ import print_function
  4 +
  5 +import unittest
  6 +from os.path import join
  7 +from os import walk
  8 +
  9 +from oletools.rtfobj import is_rtf, RTF_MAGIC
  10 +
  11 +# Directory with test data, independent of current working directory
  12 +from tests.test_utils import DATA_BASE_DIR
  13 +
  14 +
  15 +class TestIsRtf(unittest.TestCase):
  16 + """ Tests rtfobj.is_rtf """
  17 +
  18 + def test_bytearray(self):
  19 + """ test that is_rtf works with bytearray """
  20 + self.assertTrue(is_rtf(bytearray(RTF_MAGIC + b'asdfasdfasdfasdfasdf')))
  21 + self.assertTrue(is_rtf(bytearray(RTF_MAGIC.upper() + b'asdfasdasdff')))
  22 + self.assertFalse(is_rtf(bytearray(b'asdfasdfasdfasdfasdfasdfsdfsdfa')))
  23 +
  24 + def test_bytes(self):
  25 + """ test that is_rtf works with bytearray """
  26 + self.assertTrue(is_rtf(RTF_MAGIC + b'asasdffdfasdfasdfasdfasdf'), True)
  27 + self.assertTrue(is_rtf(RTF_MAGIC.upper() + b'asdffasdfasdasdff'), True)
  28 + self.assertFalse(is_rtf(b'asdfasdfasdfasdfasdfasdasdfffsdfsdfa'), True)
  29 +
  30 + def test_tuple(self):
  31 + """ test that is_rtf works with byte tuples """
  32 + data = tuple(byte_char for byte_char in RTF_MAGIC + b'asdfasfadfdfsdf')
  33 + self.assertTrue(is_rtf(data))
  34 +
  35 + data = tuple(byte_char for byte_char in RTF_MAGIC.upper() + b'asfasdf')
  36 + self.assertTrue(is_rtf(data))
  37 +
  38 + data = tuple(byte_char for byte_char in b'asdfasfassdfsdsfeereasdfwdf')
  39 + self.assertFalse(is_rtf(data))
  40 +
  41 + def test_iterable(self):
  42 + """ test that is_rtf works with byte iterables """
  43 + data = (byte_char for byte_char in RTF_MAGIC + b'asdfasfasasdfasdfddf')
  44 + self.assertTrue(is_rtf(data))
  45 +
  46 + data = (byte_char for byte_char in RTF_MAGIC.upper() + b'asdfassfasdf')
  47 + self.assertTrue(is_rtf(data))
  48 +
  49 + data = (byte_char for byte_char in b'asdfasfasasdfasdfasdfsdfdwerwedf')
  50 + self.assertFalse(is_rtf(data))
  51 +
  52 + def test_files(self):
  53 + """ test on real files """
  54 + for base_dir, _, files in walk(DATA_BASE_DIR):
  55 + for filename in files:
  56 + full_path = join(base_dir, filename)
  57 + expect = filename.endswith('.rtf')
  58 + self.assertEqual(is_rtf(full_path), expect,
  59 + 'is_rtf({0}) did not return {1}'
  60 + .format(full_path, expect))
  61 + with open(full_path, 'rb') as handle:
  62 + self.assertEqual(is_rtf(handle), expect,
  63 + 'is_rtf(open({0})) did not return {1}'
  64 + .format(full_path, expect))
  65 +
  66 +
  67 +# just in case somebody calls this file as a script
  68 +if __name__ == '__main__':
  69 + unittest.main()
... ...