/* * Ident: @(#)stmt33002m2.java generated from: @(#)stmt33002m.jmpp * * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved. */ package javasoft.sqe.tests.lang.stmt330.stmt33002m2; import java.io.PrintStream; import java.util.Arrays; class CustomCloseable implements AutoCloseable { int flagIndex = Flag.sFlag.request(this.toString()); public void close() { Flag.sFlag.raise(flagIndex, this.toString()); } } class Flag { public static SuperFlag sFlag = new SuperFlag(); } public class stmt33002m2 { public static void main(String argv[]) { System.exit(run(argv, System.out) + 95/*STATUS_TEMP*/); } public static int run(String argv[], PrintStream out) { int i = 0; Flag.sFlag.out = out; Flag.sFlag.init(100); try(CustomCloseable ac0 = new CustomCloseable()) { try(CustomCloseable ac1 = new CustomCloseable()) { try(CustomCloseable ac2 = new CustomCloseable()) { try(CustomCloseable ac3 = new CustomCloseable()) { try(CustomCloseable ac4 = new CustomCloseable()) { try(CustomCloseable ac5 = new CustomCloseable()) { try(CustomCloseable ac6 = new CustomCloseable()) { try(CustomCloseable ac7 = new CustomCloseable()) { try(CustomCloseable ac8 = new CustomCloseable()) { try(CustomCloseable ac9 = new CustomCloseable()) { try(CustomCloseable ac10 = new CustomCloseable()) { try(CustomCloseable ac11 = new CustomCloseable()) { try(CustomCloseable ac12 = new CustomCloseable()) { try(CustomCloseable ac13 = new CustomCloseable()) { try(CustomCloseable ac14 = new CustomCloseable()) { try(CustomCloseable ac15 = new CustomCloseable()) { try(CustomCloseable ac16 = new CustomCloseable()) { try(CustomCloseable ac17 = new CustomCloseable()) { try(CustomCloseable ac18 = new CustomCloseable()) { try(CustomCloseable ac19 = new CustomCloseable()) { try(CustomCloseable ac20 = new CustomCloseable()) { try(CustomCloseable ac21 = new CustomCloseable()) { try(CustomCloseable ac22 = new CustomCloseable()) { try(CustomCloseable ac23 = new CustomCloseable()) { try(CustomCloseable ac24 = new CustomCloseable()) { try(CustomCloseable ac25 = new CustomCloseable()) { try(CustomCloseable ac26 = new CustomCloseable()) { try(CustomCloseable ac27 = new CustomCloseable()) { try(CustomCloseable ac28 = new CustomCloseable()) { try(CustomCloseable ac29 = new CustomCloseable()) { try(CustomCloseable ac30 = new CustomCloseable()) { try(CustomCloseable ac31 = new CustomCloseable()) { try(CustomCloseable ac32 = new CustomCloseable()) { try(CustomCloseable ac33 = new CustomCloseable()) { try(CustomCloseable ac34 = new CustomCloseable()) { try(CustomCloseable ac35 = new CustomCloseable()) { try(CustomCloseable ac36 = new CustomCloseable()) { try(CustomCloseable ac37 = new CustomCloseable()) { try(CustomCloseable ac38 = new CustomCloseable()) { try(CustomCloseable ac39 = new CustomCloseable()) { try(CustomCloseable ac40 = new CustomCloseable()) { try(CustomCloseable ac41 = new CustomCloseable()) { try(CustomCloseable ac42 = new CustomCloseable()) { try(CustomCloseable ac43 = new CustomCloseable()) { try(CustomCloseable ac44 = new CustomCloseable()) { try(CustomCloseable ac45 = new CustomCloseable()) { try(CustomCloseable ac46 = new CustomCloseable()) { try(CustomCloseable ac47 = new CustomCloseable()) { try(CustomCloseable ac48 = new CustomCloseable()) { try(CustomCloseable ac49 = new CustomCloseable()) { try(CustomCloseable ac50 = new CustomCloseable()) { try(CustomCloseable ac51 = new CustomCloseable()) { try(CustomCloseable ac52 = new CustomCloseable()) { try(CustomCloseable ac53 = new CustomCloseable()) { try(CustomCloseable ac54 = new CustomCloseable()) { try(CustomCloseable ac55 = new CustomCloseable()) { try(CustomCloseable ac56 = new CustomCloseable()) { try(CustomCloseable ac57 = new CustomCloseable()) { try(CustomCloseable ac58 = new CustomCloseable()) { try(CustomCloseable ac59 = new CustomCloseable()) { try(CustomCloseable ac60 = new CustomCloseable()) { try(CustomCloseable ac61 = new CustomCloseable()) { try(CustomCloseable ac62 = new CustomCloseable()) { try(CustomCloseable ac63 = new CustomCloseable()) { try(CustomCloseable ac64 = new CustomCloseable()) { try(CustomCloseable ac65 = new CustomCloseable()) { try(CustomCloseable ac66 = new CustomCloseable()) { try(CustomCloseable ac67 = new CustomCloseable()) { try(CustomCloseable ac68 = new CustomCloseable()) { try(CustomCloseable ac69 = new CustomCloseable()) { try(CustomCloseable ac70 = new CustomCloseable()) { try(CustomCloseable ac71 = new CustomCloseable()) { try(CustomCloseable ac72 = new CustomCloseable()) { try(CustomCloseable ac73 = new CustomCloseable()) { try(CustomCloseable ac74 = new CustomCloseable()) { try(CustomCloseable ac75 = new CustomCloseable()) { try(CustomCloseable ac76 = new CustomCloseable()) { try(CustomCloseable ac77 = new CustomCloseable()) { try(CustomCloseable ac78 = new CustomCloseable()) { try(CustomCloseable ac79 = new CustomCloseable()) { try(CustomCloseable ac80 = new CustomCloseable()) { try(CustomCloseable ac81 = new CustomCloseable()) { try(CustomCloseable ac82 = new CustomCloseable()) { try(CustomCloseable ac83 = new CustomCloseable()) { try(CustomCloseable ac84 = new CustomCloseable()) { try(CustomCloseable ac85 = new CustomCloseable()) { try(CustomCloseable ac86 = new CustomCloseable()) { try(CustomCloseable ac87 = new CustomCloseable()) { try(CustomCloseable ac88 = new CustomCloseable()) { try(CustomCloseable ac89 = new CustomCloseable()) { try(CustomCloseable ac90 = new CustomCloseable()) { try(CustomCloseable ac91 = new CustomCloseable()) { try(CustomCloseable ac92 = new CustomCloseable()) { try(CustomCloseable ac93 = new CustomCloseable()) { try(CustomCloseable ac94 = new CustomCloseable()) { try(CustomCloseable ac95 = new CustomCloseable()) { try(CustomCloseable ac96 = new CustomCloseable()) { try(CustomCloseable ac97 = new CustomCloseable()) { try(CustomCloseable ac98 = new CustomCloseable()) { try(CustomCloseable ac99 = new CustomCloseable()) { i++; AutoCloseable ac = new AutoCloseable() { public void close() { Flag.sFlag.raise(0, this.toString()); } }; throw new Exception("throwInTry"); } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } catch (Exception ex) { if (! ex.getMessage().equals("throwInTry")) return 2;/*TEST_FAILED*/ } boolean res = Flag.sFlag.check(""); if (res && (i == 1)) return 0;/*TEST_PASSED*/ else return 2;/*TEST_FAILED*/ } } class SuperFlag { private boolean[] flags = {false}; // flags for resources private boolean[] template = {true}; // what should after close private String[] addrs = {null}; // stores hash of objects that request flags private int numberOfFlags = 1; // the number of resources expected private int currentFreeSlot = 0; // index of current free slot private int error = 0; private String log = ""; public PrintStream out = System.out; public void clean() { flags = new boolean[] {false}; template = new boolean[] {true}; addrs = new String[] {null}; numberOfFlags = 1; currentFreeSlot = 0; error = 0; log = ""; } public void init(boolean[] template) { clean(); this.numberOfFlags = template.length; this.template = template; flags = new boolean[numberOfFlags]; addrs = new String[numberOfFlags]; } public void init(int numberOfFlags) { Arrays.fill(template = new boolean[numberOfFlags], true); init(template); } public int request(String addr) { if (currentFreeSlot == numberOfFlags) { error = 1; log += "The number of created autoCloseables exceeded the limit. "; return 0;/*TEST_PASSED*/ } addrs[currentFreeSlot] = addr; return currentFreeSlot++; } public void raise(int index, String addr) { flags[index] = true; if (! addr.equals(addrs[index])) { error = 2; log += "Method close() was called for some other resource. "; } } public boolean check(String msg) { boolean res = check(); if (!res) out.println(msg + "" + log); clean(); return res; } private boolean check() { boolean res; if (error > 0) { res = false; } else { res = Arrays.equals(flags, template); if (!res) log += "expected flags " + Arrays.toString(template) + ", got " + Arrays.toString(flags); } return res; } }