11import pytest
22
3- from src .method_generator import generate_getter , Field , generate_setter , generate_getters_and_setters
3+ from src .method_generator import generate_getter , Field , generate_setter , generate_getters_and_setters , \
4+ generate_field_declaration , generate_fields_block
45
56JAVA_KEYWORDS = {
67 "abstract" , "assert" , "boolean" , "break" , "byte" , "case" , "catch" ,
2223 "null" , "true" , "false"
2324}
2425
26+ EMPTY_NAMES = {None , "" }
27+
28+ MALFORMED_IDENTIFIERS = {"3" , "abc-d" , "gf*d" }
29+
2530
2631def test_generate_getter_integer ():
2732 attr = Field (
@@ -54,9 +59,8 @@ def test_generate_getter_custom_object():
5459
5560
5661def test_generate_getter_invalid_name ():
57- EMPTY_NAMES = {None , "" }
58- invalid_names = JAVA_KEYWORDS | JAVA_BUILTIN_TYPES | JAVA_LITERALS | EMPTY_NAMES | {"3" , "abc-d" }
59- for name in invalid_names :
62+ illegal_names = JAVA_KEYWORDS | JAVA_BUILTIN_TYPES | JAVA_LITERALS | EMPTY_NAMES | MALFORMED_IDENTIFIERS
63+ for name in illegal_names :
6064 attr = Field (name = name , type = "String" )
6165 with pytest .raises (ValueError ):
6266 generate_getter (attr )
@@ -90,9 +94,8 @@ def test_generate_setter_custom_object():
9094
9195
9296def test_generate_setter_invalid_name ():
93- EMPTY_NAMES = {None , "" }
94- invalid_names = JAVA_KEYWORDS | JAVA_BUILTIN_TYPES | JAVA_LITERALS | EMPTY_NAMES | {"9" , "gf*d" }
95- for name in invalid_names :
97+ illegal_names = JAVA_KEYWORDS | JAVA_BUILTIN_TYPES | JAVA_LITERALS | EMPTY_NAMES | MALFORMED_IDENTIFIERS
98+ for name in illegal_names :
9699 attr = Field (name = name , type = "String" )
97100 with pytest .raises (ValueError ):
98101 generate_setter (attr )
@@ -116,3 +119,50 @@ def test_generate_getters_and_setters():
116119 this.customData = customData;
117120 }"""
118121 assert generate_getters_and_setters (attributes ) == expected
122+
123+
124+ def test_generate_field_declaration ():
125+ attr = Field (name = "exampleAttribute" , type = "int" , description = "javadoc description" )
126+ expected = """
127+ /**
128+ * javadoc description
129+ */
130+ private int exampleAttribute;"""
131+
132+ assert generate_field_declaration (attr ) == expected
133+
134+
135+ def test_generate_field_declaration_no_description ():
136+ attr = Field (name = "customData" , type = "CustomObject" )
137+ expected = """
138+ private CustomObject customData;"""
139+
140+ assert generate_field_declaration (attr ) == expected
141+
142+
143+ def test_generate_field_declaration_invalid_name ():
144+ illegal_names = JAVA_KEYWORDS | JAVA_BUILTIN_TYPES | JAVA_LITERALS | EMPTY_NAMES | MALFORMED_IDENTIFIERS
145+ for name in illegal_names :
146+ attr = Field (name = name , type = "String" )
147+ with pytest .raises (ValueError ):
148+ generate_field_declaration (attr )
149+
150+
151+ def test_generate_fields_block ():
152+ attr1 = Field (name = "exampleAttribute" , type = "int" , description = "javadoc description" )
153+ attr2 = Field (name = "someName" , type = "String" )
154+ attr3 = Field (name = "customData" , type = "CustomObject" , description = "another javadoc description" )
155+ attributes = [attr1 , attr2 , attr3 ]
156+ expected = """
157+ /**
158+ * javadoc description
159+ */
160+ private int exampleAttribute;
161+
162+ private String someName;
163+
164+ /**
165+ * another javadoc description
166+ */
167+ private CustomObject customData;"""
168+ assert generate_fields_block (attributes ) == expected
0 commit comments