1   /*
2    * Copyright (c) 2009 QOS.ch All rights reserved.
3    * 
4    * Permission is hereby granted, free of charge, to any person obtaining a copy
5    * of this software and associated documentation files (the "Software"), to deal
6    * in the Software without restriction, including without limitation the rights
7    * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8    * copies of the Software, and to permit persons to whom the Software is
9    * furnished to do so, subject to the following conditions:
10   * 
11   * The above copyright notice and this permission notice shall be included in
12   * all copies or substantial portions of the Software.
13   * 
14   * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20   * SOFTWARE.
21   */
22  
23  package ch.qos.cal10n;
24  
25  import static org.junit.Assert.assertEquals;
26  import static org.junit.Assert.fail;
27  
28  import java.util.Locale;
29  
30  import org.junit.Test;
31  
32  import ch.qos.cal10n.sample.Colors;
33  import ch.qos.cal10n.sample.Minimal;
34  import ch.qos.cal10n.sample.Host.OtherColors;
35  
36  public class MessageConveyorTest {
37  
38    @Test
39    public void smoke_EN() {
40      MessageConveyor rbbmc = new MessageConveyor(Locale.UK);
41      String val;
42  
43      val = rbbmc.getMessage(Colors.BLUE);
44      assertEquals("violets are blue", val);
45  
46      val = rbbmc.getMessage(Colors.GREEN, "apples");
47      assertEquals("apples are green", val);
48    }
49  
50    // see http://jira.qos.ch/browse/CAL-1
51    @Test
52    public void nestedEnum_EN() {
53      MessageConveyor rbbmc = new MessageConveyor(Locale.UK);
54      String val;
55  
56      val = rbbmc.getMessage(Colors.RED);
57      assertEquals("roses are red", val);
58  
59      val = rbbmc.getMessage(OtherColors.RED);
60      assertEquals("roses are red", val);
61  
62      val = rbbmc.getMessage(OtherColors.BLUE);
63      assertEquals("violets are blue", val);
64    }
65  
66    @Test
67    public void smoke_FR() {
68      MessageConveyor rbbmc = new MessageConveyor(Locale.FRANCE);
69      String val;
70  
71      val = rbbmc.getMessage(Colors.BLUE);
72      assertEquals("les violettes sont bleues", val);
73  
74      // lemon=citron in french. This illustrates the problem of
75      // translating the parameters of a message
76      val = rbbmc.getMessage(Colors.GREEN, "pommes");
77      assertEquals("les pommes sont verts", val);
78    }
79  
80    @Test
81    public void mpo() {
82      MessageConveyor rbbmc = new MessageConveyor(Locale.UK);
83      MessageParameterObj mpo;
84      String val;
85  
86      mpo = new MessageParameterObj(Colors.BLUE);
87      val = rbbmc.getMessage(mpo);
88      assertEquals("violets are blue", val);
89  
90      mpo = new MessageParameterObj(Colors.GREEN, "apples");
91      val = rbbmc.getMessage(mpo);
92      assertEquals("apples are green", val);
93    }
94  
95    @Test
96    public void failedRBLookup() {
97  
98      MessageConveyor mc = new MessageConveyor(Locale.CHINA);
99      try {
100       mc.getMessage(Colors.BLUE);
101       fail("missing exception");
102     } catch (MessageConveyorException e) {
103       assertEquals(
104           "Failed to locate resource bundle [colors] for locale [zh_CN] for enum type [ch.qos.cal10n.sample.Colors]",
105           e.getMessage());
106     }
107   }
108   
109   @Test
110   public void minimal() {
111     MessageConveyor mc = new MessageConveyor(Locale.ENGLISH);
112     assertEquals("A", mc.getMessage(Minimal.A));
113   }
114   
115 }