File: java_string_literals.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 (41 lines) | stat: -rw-r--r-- 1,518 bytes parent folder | download
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
35
36
37
38
39
40
41
/*******************************************************************\

Module: Unit tests for java string literal generation.

Author: Diffblue Limited

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

#include <java_bytecode/java_entry_point.h>
#include <java_bytecode/java_string_literals.h>
#include <java_bytecode/java_utils.h>
#include <linking/static_lifetime_init.h>
#include <testing-utils/invariant.h>
#include <testing-utils/use_catch.h>

#include <util/message.h>
#include <util/std_code.h>
#include <util/symbol_table.h>

TEST_CASE(
  "Test that java_string_literal can be used before " INITIALIZE_FUNCTION
  " is made but not afterwards.",
  "[core][java_bytecode][java_string_literals]")
{
  symbol_tablet symbol_table;
  null_message_handlert message_handler{};
  generate_class_stub("java.lang.Object", symbol_table, message_handler, {});
  generate_class_stub("java.lang.String", symbol_table, message_handler, {});
  REQUIRE(symbol_table.lookup(
    get_or_create_string_literal_symbol("foo", symbol_table, false)
      .get_identifier()));

  create_java_initialize(symbol_table);
  symbol_table.get_writeable_ref(INITIALIZE_FUNCTION).value = code_blockt{};
  const cbmc_invariants_should_throwt invariants_throw;
  REQUIRE_THROWS_MATCHES(
    get_or_create_string_literal_symbol("bar", symbol_table, false),
    invariant_failedt,
    invariant_failure_containing("Cannot create more string literals after "
                                 "making " INITIALIZE_FUNCTION));
}