Throwing an AssertionError without an assert statement is fine and actually suggested practice (at least according to the SCJP guidelines), as long as it's a proper assertion scenario.
-Nathan On 12/5/06, Alexey Varlamov <[EMAIL PROTECTED]> wrote:
Paulex, What I read in the bug description, this is our impl which throws AssertionError, seemingly regardless of assertion status ? In general I agree, we need not strive to be assrtion-compatible. -- Alexey 2006/12/5, Paulex Yang <[EMAIL PROTECTED]>: > This incompatibility is obviously caused by RI's assert usage, whether > or not we need to be "assert compatible" with RI? assert on/off in Java > is runtime decided, so that it's still possible that user application > run JRE in assert enable mode. And if we do want to "assert compatible", > we need to run our test suites in both mode. > > IMHO, "assert compatibility" is not necessary, because it is not likely > to cause user application fail, it seems crazy to expect assert error in > the application logic. And I don't believe there are JCK test cases > against assert, but I'm open to other's comments. > > Artem Aliev (JIRA) wrote: > > [luni] java.util.prefs.AbstractPreferences.exportNode(OutputStream) and > java.util.prefs.AbstractPreferences.exportSubtree(OutputStream) throws > AssertionError instead of NPE in a case when OutputStream is null > > > ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ > > > > Key: HARMONY-2420 > > URL: http://issues.apache.org/jira/browse/HARMONY-2420 > > Project: Harmony > > Issue Type: Bug > > Components: Classlib > > Reporter: Artem Aliev > > Priority: Minor > > > > > > exportNode(OutputStream) and exportSubtree(OutputStream) throws > > AssertionError not NullPointerException in a case when OutputStream is > null. > > > > Test to reproduce: > > import junit.framework.TestCase; > > > > import java.io.IOException; > > import java.util.prefs.*; > > > > class AbstractPreferencesImpl extends AbstractPreferences{ > > > > protected AbstractPreferencesImpl(AbstractPreferences arg0, String > > arg1) { > > super(arg0, arg1); > > } > > > > protected AbstractPreferences childSpi(String arg0) { > > return null; > > } > > > > protected String[] childrenNamesSpi() throws BackingStoreException > { > > return null; > > } > > > > protected void flushSpi() throws BackingStoreException { > > } > > > > protected String getSpi(String arg0) { > > return null; > > } > > > > protected String[] keysSpi() throws BackingStoreException { > > return null; > > } > > > > protected void putSpi(String arg0, String arg1) { > > } > > > > protected void removeNodeSpi() throws BackingStoreException { > > } > > > > protected void removeSpi(String arg0) { > > } > > > > protected void syncSpi() throws BackingStoreException { > > } > > } > > > > public class Test extends TestCase { > > > > public void testcase() { > > AbstractPreferences ap = new AbstractPreferencesImpl(null, > ""); > > boolean res1 = false, res2 = false; > > try { > > ap.exportNode(null); > > } catch (IOException e) { > > e.printStackTrace(); > > } catch (BackingStoreException e) { > > e.printStackTrace(); > > }catch (NullPointerException e) { > > e.printStackTrace(); > > System.out.println("Got Expected > > NullPointerException"); > > } catch (AssertionError ae) { > > ae.printStackTrace(); > > res1 = true; > > System.out.println("Got Unexpected > AssertionError"); > > } > > try { > > ap.exportSubtree(null); > > } catch (IOException e) { > > e.printStackTrace(); > > } catch (BackingStoreException e) { > > e.printStackTrace(); > > }catch (NullPointerException e) { > > e.printStackTrace(); > > System.out.println("Got Expected > > NullPointerException"); > > } catch (AssertionError ae) { > > ae.printStackTrace(); > > res2 = true; > > System.out.println("Got Unexpected > AssertionError"); > > } > > if (res1 || res2) { > > fail(); > > } > > } > > } > > > > Output on Harmony: > > Apache Harmony Launcher : (c) Copyright 1991, 2006 The Apache Software > > Foundation or its licensors, as applicable. > > java version "1.5.0" > > pre-alpha : not complete or compatible > > svn = rsvn: '.' is not a working copy, (Sep 20 2006), Windows/ia32/msvc > 1310, > > release build > > http://incubator.apache.org/harmony > > > > .java.lang.AssertionError: Stream is null > > at > > > java.util.prefs.AbstractPreferences.exportNode(AbstractPreferences.java:373) > > at Test.testcase(Test.java:50) > > at java.lang.reflect.VMReflection.invokeMethod(Native Method) > > at java.lang.reflect.Method.invoke(Unknown Source) > > at junit.framework.TestCase.runTest(TestCase.java:154) > > at junit.framework.TestCase.runBare(TestCase.java:127) > > at junit.framework.TestResult$1.protect(TestResult.java:106) > > at junit.framework.TestResult.runProtected(TestResult.java:124) > > at junit.framework.TestResult.run(TestResult.java:109) > > at junit.framework.TestCase.run(TestCase.java:118) > > at junit.framework.TestSuite.runTest(TestSuite.java:208) > > at junit.framework.TestSuite.run(TestSuite.java:203) > > at junit.textui.TestRunner.doRun(TestRunner.java:115) > > at junit.textui.TestRunner.start(TestRunner.java:172) > > at junit.textui.TestRunner.main(TestRunner.java:138) > > Got Unexpected AssertionError > > java.lang.AssertionError: Stream is null > > at > > > java.util.prefs.AbstractPreferences.exportSubtree(AbstractPreferences.java:388) > > at Test.testcase(Test.java:64) > > at java.lang.reflect.VMReflection.invokeMethod(Native Method) > > at java.lang.reflect.Method.invoke(Unknown Source) > > at junit.framework.TestCase.runTest(TestCase.java:154) > > at junit.framework.TestCase.runBare(TestCase.java:127) > > at junit.framework.TestResult$1.protect(TestResult.java:106) > > at junit.framework.TestResult.runProtected(TestResult.java:124) > > at junit.framework.TestResult.run(TestResult.java:109) > > at junit.framework.TestCase.run(TestCase.java:118) > > at junit.framework.TestSuite.runTest(TestSuite.java:208) > > at junit.framework.TestSuite.run(TestSuite.java:203) > > at junit.textui.TestRunner.doRun(TestRunner.java:115) > > at junit.textui.TestRunner.start(TestRunner.java:172) > > at junit.textui.TestRunner.main(TestRunner.java:138) > > Got Unexpected AssertionError > > F > > Time: 0.125 > > There was 1 failure: > > 1) testcase(Test)junit.framework.AssertionFailedError > > at Test.testcase(Test.java:78) > > at java.lang.reflect.VMReflection.invokeMethod(Native Method) > > > > FAILURES!!! > > Tests run: 1, Failures: 1, Errors: 0 > > > > res = 1 > > > > > > Output on RI: > > java version "1.5.0_06" > > Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05) > > Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode) > > .java.lang.NullPointerException > > at > java.util.prefs.XmlSupport.putPreferencesInXml(XmlSupport.java:140) > > at java.util.prefs.XmlSupport.export(XmlSupport.java:104) > > at > > > java.util.prefs.AbstractPreferences.exportNode(AbstractPreferences.java:1575) > > at Test.testcase(Test.java:50) > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > > at > > > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > > at > > > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > > at java.lang.reflect.Method.invoke(Method.java:585) > > at junit.framework.TestCase.runTest(TestCase.java:154) > > at junit.framework.TestCase.runBare(TestCase.java:127) > > at junit.framework.TestResult$1.protect(TestResult.java:106) > > at junit.framework.TestResult.runProtected(TestResult.java:124) > > at junit.framework.TestResult.run(TestResult.java:109) > > at junit.framework.TestCase.run(TestCase.java:118) > > at junit.framework.TestSuite.runTest(TestSuite.java:208) > > at junit.framework.TestSuite.run(TestSuite.java:203) > > at junit.textui.TestRunner.doRun(TestRunner.java:116) > > at junit.textui.TestRunner.start(TestRunner.java:172) > > at junit.textui.TestRunner.main(TestRunner.java:138) > > Got Expected NullPointerException > > java.lang.NullPointerException > > at > java.util.prefs.XmlSupport.putPreferencesInXml(XmlSupport.java:140) > > at java.util.prefs.XmlSupport.export(XmlSupport.java:104) > > at > > > java.util.prefs.AbstractPreferences.exportSubtree(AbstractPreferences.java:1591) > > at Test.testcase(Test.java:64) > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > > at > > > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > > at > > > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > > at java.lang.reflect.Method.invoke(Method.java:585) > > at junit.framework.TestCase.runTest(TestCase.java:154) > > at junit.framework.TestCase.runBare(TestCase.java:127) > > at junit.framework.TestResult$1.protect(TestResult.java:106) > > at junit.framework.TestResult.runProtected(TestResult.java:124) > > at junit.framework.TestResult.run(TestResult.java:109) > > at junit.framework.TestCase.run(TestCase.java:118) > > at junit.framework.TestSuite.runTest(TestSuite.java:208) > > at junit.framework.TestSuite.run(TestSuite.java:203) > > at junit.textui.TestRunner.doRun(TestRunner.java:116) > > at junit.textui.TestRunner.start(TestRunner.java:172) > > at junit.textui.TestRunner.main(TestRunner.java:138) > > Got Expected NullPointerException > > > > Time: 0.078 > > > > OK (1 test) > > > > res = 0 > > > > > > > > > -- > Paulex Yang > China Software Development Lab > IBM > > >
