| 
									
										
										
										
											2020-12-08 17:36:53 +01:00
										 |  |  | 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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-02 17:03:10 +02:00
										 |  |  |     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) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-08 17:36:53 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 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) |