Skip to content

Commit f9adaa6

Browse files
author
thk123
committed
Adding tests for member methods
1 parent 5f5994b commit f9adaa6

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

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

0 commit comments

Comments
 (0)