blob: c3ec747fcf7fed094eb5a5d6dc8bda776718b9d0 [file] [log] [blame]
/*
* 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.
*/
package org.apache.sling.jcr.contentparser.impl;
import static org.apache.sling.jcr.contentparser.impl.JcrXmlValueConverter.parseValue;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import java.math.BigDecimal;
import java.net.URI;
import java.util.Calendar;
import java.util.UUID;
import org.junit.Test;
public class JcrXmlValueConverterTest {
private static final String NAME = "prop1";
@Test
public void testNull() {
assertNull(parseValue(NAME, null));
}
@Test(expected = IllegalArgumentException.class)
public void testInvalid() {
parseValue(NAME, "{InvalidType}xyz");
}
@Test
public void testString() {
assertEquals("myString", parseValue(NAME, "myString"));
assertEquals("prop", "myString [ ] { } \\ ,", parseValue(NAME, "myString [ ] { } \\\\ ,"));
assertEquals("{myString}", parseValue(NAME, "\\{myString}"));
assertEquals("aaa{myString}", parseValue(NAME, "aaa{myString}"));
assertEquals("[myString]", parseValue(NAME, "\\[myString]"));
assertEquals("aaa[myString]", parseValue(NAME, "aaa[myString]"));
}
@Test
public void testStringArray() {
assertArrayEquals(new Object[] { "myString1", "myString2" }, (Object[]) parseValue(NAME, "[myString1,myString2]"));
assertArrayEquals(new Object[] { "myString1,[]\\äöü߀", "myString2", "myString3 [ ] { } \\ ,", "", "[myString5]", "{myString6}" },
(Object[]) parseValue(NAME, "[myString1\\,[]\\\\äöü߀,myString2,myString3 [ ] { } \\\\ \\,,,[myString5],{myString6}]"));
}
@Test
public void testBoolean() {
assertEquals(true, parseValue(NAME, "{Boolean}true"));
assertEquals(false, parseValue(NAME, "{Boolean}false"));
}
@Test
public void testBooleanArray() {
assertArrayEquals(new Object[] { true, false }, (Object[]) parseValue(NAME, "{Boolean}[true,false]"));
}
@Test
public void testLong() {
assertEquals(1L, parseValue(NAME, "{Long}1"));
assertEquals(10000000000L, parseValue(NAME, "{Long}10000000000"));
}
@Test
public void testLongArray() {
assertArrayEquals(new Object[] { 1L, 2L }, (Object[]) parseValue(NAME, "{Long}[1,2]"));
assertArrayEquals(new Object[] { 10000000000L, 20000000000L }, (Object[]) parseValue(NAME, "{Long}[10000000000,20000000000]"));
}
@Test
public void testDouble() {
assertEquals(new BigDecimal("1.234"), parseValue(NAME, "{Decimal}1.234"));
}
@Test
public void testDoubleArray() {
assertArrayEquals(new Object[] { new BigDecimal("1.234"), new BigDecimal("2.345") }, (Object[]) parseValue(NAME, "{Decimal}[1.234,2.345]"));
}
@Test
public void testCalendar() {
Calendar value = (Calendar)parseValue(NAME, "{Date}2010-09-05T15:10:20.000Z");
assertEquals(2010, value.get(Calendar.YEAR));
assertEquals(8, value.get(Calendar.MONTH));
assertEquals(5, value.get(Calendar.DAY_OF_MONTH));
}
@Test
public void testStringArrayRepPrivileges() {
assertArrayEquals(new Object[] { "rep:write", "crx:replicate", "jcr:read" }, (Object[]) parseValue(NAME, "{Name}[rep:write,crx:replicate,jcr:read]"));
}
@Test
public void testReference() {
UUID uuid = UUID.randomUUID();
UUID value = (UUID)parseValue(NAME, "{Reference}" + uuid.toString());
assertEquals(uuid, value);
}
@Test
public void testURI() {
URI value = (URI)parseValue(NAME, "{URI}http://www.jodelkaiser.de/");
assertEquals("http://www.jodelkaiser.de/", value.toString());
}
}