File indexing completed on 2024-05-05 05:43:50
0001 import re 0002 from unittest import TestCase 0003 0004 from doxyqml.qmlclass import QmlFunction, QmlArgument, QmlProperty 0005 0006 0007 class QmlFunctionTestCase(TestCase): 0008 def test_post_process_doc_at(self): 0009 self._test_post_process_doc(""" 0010 /** 0011 * Create a user 0012 * 0013 * @param type:string firstname The user firstname 0014 * @param type:string lastname The user lastname 0015 * @param type:int age The user age 0016 * @param misc A parameter with no type 0017 * @return type:User A new user 0018 */ 0019 """) 0020 0021 def test_post_process_doc_backslash(self): 0022 self._test_post_process_doc(r""" 0023 /** 0024 * Create a user 0025 * 0026 * \param type:string firstname The user firstname 0027 * \param type:string lastname The user lastname 0028 * \param type:int age The user age 0029 * \param misc A parameter with no type 0030 * \return type:User A new user 0031 */ 0032 """) 0033 0034 def _test_post_process_doc(self, doc): 0035 fcn = QmlFunction() 0036 fcn.args = [ 0037 QmlArgument("firstname"), 0038 QmlArgument("lastname"), 0039 QmlArgument("age"), 0040 QmlArgument("misc"), 0041 ] 0042 fcn.doc = doc 0043 fcn.post_process_doc() 0044 0045 self.assertEqual(fcn.args[0].type, "string") 0046 self.assertEqual(fcn.args[1].type, "string") 0047 self.assertEqual(fcn.args[2].type, "int") 0048 self.assertEqual(fcn.args[3].type, "") 0049 self.assertEqual(fcn.type, "User") 0050 0051 # "[@\]param type:..." are turned into "@param" 0052 expected_doc = re.sub(r"[@\\]param type:\w+", r"@param", doc) 0053 # "[@\]return type:..." are turned into "[@\]return" 0054 expected_doc = re.sub(r"([@\\])return type:\w+", r"\1return", expected_doc) 0055 self.assertMultiLineEqual(fcn.doc, expected_doc) 0056 0057 0058 class QmlPropertyTestCase(TestCase): 0059 def test_property_type(self): 0060 prop = QmlProperty() 0061 prop.doc = "/// type:User The current user" 0062 prop.type = "alias" 0063 0064 prop.post_process_doc() 0065 0066 self.assertEqual(prop.type, "User") 0067 self.assertEqual(prop.doc, "/// The current user") 0068 0069 def test_no_property_type(self): 0070 prop = QmlProperty() 0071 prop.doc = "/// The user age" 0072 prop.type = "int" 0073 0074 prop.post_process_doc() 0075 0076 self.assertEqual(prop.type, "int") 0077 self.assertEqual(prop.doc, "/// The user age") 0078 0079 def test_default_property(self): 0080 prop = QmlProperty() 0081 prop.doc = "/// Children" 0082 prop.type = "list<Item>" 0083 prop.is_default = True 0084 0085 self.assertEqual(str(prop), 0086 "/// Children\n" + QmlProperty.DEFAULT_PROPERTY_COMMENT + "\nQ_PROPERTY(list<Item> READ dummyGetter__ignore)")