Skip to content

Commit 60127aa

Browse files
author
thk123
committed
Adding tests for member methods
1 parent cf86474 commit 60127aa

File tree

1 file changed

+96
-0
lines changed

1 file changed

+96
-0
lines changed

unit/java_bytecode/java_bytecode_convert_method/convert_invoke_dynamic.cpp

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -367,6 +367,102 @@ SCENARIO(
367367
validate_member_variable_lambda_assignment(
368368
symbol_table, instructions, test_data, "simpleLambda");
369369
}
370+
THEN(
371+
"The local variable should be assigned a temp object implementing "
372+
"ParameterLambda")
373+
{
374+
lambda_assignment_test_datat test_data;
375+
test_data.lambda_interface = "java::ParameterLambda";
376+
test_data.lambda_interface_method_descriptor =
377+
".Execute:(ILjava/lang/Object;LDummyGeneric;)V";
378+
test_data.lambda_function_id =
379+
"java::MemberLambdas.lambda$new$1:"
380+
"(ILjava/lang/Object;LDummyGeneric;)V";
381+
382+
symbol_exprt integer_param{"primitive", java_int_type()};
383+
symbol_exprt ref_param{"reference",
384+
java_type_from_string("Ljava/lang/Object;")};
385+
symbol_exprt generic_param{
386+
"specalisedGeneric",
387+
java_type_from_string("LDummyGeneric<Ljava/lang/Interger;>;")};
388+
test_data.expected_params = {integer_param, ref_param, generic_param};
389+
390+
test_data.should_return_value = false;
391+
validate_member_variable_lambda_assignment(
392+
symbol_table, instructions, test_data, "paramLambda");
393+
}
394+
THEN(
395+
"The local variable should be assigned a non-null pointer to a "
396+
"array parameter interface implementor")
397+
{
398+
lambda_assignment_test_datat test_data;
399+
test_data.lambda_interface = "java::ArrayParameterLambda";
400+
test_data.lambda_interface_method_descriptor =
401+
".Execute:([I[Ljava/lang/Object;[LDummyGeneric;)V";
402+
test_data.lambda_function_id =
403+
"java::MemberLambdas.lambda$new$2:"
404+
"([I[Ljava/lang/Object;[LDummyGeneric;)V";
405+
406+
symbol_exprt integer_param{"primitive", java_type_from_string("[I")};
407+
symbol_exprt ref_param{"reference",
408+
java_type_from_string("[Ljava/lang/Object;")};
409+
symbol_exprt generic_param{
410+
"specalisedGeneric",
411+
java_type_from_string("[LDummyGeneric<Ljava/lang/Interger;>;")};
412+
test_data.expected_params = {integer_param, ref_param, generic_param};
413+
test_data.should_return_value = false;
414+
415+
validate_member_variable_lambda_assignment(
416+
symbol_table, instructions, test_data, "arrayParamLambda");
417+
}
418+
THEN(
419+
"The local variable should be assigned a temp object implementing "
420+
"ReturningLambdaPrimitive")
421+
{
422+
lambda_assignment_test_datat test_data;
423+
test_data.lambda_interface = "java::ReturningLambdaPrimitive";
424+
test_data.lambda_interface_method_descriptor = ".Execute:()I";
425+
test_data.lambda_function_id = "java::MemberLambdas.lambda$new$3:()I";
426+
test_data.expected_params = {};
427+
test_data.should_return_value = true;
428+
validate_member_variable_lambda_assignment(
429+
symbol_table, instructions, test_data, "returnPrimitiveLambda");
430+
}
431+
THEN(
432+
"The local variable should be assigned a temp object implementing "
433+
"ReturningLambdaReference")
434+
{
435+
lambda_assignment_test_datat test_data;
436+
test_data.lambda_interface = "java::ReturningLambdaReference";
437+
test_data.lambda_interface_method_descriptor =
438+
".Execute:()Ljava/lang/Object;";
439+
test_data.lambda_function_id =
440+
"java::MemberLambdas.lambda$new$4:()Ljava/lang/Object;";
441+
test_data.expected_params = {};
442+
test_data.should_return_value = true;
443+
validate_member_variable_lambda_assignment(
444+
symbol_table, instructions, test_data, "returnReferenceLambda");
445+
}
446+
THEN(
447+
"The local variable should be assigned a temp object implementing "
448+
"ReturningLambdaSpecalisedGeneric")
449+
{
450+
lambda_assignment_test_datat test_data;
451+
test_data.lambda_interface = "java::ReturningLambdaSpecalisedGeneric";
452+
test_data.lambda_interface_method_descriptor =
453+
".Execute:()LDummyGeneric;";
454+
test_data.lambda_function_id =
455+
"java::MemberLambdas.lambda$new$5:()LDummyGeneric;";
456+
test_data.expected_params = {};
457+
test_data.should_return_value = true;
458+
validate_member_variable_lambda_assignment(
459+
symbol_table,
460+
instructions,
461+
test_data,
462+
"returningSpecalisedGenericLambda");
463+
}
464+
465+
// TODO[TG-2486]: Tests for member lambdas that capture member variables
370466
}
371467
}
372468
});

0 commit comments

Comments
 (0)