import unittest from test.support import import_helper import types xxlimited = import_helper.import_module('xxlimited') xxlimited_35 = import_helper.import_module('xxlimited_35') class CommonTests: module: types.ModuleType def test_xxo_new(self): xxo = self.module.Xxo() def test_xxo_attributes(self): xxo = self.module.Xxo() with self.assertRaises(AttributeError): xxo.foo with self.assertRaises(AttributeError): del xxo.foo xxo.foo = 1234 self.assertEqual(xxo.foo, 1234) del xxo.foo with self.assertRaises(AttributeError): xxo.foo def test_foo(self): # the foo function adds 2 numbers self.assertEqual(self.module.foo(1, 2), 3) def test_str(self): self.assertTrue(issubclass(self.module.Str, str)) self.assertIsNot(self.module.Str, str) custom_string = self.module.Str("abcd") self.assertEqual(custom_string, "abcd") self.assertEqual(custom_string.upper(), "ABCD") def test_new(self): xxo = self.module.new() self.assertEqual(xxo.demo("abc"), "abc") class TestXXLimited(CommonTests, unittest.TestCase): module = xxlimited def test_xxo_demo(self): xxo = self.module.Xxo() other = self.module.Xxo() self.assertEqual(xxo.demo("abc"), "abc") self.assertEqual(xxo.demo(xxo), xxo) self.assertEqual(xxo.demo(other), other) self.assertEqual(xxo.demo(0), None) def test_error(self): with self.assertRaises(self.module.Error): raise self.module.Error def test_buffer(self): xxo = self.module.Xxo() self.assertEqual(xxo.x_exports, 0) b1 = memoryview(xxo) self.assertEqual(xxo.x_exports, 1) b2 = memoryview(xxo) self.assertEqual(xxo.x_exports, 2) b1[0] = 1 self.assertEqual(b1[0], 1) self.assertEqual(b2[0], 1) class TestXXLimited35(CommonTests, unittest.TestCase): module = xxlimited_35 def test_xxo_demo(self): xxo = self.module.Xxo() other = self.module.Xxo() self.assertEqual(xxo.demo("abc"), "abc") self.assertEqual(xxo.demo(0), None) def test_roj(self): # the roj function always fails with self.assertRaises(SystemError): self.module.roj(0) def test_null(self): null1 = self.module.Null() null2 = self.module.Null() self.assertNotEqual(null1, null2)