/* * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.google.j2objc.net; import junit.framework.TestCase; /** * Unit tests for {@link NSErrorException}. * * @author Tom Ball */ public class NSErrorExceptionTest extends TestCase { private static native Object createNSError(String domain, long code, String description, String failingURL, Object underlyingError) /*-[ NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; if (description_) { [userInfo setObject:description_ forKey:NSLocalizedDescriptionKey]; } if (failingURL) { [userInfo setObject:failingURL forKey:NSURLErrorFailingURLStringErrorKey]; } if (underlyingError) { [userInfo setObject:underlyingError forKey:NSUnderlyingErrorKey]; } return [NSError errorWithDomain:domain code:code userInfo:userInfo]; ]-*/; public void testBasicError() { // NSURLErrorCancelled = -999. String description = "cancelled"; Object nsError = createNSError("NSURLErrorDomain", -999, description, null, null); NSErrorException exception = new NSErrorException(nsError); assertEquals("incorrect domain", "NSURLErrorDomain", exception.getDomain()); assertEquals("incorrect code", -999L, exception.getErrorCode()); assertEquals("incorrect description", description, exception.getMessage()); assertEquals("incorrect code name", "NSURLErrorCancelled", exception.getErrorName()); assertNull("unexpected URL", exception.getFailingURLString()); assertNull("unexpected cause", exception.getCause()); } public void testNextedError() { // NSURLErrorSecureConnectionFailed = -1200, NSURLErrorServerCertificateUntrusted = -1202. String untrustedDescription = "certificate untrusted"; String url = "https://0.0.0.0"; Object untrustedError = createNSError("NSURLErrorDomain", -1202, untrustedDescription, url, null); String connectFailedDescription = "secure connection failed"; Object nsError = createNSError("NSURLErrorDomain", -1200, connectFailedDescription, url, untrustedError); NSErrorException exception = new NSErrorException(nsError); assertEquals("incorrect domain", "NSURLErrorDomain", exception.getDomain()); assertEquals("incorrect code", -1200L, exception.getErrorCode()); assertEquals("incorrect description", connectFailedDescription, exception.getMessage()); assertEquals("incorrect code name", "NSURLErrorSecureConnectionFailed", exception.getErrorName()); assertEquals("incorrect URL", url, exception.getFailingURLString()); NSErrorException cause = (NSErrorException) exception.getCause(); assertNotNull("no cause", cause); assertEquals("incorrect cause domain", "NSURLErrorDomain", cause.getDomain()); assertEquals("incorrect cause code", -1202L, cause.getErrorCode()); assertEquals("incorrect cause description", untrustedDescription, cause.getMessage()); assertEquals("incorrect cause code name", "NSURLErrorServerCertificateUntrusted", cause.getErrorName()); assertEquals("incorrect cause URL", url, cause.getFailingURLString()); assertNull("unexpected nested cause", cause.getCause()); } }