17db96d56Sopenharmony_ciimport unittest
27db96d56Sopenharmony_cifrom test.support import import_helper
37db96d56Sopenharmony_ciimport types
47db96d56Sopenharmony_ci
57db96d56Sopenharmony_cixxlimited = import_helper.import_module('xxlimited')
67db96d56Sopenharmony_cixxlimited_35 = import_helper.import_module('xxlimited_35')
77db96d56Sopenharmony_ci
87db96d56Sopenharmony_ci
97db96d56Sopenharmony_ciclass CommonTests:
107db96d56Sopenharmony_ci    module: types.ModuleType
117db96d56Sopenharmony_ci
127db96d56Sopenharmony_ci    def test_xxo_new(self):
137db96d56Sopenharmony_ci        xxo = self.module.Xxo()
147db96d56Sopenharmony_ci
157db96d56Sopenharmony_ci    def test_xxo_attributes(self):
167db96d56Sopenharmony_ci        xxo = self.module.Xxo()
177db96d56Sopenharmony_ci        with self.assertRaises(AttributeError):
187db96d56Sopenharmony_ci            xxo.foo
197db96d56Sopenharmony_ci        with self.assertRaises(AttributeError):
207db96d56Sopenharmony_ci            del xxo.foo
217db96d56Sopenharmony_ci
227db96d56Sopenharmony_ci        xxo.foo = 1234
237db96d56Sopenharmony_ci        self.assertEqual(xxo.foo, 1234)
247db96d56Sopenharmony_ci
257db96d56Sopenharmony_ci        del xxo.foo
267db96d56Sopenharmony_ci        with self.assertRaises(AttributeError):
277db96d56Sopenharmony_ci            xxo.foo
287db96d56Sopenharmony_ci
297db96d56Sopenharmony_ci    def test_foo(self):
307db96d56Sopenharmony_ci        # the foo function adds 2 numbers
317db96d56Sopenharmony_ci        self.assertEqual(self.module.foo(1, 2), 3)
327db96d56Sopenharmony_ci
337db96d56Sopenharmony_ci    def test_str(self):
347db96d56Sopenharmony_ci        self.assertTrue(issubclass(self.module.Str, str))
357db96d56Sopenharmony_ci        self.assertIsNot(self.module.Str, str)
367db96d56Sopenharmony_ci
377db96d56Sopenharmony_ci        custom_string = self.module.Str("abcd")
387db96d56Sopenharmony_ci        self.assertEqual(custom_string, "abcd")
397db96d56Sopenharmony_ci        self.assertEqual(custom_string.upper(), "ABCD")
407db96d56Sopenharmony_ci
417db96d56Sopenharmony_ci    def test_new(self):
427db96d56Sopenharmony_ci        xxo = self.module.new()
437db96d56Sopenharmony_ci        self.assertEqual(xxo.demo("abc"), "abc")
447db96d56Sopenharmony_ci
457db96d56Sopenharmony_ci
467db96d56Sopenharmony_ciclass TestXXLimited(CommonTests, unittest.TestCase):
477db96d56Sopenharmony_ci    module = xxlimited
487db96d56Sopenharmony_ci
497db96d56Sopenharmony_ci    def test_xxo_demo(self):
507db96d56Sopenharmony_ci        xxo = self.module.Xxo()
517db96d56Sopenharmony_ci        other = self.module.Xxo()
527db96d56Sopenharmony_ci        self.assertEqual(xxo.demo("abc"), "abc")
537db96d56Sopenharmony_ci        self.assertEqual(xxo.demo(xxo), xxo)
547db96d56Sopenharmony_ci        self.assertEqual(xxo.demo(other), other)
557db96d56Sopenharmony_ci        self.assertEqual(xxo.demo(0), None)
567db96d56Sopenharmony_ci
577db96d56Sopenharmony_ci    def test_error(self):
587db96d56Sopenharmony_ci        with self.assertRaises(self.module.Error):
597db96d56Sopenharmony_ci            raise self.module.Error
607db96d56Sopenharmony_ci
617db96d56Sopenharmony_ci    def test_buffer(self):
627db96d56Sopenharmony_ci        xxo = self.module.Xxo()
637db96d56Sopenharmony_ci        self.assertEqual(xxo.x_exports, 0)
647db96d56Sopenharmony_ci        b1 = memoryview(xxo)
657db96d56Sopenharmony_ci        self.assertEqual(xxo.x_exports, 1)
667db96d56Sopenharmony_ci        b2 = memoryview(xxo)
677db96d56Sopenharmony_ci        self.assertEqual(xxo.x_exports, 2)
687db96d56Sopenharmony_ci        b1[0] = 1
697db96d56Sopenharmony_ci        self.assertEqual(b1[0], 1)
707db96d56Sopenharmony_ci        self.assertEqual(b2[0], 1)
717db96d56Sopenharmony_ci
727db96d56Sopenharmony_ci
737db96d56Sopenharmony_ciclass TestXXLimited35(CommonTests, unittest.TestCase):
747db96d56Sopenharmony_ci    module = xxlimited_35
757db96d56Sopenharmony_ci
767db96d56Sopenharmony_ci    def test_xxo_demo(self):
777db96d56Sopenharmony_ci        xxo = self.module.Xxo()
787db96d56Sopenharmony_ci        other = self.module.Xxo()
797db96d56Sopenharmony_ci        self.assertEqual(xxo.demo("abc"), "abc")
807db96d56Sopenharmony_ci        self.assertEqual(xxo.demo(0), None)
817db96d56Sopenharmony_ci
827db96d56Sopenharmony_ci    def test_roj(self):
837db96d56Sopenharmony_ci        # the roj function always fails
847db96d56Sopenharmony_ci        with self.assertRaises(SystemError):
857db96d56Sopenharmony_ci            self.module.roj(0)
867db96d56Sopenharmony_ci
877db96d56Sopenharmony_ci    def test_null(self):
887db96d56Sopenharmony_ci        null1 = self.module.Null()
897db96d56Sopenharmony_ci        null2 = self.module.Null()
907db96d56Sopenharmony_ci        self.assertNotEqual(null1, null2)
91