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 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)