blob: a33e624837b608a1c0f9394484401568426bb324 [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.commons.osgi;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import junit.framework.TestCase;
import org.osgi.framework.Constants;
@SuppressWarnings("deprecation")
public class OsgiUtilTest extends TestCase {
public void testToDouble() {
// we test getProperty which calls toDouble - so we can test both
// methods in one go
assertEquals(2.0, OsgiUtil.getProperty(null, 2.0));
assertEquals(1.0, OsgiUtil.getProperty(1.0, 2.0));
assertEquals(1.0, OsgiUtil.getProperty(new Double(1.0), 2.0));
assertEquals(5.0, OsgiUtil.getProperty(new Long(5), 2.0));
assertEquals(2.0, OsgiUtil.getProperty("abc", 2.0));
}
public void testToBoolean() {
assertEquals(true, OsgiUtil.toBoolean(null, true));
assertEquals(false, OsgiUtil.toBoolean(1.0, true));
assertEquals(false, OsgiUtil.toBoolean(false, true));
assertEquals(false, OsgiUtil.toBoolean("false", true));
assertEquals(false, OsgiUtil.toBoolean("abc", true));
}
public void testToInteger() {
assertEquals(2, OsgiUtil.toInteger(null, 2));
assertEquals(2, OsgiUtil.toInteger(1.0, 2));
assertEquals(2, OsgiUtil.toInteger(new Double(1.0), 2));
assertEquals(5, OsgiUtil.toInteger(new Long(5), 2));
assertEquals(5, OsgiUtil.toInteger(new Integer(5), 2));
assertEquals(2, OsgiUtil.toInteger("abc", 2));
}
public void testToLong() {
assertEquals(2, OsgiUtil.toLong(null, 2));
assertEquals(2, OsgiUtil.toLong(1.0, 2));
assertEquals(2, OsgiUtil.toLong(new Double(1.0), 2));
assertEquals(5, OsgiUtil.toLong(new Long(5), 2));
assertEquals(5, OsgiUtil.toLong(new Integer(5), 2));
assertEquals(2, OsgiUtil.toLong("abc", 2));
}
public void testToObject() {
assertEquals("hallo", OsgiUtil.toObject("hallo"));
assertEquals("1", OsgiUtil.toObject(new String[] {"1", "2"}));
assertEquals(null, OsgiUtil.toObject(null));
assertEquals(null, OsgiUtil.toObject(new String[] {}));
final List<String> l = new ArrayList<String>();
assertEquals(null, OsgiUtil.toObject(l));
l.add("1");
assertEquals("1", OsgiUtil.toObject(l));
l.add("2");
assertEquals("1", OsgiUtil.toObject(l));
final Map<String, Object> m = new HashMap<String, Object>();
assertEquals(m, OsgiUtil.toObject(m));
}
public void testToString() {
assertEquals("hallo", OsgiUtil.toString("hallo", null));
assertEquals(this.toString(), OsgiUtil.toString(null, this.toString()));
final Map<String, Object> m = new HashMap<String, Object>();
m.put("1", 5);
assertEquals(m.toString(), OsgiUtil.toString(m, this.toString()));
}
public void testToStringArray() {
final String[] defaultValue = new String[] {"1"};
assertEquals(null, OsgiUtil.toStringArray(5));
assertEquals(null, OsgiUtil.toStringArray(null));
assertEquals(defaultValue, OsgiUtil.toStringArray(5, defaultValue));
assertEquals(defaultValue, OsgiUtil.toStringArray(null, defaultValue));
equals(new String[] {"hallo"}, OsgiUtil.toStringArray("hallo", defaultValue));
equals(new String[] {"hallo"}, OsgiUtil.toStringArray(new String[] {"hallo"}, defaultValue));
equals(new String[] {"hallo", "you"}, OsgiUtil.toStringArray(new String[] {"hallo", "you"}, defaultValue));
equals(new String[] {"5", "1"}, OsgiUtil.toStringArray(new Integer[] {5, 1}, defaultValue));
equals(new String[] {"5", "1"}, OsgiUtil.toStringArray(new Integer[] {5, null, 1}, defaultValue));
final List<String> l = new ArrayList<String>();
equals(new String[] {}, OsgiUtil.toStringArray(l, defaultValue));
l.add("1");
l.add("2");
equals(new String[] {"1", "2"}, OsgiUtil.toStringArray(l, defaultValue));
l.add(null);
equals(new String[] {"1", "2"}, OsgiUtil.toStringArray(l, defaultValue));
final Map<String, Object> m = new HashMap<String, Object>();
m.put("1", 5);
assertEquals(defaultValue, OsgiUtil.toStringArray(m, defaultValue));
}
private void equals(final String[] a, final String[] b) {
if ( a == null && b == null ) {
return;
}
if ( a == null ) {
fail("Array is not null: " + b);
}
if ( b == null ) {
fail("Array is null, expected is: " + a);
}
if ( a.length != b.length ) {
fail("Length differs: expect " + a .length + ", received " + b.length);
}
for(int i=0; i < a.length; i++) {
if ( ! a[i].equals(b[i])) {
fail("Expected " + a[i] + " at index " + i + ", but is " + b[i]);
}
}
}
public void testRanking() {
final Map<String, Object> map1 = new HashMap<String, Object>();
map1.put(Constants.SERVICE_ID, 1L);
map1.put(Constants.SERVICE_RANKING, 7);
final Map<String, Object> map2 = new HashMap<String, Object>();
map2.put(Constants.SERVICE_ID, 1L);
map2.put(Constants.SERVICE_RANKING, 5);
assertEquals(0, OsgiUtil.getComparableForServiceRanking(map1).compareTo(map2));
assertEquals(0, OsgiUtil.getComparableForServiceRanking(map1).compareTo(map1));
assertEquals(0, OsgiUtil.getComparableForServiceRanking(map2).compareTo(map2));
map2.put(Constants.SERVICE_ID, 2L);
assertEquals(1, OsgiUtil.getComparableForServiceRanking(map1).compareTo(map2));
assertEquals(-1, OsgiUtil.getComparableForServiceRanking(map2).compareTo(map1));
map1.put(Constants.SERVICE_RANKING, "hello");
assertEquals(-1, OsgiUtil.getComparableForServiceRanking(map1).compareTo(map2));
assertEquals(1, OsgiUtil.getComparableForServiceRanking(map2).compareTo(map1));
assertEquals(1, OsgiUtil.getComparableForServiceRanking(map2).compareTo(OsgiUtil.getComparableForServiceRanking(map1)));
}
}