/** Verify fields are released in a dealloc for reference counted code. */ public void testFieldReleaseReferenceCounting() throws IOException { Options.setMemoryManagementOption(Options.MemoryManagementOption.REFERENCE_COUNTING); String translation = translateSourceFile("class Test { Object o; Runnable r; }", "Test", "Test.m"); assertTranslatedLines( translation, "- (void)dealloc {", "RELEASE_(o_);", "RELEASE_(r_);", "[super dealloc];", "}"); }
/** Verify fields are not released for ARC code when a finalize() method is defined. */ public void testFieldReleaseFinalizeARC() throws IOException { Options.setMemoryManagementOption(Options.MemoryManagementOption.ARC); String translation = translateSourceFile( "class Test { Object o; Runnable r;" + "public void finalize() throws Throwable { System.out.println(this); }}", "Test", "Test.m"); assertTranslatedLines( translation, "- (void)dealloc {", "[((JavaIoPrintStream *) nil_chk(JreLoadStatic(JavaLangSystem, out_))) " + "printlnWithId:self];", "}"); }
/** Verify fields are not released for ARC code, and a dealloc method is not created. */ public void testFieldReleaseARC() throws IOException { Options.setMemoryManagementOption(Options.MemoryManagementOption.ARC); String translation = translateSourceFile("class Test { Object o; Runnable r; }", "Test", "Test.m"); assertNotInTranslation(translation, "dealloc"); }