Skip to content

Commit 21b4e7e

Browse files
author
svorenova
committed
Extend unit tests to test for nested generics
1 parent cf47dcb commit 21b4e7e

File tree

2 files changed

+612
-222
lines changed

2 files changed

+612
-222
lines changed

unit/java_bytecode/java_bytecode_parse_generics/parse_generic_fields.cpp

+47-11
Original file line numberDiff line numberDiff line change
@@ -77,10 +77,16 @@ SCENARIO(
7777
field.type(), symbol_typet("java::Generic"));
7878
THEN("The pointer should be generic")
7979
{
80+
const java_generic_typet &generic_field =
81+
require_type::require_java_generic_type(
82+
field.type(),
83+
{{require_type::type_argument_kindt::Inst, "java::Generic"}});
84+
85+
const typet &type_argument_1 =
86+
generic_field.generic_type_arguments().at(0);
8087
require_type::require_java_generic_type(
81-
field.type(),
82-
{{require_type::type_argument_kindt::Inst, "java::Generic"}});
83-
// TODO extend when nested generics are parsed correctly - TG-1301
88+
type_argument_1,
89+
{{require_type::type_argument_kindt::Var, class_prefix + "::T"}});
8490
}
8591
}
8692

@@ -92,10 +98,24 @@ SCENARIO(
9298
field.type(), symbol_typet("java::Generic"));
9399
THEN("The pointer should be generic")
94100
{
101+
const java_generic_typet &generic_field =
102+
require_type::require_java_generic_type(
103+
field.type(),
104+
{{require_type::type_argument_kindt::Inst, "java::Generic"}});
105+
106+
const typet &type_argument_1 =
107+
generic_field.generic_type_arguments().at(0);
108+
const java_generic_typet &generic_type_argument_1 =
109+
require_type::require_java_generic_type(
110+
type_argument_1,
111+
{{require_type::type_argument_kindt::Inst, "java::Generic"}});
112+
113+
const typet &type_argument_1_1 =
114+
generic_type_argument_1.generic_type_arguments().at(0);
95115
require_type::require_java_generic_type(
96-
field.type(),
97-
{{require_type::type_argument_kindt::Inst, "java::Generic"}});
98-
// TODO extend when nested generics are parsed correctly - TG-1301
116+
type_argument_1_1,
117+
{{require_type::type_argument_kindt::Inst,
118+
"java::java.lang.Integer"}});
99119
}
100120
}
101121

@@ -188,13 +208,29 @@ SCENARIO(
188208
field.type(), symbol_typet("java::GenericTwoParam"));
189209
THEN("The pointer should be generic")
190210
{
211+
const java_generic_typet &generic_field =
212+
require_type::require_java_generic_type(
213+
field.type(),
214+
{{require_type::type_argument_kindt::Inst,
215+
"java::Generic"},
216+
{require_type::type_argument_kindt::Inst,
217+
"java::GenericTwoParam"}});
218+
219+
const typet &type_argument_1 =
220+
generic_field.generic_type_arguments().at(0);
191221
require_type::require_java_generic_type(
192-
field.type(),
193-
{{require_type::type_argument_kindt::Inst,
194-
"java::Generic"},
222+
type_argument_1,
223+
{{require_type::type_argument_kindt::Var,
224+
class_prefix + "::T"}});
225+
226+
const typet &type_argument_2 =
227+
generic_field.generic_type_arguments().at(1);
228+
require_type::require_java_generic_type(
229+
type_argument_2,
230+
{{require_type::type_argument_kindt::Var,
231+
class_prefix + "::S"},
195232
{require_type::type_argument_kindt::Inst,
196-
"java::GenericTwoParam"}});
197-
// TODO extend when nested generics are parsed correctly - TG-1301
233+
"java::java.lang.Integer"}});
198234
}
199235
}
200236
}

0 commit comments

Comments
 (0)