Skip to content

Commit 94bc851

Browse files
Unit tests method get_super_class
1 parent 410890c commit 94bc851

File tree

6 files changed

+62
-0
lines changed

6 files changed

+62
-0
lines changed

jbmc/unit/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ SRC += java_bytecode/goto-programs/class_hierarchy_output.cpp \
1212
java_bytecode/java_bytecode_convert_class/convert_java_annotations.cpp \
1313
java_bytecode/java_bytecode_convert_method/convert_invoke_dynamic.cpp \
1414
java_bytecode/java_bytecode_parse_generics/parse_generic_class.cpp \
15+
java_bytecode/java_bytecode_parser/parse_java_class.cpp \
1516
java_bytecode/java_bytecode_parser/parse_java_attributes.cpp \
1617
java_bytecode/java_object_factory/gen_nondet_string_init.cpp \
1718
java_bytecode/java_bytecode_parse_lambdas/java_bytecode_parse_lambda_method_table.cpp \
Binary file not shown.
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
public class ChildClass extends ParentClass {
2+
}
3+
4+
class ParentClass extends GrandparentClass {
5+
}
6+
7+
class GrandparentClass {
8+
}
Binary file not shown.
Binary file not shown.
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
/*******************************************************************\
2+
3+
Module: Unit tests for converting annotations
4+
5+
Author: Diffblue Ltd.
6+
7+
\*******************************************************************/
8+
9+
#include <java-testing-utils/load_java_class.h>
10+
#include <java_bytecode/java_bytecode_convert_class.h>
11+
#include <java_bytecode/java_bytecode_parse_tree.h>
12+
#include <java_bytecode/java_types.h>
13+
#include <testing-utils/catch.hpp>
14+
15+
SCENARIO(
16+
"java_bytecode_parse_class",
17+
"[core][java_bytecode][java_bytecode_parser]")
18+
{
19+
GIVEN("Some class with a class hierarchy")
20+
{
21+
const symbol_tablet &new_symbol_table =
22+
load_java_class("ChildClass", "./java_bytecode/java_bytecode_parser");
23+
WHEN("Parsing the class file structure")
24+
{
25+
THEN("We should be able to get the super classes of the hierarchy")
26+
{
27+
const symbolt &class_symbol1 =
28+
new_symbol_table.lookup_ref("java::ChildClass");
29+
const java_class_typet java_class1 =
30+
to_java_class_type(class_symbol1.type);
31+
REQUIRE(java_class1.get_super_class() == "ParentClass");
32+
33+
const symbolt &class_symbol2 =
34+
new_symbol_table.lookup_ref("java::ParentClass");
35+
const java_class_typet java_class2 =
36+
to_java_class_type(class_symbol2.type);
37+
REQUIRE(java_class2.get_super_class() == "GrandparentClass");
38+
39+
const symbolt &class_symbol3 =
40+
new_symbol_table.lookup_ref("java::GrandparentClass");
41+
const java_class_typet java_class3 =
42+
to_java_class_type(class_symbol3.type);
43+
REQUIRE(java_class3.get_super_class() == "java.lang.Object");
44+
45+
const symbolt &class_symbol4 =
46+
new_symbol_table.lookup_ref("java::java.lang.Object");
47+
const java_class_typet java_class4 =
48+
to_java_class_type(class_symbol4.type);
49+
REQUIRE(java_class4.get_super_class() == "");
50+
}
51+
}
52+
}
53+
}

0 commit comments

Comments
 (0)