/core/test/com/google/inject/name/NamesTest.java
Java | 112 lines | 72 code | 22 blank | 18 comment | 0 complexity | b93adcea9da896b98282bd705c9ee405 MD5 | raw file
- /**
- * Copyright (C) 2008 Google Inc.
- *
- * 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.inject.name;
- import static com.google.inject.Asserts.assertEqualWhenReserialized;
- import static com.google.inject.Asserts.assertEqualsBothWays;
- import com.google.common.collect.ImmutableMap;
- import com.google.inject.AbstractModule;
- import com.google.inject.Guice;
- import com.google.inject.Injector;
- import com.google.inject.Key;
- import junit.framework.TestCase;
- import java.io.IOException;
- import java.util.Map;
- import java.util.Properties;
- /**
- * @author jessewilson@google.com (Jesse Wilson)
- */
- public class NamesTest extends TestCase {
- @Named("foo") private String foo;
- private Named namedFoo;
-
- protected void setUp() throws Exception {
- super.setUp();
- namedFoo = getClass().getDeclaredField("foo").getAnnotation(Named.class);
- }
- public void testConsistentEqualsAndHashcode() {
- Named actual = Names.named("foo");
- assertEqualsBothWays(namedFoo, actual);
- assertEquals(namedFoo.toString(), actual.toString());
- }
- public void testNamedIsSerializable() throws IOException {
- assertEqualWhenReserialized(Names.named("foo"));
- }
- public void testBindPropertiesUsingProperties() {
- final Properties teams = new Properties();
- teams.setProperty("SanJose", "Sharks");
- teams.setProperty("Edmonton", "Oilers");
- Injector injector = Guice.createInjector(new AbstractModule() {
- protected void configure() {
- Names.bindProperties(binder(), teams);
- }
- });
- assertEquals("Sharks", injector.getInstance(Key.get(String.class, Names.named("SanJose"))));
- assertEquals("Oilers", injector.getInstance(Key.get(String.class, Names.named("Edmonton"))));
- }
- public void testBindPropertiesUsingMap() {
- final Map<String, String> properties = ImmutableMap.of(
- "SanJose", "Sharks", "Edmonton", "Oilers");
- Injector injector = Guice.createInjector(new AbstractModule() {
- protected void configure() {
- Names.bindProperties(binder(), properties);
- }
- });
- assertEquals("Sharks", injector.getInstance(Key.get(String.class, Names.named("SanJose"))));
- assertEquals("Oilers", injector.getInstance(Key.get(String.class, Names.named("Edmonton"))));
- }
- public void testBindPropertiesIncludesInheritedProperties() {
- Properties defaults = new Properties();
- defaults.setProperty("Edmonton", "Eskimos");
- defaults.setProperty("Regina", "Pats");
- final Properties teams = new Properties(defaults);
- teams.setProperty("SanJose", "Sharks");
- teams.setProperty("Edmonton", "Oilers");
- Injector injector = Guice.createInjector(new AbstractModule() {
- protected void configure() {
- Names.bindProperties(binder(), teams);
- }
- });
- assertEquals("Pats", injector.getInstance(Key.get(String.class, Names.named("Regina"))));
- assertEquals("Oilers", injector.getInstance(Key.get(String.class, Names.named("Edmonton"))));
- assertEquals("Sharks", injector.getInstance(Key.get(String.class, Names.named("SanJose"))));
- try {
- injector.getInstance(Key.get(String.class, Names.named("Calgary")));
- fail();
- } catch (RuntimeException expected) {
- }
- }
- }