/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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. */ /* $Id$ */ package org.apache.fop.util; import java.util.Map; import org.junit.Test; import org.xml.sax.helpers.LocatorImpl; import static org.junit.Assert.assertEquals; import org.apache.fop.events.model.EventSeverity; import org.apache.fop.util.text.AdvancedMessageFormat; /** * Tests for EventFormatter. */ public class AdvancedMessageFormatTestCase { @Test public void testFormatting() throws Exception { String msg; AdvancedMessageFormat format; String pattern = "Element \"{elementName}\" is missing[ required property \"{propertyName}\"]!"; format = new AdvancedMessageFormat(pattern); Map params = new java.util.HashMap(); params.put("node", new Object()); params.put("elementName", "fo:external-graphic"); params.put("propertyName", "src"); msg = format.format(params); assertEquals("Element \"fo:external-graphic\" is missing required property \"src\"!", msg); params.remove("propertyName"); msg = format.format(params); assertEquals("Element \"fo:external-graphic\" is missing!", msg); pattern = "Testing \\{escaped \\[characters\\], now a normal field {elementName}!"; format = new AdvancedMessageFormat(pattern); msg = format.format(params); assertEquals("Testing {escaped [characters], now a normal field fo:external-graphic!", msg); pattern = "Multi-conditional: [case1: {var1}|case2: {var2}|case3: {var3}]"; format = new AdvancedMessageFormat(pattern); params = new java.util.HashMap(); msg = format.format(params); assertEquals("Multi-conditional: ", msg); params.put("var3", "value3"); msg = format.format(params); assertEquals("Multi-conditional: case3: value3", msg); params.put("var1", "value1"); msg = format.format(params); assertEquals("Multi-conditional: case1: value1", msg); } @Test public void testObjectFormatting() throws Exception { String msg; AdvancedMessageFormat format; String pattern = "Here's a Locator: {locator}"; format = new AdvancedMessageFormat(pattern); Map params = new java.util.HashMap(); LocatorImpl loc = new LocatorImpl(); loc.setColumnNumber(7); loc.setLineNumber(12); params.put("locator", loc); msg = format.format(params); assertEquals("Here\'s a Locator: 12:7", msg); } @Test public void testIfFormatting() throws Exception { String msg; AdvancedMessageFormat format; format = new AdvancedMessageFormat("You are{isBad,if, not} nice!"); Map params = new java.util.HashMap(); params.put("isBad", Boolean.FALSE); msg = format.format(params); assertEquals("You are nice!", msg); params.put("isBad", Boolean.TRUE); msg = format.format(params); assertEquals("You are not nice!", msg); format = new AdvancedMessageFormat("You are{isGood,if, very, not so} nice!"); params = new java.util.HashMap(); msg = format.format(params); //isGood is missing assertEquals("You are not so nice!", msg); params.put("isGood", Boolean.FALSE); msg = format.format(params); assertEquals("You are not so nice!", msg); params.put("isGood", Boolean.TRUE); msg = format.format(params); assertEquals("You are very nice!", msg); format = new AdvancedMessageFormat("You are{isGood,if, very\\, very} nice!"); params = new java.util.HashMap(); msg = format.format(params); //isGood is missing assertEquals("You are nice!", msg); params.put("isGood", Boolean.FALSE); msg = format.format(params); assertEquals("You are nice!", msg); params.put("isGood", Boolean.TRUE); msg = format.format(params); assertEquals("You are very, very nice!", msg); } @Test public void testEqualsFormatting() throws Exception { String msg; AdvancedMessageFormat format; format = new AdvancedMessageFormat( "Error{severity,equals,EventSeverity:FATAL,,\nSome explanation!}"); Map params = new java.util.HashMap(); params.put("severity", EventSeverity.FATAL); msg = format.format(params); assertEquals("Error", msg); params.put("severity", EventSeverity.WARN); msg = format.format(params); assertEquals("Error\nSome explanation!", msg); } @Test public void testChoiceFormatting() throws Exception { String msg; AdvancedMessageFormat format; format = new AdvancedMessageFormat( "You have {amount,choice,0#nothing|0<{amount} bucks|100<more than enough}."); Map params = new java.util.HashMap(); params.put("amount", 0); msg = format.format(params); assertEquals("You have nothing.", msg); params.put("amount", 7); msg = format.format(params); assertEquals("You have 7 bucks.", msg); params.put("amount", 140); msg = format.format(params); assertEquals("You have more than enough.", msg); } }