| // Copyright 2007 Google Inc. All Rights Reserved. |
| |
| package com.google.inject; |
| |
| import junit.framework.TestCase; |
| |
| /** |
| * Tests the error messages produced by Guice. |
| * |
| * @author Kevin Bourrillion |
| */ |
| public class ErrorMessagesTest extends TestCase { |
| |
| private class InnerClass {} |
| |
| public void testInjectInnerClass() throws Exception { |
| Injector injector = Guice.createInjector(); |
| try { |
| injector.getInstance(InnerClass.class); |
| fail(); |
| } catch (Exception e) { |
| // TODO(kevinb): why does the source come out as unknown?? |
| assertTrue(e.getMessage().contains( |
| "Injecting into inner classes is not supported.")); |
| } |
| } |
| |
| public void testInjectLocalClass() throws Exception { |
| class LocalClass {} |
| |
| Injector injector = Guice.createInjector(); |
| try { |
| injector.getInstance(LocalClass.class); |
| fail(); |
| } catch (Exception e) { |
| // TODO(kevinb): why does the source come out as unknown?? |
| assertTrue(e.getMessage().contains( |
| "Injecting into inner classes is not supported.")); |
| } |
| } |
| |
| public void testExplicitBindingOfAnAbstractClass() { |
| try { |
| Guice.createInjector(new AbstractModule() { |
| protected void configure() { |
| bind(AbstractClass.class); |
| } |
| }); |
| fail(); |
| } catch(CreationException e) { |
| assertTrue(e.getMessage().contains( |
| "Injecting into abstract types is not supported.")); |
| } |
| } |
| |
| public void testGetInstanceOfAnAbstractClass() { |
| Injector injector = Guice.createInjector(); |
| try { |
| injector.getInstance(AbstractClass.class); |
| fail(); |
| } catch(ConfigurationException e) { |
| assertTrue(e.getMessage().contains( |
| "Injecting into abstract types is not supported.")); |
| } |
| } |
| |
| static abstract class AbstractClass { |
| @Inject AbstractClass() { } |
| } |
| |
| // TODO(kevinb): many many more |
| |
| } |