/* * Copyright 2015 Red Hat, Inc. and/or its affiliates. * * 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 org.uberfire.annotations.processors; import org.junit.Test; import static org.junit.Assert.*; public class PartInformationTest { @Test public void testJustPartName() throws Exception { PartInformation pi = new PartInformation("thePlace"); assertEquals("thePlace", pi.getPartName()); assertEquals(0, pi.getParameters().size()); } @Test public void testPartNameWithTrailingQuestionMark() throws Exception { PartInformation pi = new PartInformation("thePlace?"); assertEquals("thePlace", pi.getPartName()); assertEquals(0, pi.getParameters().size()); } @Test public void testPartNameAndOneParam() throws Exception { PartInformation pi = new PartInformation("thePlace?oh=yeah"); assertEquals("thePlace", pi.getPartName()); assertEquals(1, pi.getParameters().size()); assertEquals("yeah", pi.getParameters().get("oh")); } @Test public void testPartNameAndManyParams() throws Exception { PartInformation pi = new PartInformation("thePlace?oh=yeah&really=yup&areYou=sure"); assertEquals("thePlace", pi.getPartName()); assertEquals(3, pi.getParameters().size()); assertEquals("yeah", pi.getParameters().get("oh")); assertEquals("yup", pi.getParameters().get("really")); assertEquals("sure", pi.getParameters().get("areYou")); } @Test public void testEscapesInAllParts() throws Exception { PartInformation pi = new PartInformation("the%3fPlace?o%3dh=ye%3dah&re%21ally=y%25up"); assertEquals("the?Place", pi.getPartName()); assertEquals(2, pi.getParameters().size()); assertEquals("ye=ah", pi.getParameters().get("o=h")); assertEquals("y%up", pi.getParameters().get("re!ally")); } @Test public void testEmptyParamKey() throws Exception { PartInformation pi = new PartInformation("thePlace?=emptyString"); assertEquals("thePlace", pi.getPartName()); assertEquals(1, pi.getParameters().size()); assertEquals("emptyString", pi.getParameters().get("")); } @Test public void testEmptyParamValue() throws Exception { PartInformation pi = new PartInformation("thePlace?lonelyKey"); assertEquals("thePlace", pi.getPartName()); assertEquals(1, pi.getParameters().size()); assertEquals("", pi.getParameters().get("lonelyKey")); } @Test public void testEmptyParamValueTrailingEquals() throws Exception { PartInformation pi = new PartInformation("thePlace?lonelyKey="); assertEquals("thePlace", pi.getPartName()); assertEquals(1, pi.getParameters().size()); assertEquals("", pi.getParameters().get("lonelyKey")); } @Test public void testRepeatedParamLastValueWins() throws Exception { PartInformation pi = new PartInformation("thePlace?repeat=peat&repeat=eat&repeat=at"); assertEquals("thePlace", pi.getPartName()); assertEquals(1, pi.getParameters().size()); assertEquals("at", pi.getParameters().get("repeat")); } @Test public void testEqualsBeforeQuestionMarkIsALiteral() throws Exception { PartInformation pi = new PartInformation("strange=place=name"); assertEquals("strange=place=name", pi.getPartName()); assertEquals(0, pi.getParameters().size()); } @Test public void testQuestionMarkAfterQuestionMarkIsALiteral() throws Exception { PartInformation pi = new PartInformation("thePlace?strange?param?name=strange?param?value"); assertEquals("thePlace", pi.getPartName()); assertEquals(1, pi.getParameters().size()); assertEquals("strange?param?value", pi.getParameters().get("strange?param?name")); } }