File: parameter_indices.cpp

package info (click to toggle)
cbmc 6.6.0-4
  • links: PTS
  • area: main
  • in suites: forky, sid, trixie
  • size: 153,852 kB
  • sloc: cpp: 386,459; ansic: 114,466; java: 28,405; python: 6,003; yacc: 4,552; makefile: 4,041; lex: 2,487; xml: 2,388; sh: 2,050; perl: 557; pascal: 184; javascript: 163; ada: 36
file content (34 lines) | stat: -rw-r--r-- 1,131 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/*******************************************************************\

Module: Parameter indices test

Author: Diffblue Ltd.

\*******************************************************************/

#include <java_bytecode/java_types.h>

#include <java-testing-utils/load_java_class.h>
#include <testing-utils/use_catch.h>

void check_consistency(const symbolt &symbol)
{
  const auto &method_type = to_java_method_type(symbol.type);
  auto parameter_ids = method_type.parameter_identifiers();
  auto parameter_indices = method_type.parameter_indices();

  REQUIRE(parameter_ids.size() == parameter_indices.size());
  for(std::size_t i = 0; i < parameter_ids.size(); ++i)
    REQUIRE(parameter_indices.at(parameter_ids.at(i)) == i);
}

TEST_CASE("Parameter indices consistency", "[core][util][parameter_indices]")
{
  symbol_tablet symbol_table = load_java_class("ParameterIndicesTest", "util/");
  check_consistency(
    symbol_table.lookup_ref(
      "java::ParameterIndicesTest.f:(LParameterIndicesTest;I)V"));
  check_consistency(
    symbol_table.lookup_ref(
      "java::ParameterIndicesTest.g:(FLParameterIndicesTest;)V"));
}