/*
* Copyright (C) 2014 Civilian Framework.
*
* Licensed under the Civilian License (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.civilian-framework.org/license.txt
*
* 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.civilian.client;
import org.civilian.CivTest;
import org.civilian.testcase1.Test1PathParams;
import org.civilian.type.TypeLib;
import org.junit.Test;
public class WebUrlTest extends CivTest
{
@Test public void testCreate()
{
WebUrl url;
url = new WebUrl("http://acme.org/");
assertEquals("http://acme.org/", url.toString());
url = new WebUrl(new Test1WebRoot("x"));
assertEquals("x", url.toString());
url = new WebUrl(new Test1WebRoot("x").getRoute());
assertEquals("x", url.toString());
}
@Test public void testAddPath()
{
WebUrl url = new WebUrl("x");
assertEquals("x", url.toString());
url.addPath("/path");
assertEquals("x/path", url.toString());
url.addPath("/another");
assertEquals("x/path/another", url.toString());
}
@Test public void testQueryParams()
{
WebUrl url = new WebUrl("http://acme.org/");
assertEquals(0, url.getQueryParamCount());
url.clearQueryParams();
assertEquals(0, url.getQueryParamCount());
url.addEmptyQueryParam("test");
assertEquals(1, url.getQueryParamCount());
url.clearQueryParams();
assertEquals(0, url.getQueryParamCount());
assertNull(url.getQueryParam("p", false));
WebUrl.QueryParam p = url.getQueryParam("p", true);
assertSame(p, url.getQueryParam(0));
assertSame(p, url.getQueryParam("p", true));
assertEquals(1, url.getQueryParamCount());
url.removeQueryParam("p");
assertEquals(0, url.getQueryParamCount());
p = url.getQueryParam("p", true);
assertEquals(1, url.getQueryParamCount());
url.removeQueryParam(p);
assertEquals(0, url.getQueryParamCount());
url.removeQueryParam((WebUrl.QueryParam)null);
assertEquals(0, url.getQueryParamCount());
url.addQueryParam("qps", "sv");
url.addQueryParam("qpi1", 123);
url.addQueryParam("qpi2", Integer.valueOf(456));
url.addQueryParam("qpb1", true);
url.addQueryParam("qpb2", Boolean.FALSE);
url.addQueryParam("qpd", TypeLib.DOUBLE, new Double(12.34));
}
@Test public void testFragment()
{
WebUrl url = new WebUrl("test");
assertNull(url.getFragment());
url.setFragment("frag");
assertEquals("frag", url.getFragment());
assertEquals("test#frag", url.toString());
}
@Test public void testPathParams()
{
Test1WebRoot root = new Test1WebRoot("http://server");
WebUrl url = new WebUrl(root);
assertEquals(0, url.getQueryParamCount());
url = new WebUrl(root.$gammaId);
assertEquals(1, url.getPathParamCount());
assertEquals(Test1PathParams.GAMMA, url.getPathParamDef(0));
assertNull(url.getPathParam(0));
assertNull(url.getPathParam(Test1PathParams.GAMMA));
assertNull(url.getPathParam(Test1PathParams.BETA));
Integer v1 = Integer.valueOf(123);
url.setPathParam(v1);
assertEquals(v1, url.getPathParam(0));
Integer v2 = Integer.valueOf(456);
url.setPathParam(0, v2);
assertSame(v2, url.getPathParam(0));
url.setPathParams(v1);
assertSame(v1, url.getPathParam(0));
url.setPathParam(Test1PathParams.GAMMA, 789);
assertEquals(Integer.valueOf(789), url.getPathParam(0));
WebUrl url2 = new WebUrl(root.$gammaId);
url2.copyPathParams(url);
assertEquals(Integer.valueOf(789), url2.getPathParam(0));
url.clearPathParams();
assertNull(url.getPathParam(0));
}
@Test public void testToString()
{
WebUrl url = new WebUrl("http://test.com");
url.addPath("segment");
url.addPath("path.txt");
url.addQueryParam("x");
url.addQueryParam("y", "1");
assertEquals("http://test.com/segment/path.txt?x=&y=1", url.toString());
}
}