Java tutorial
package org.jolokia.converter.json; /* * Copyright 2009-2011 Roland Huss * * 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. */ import java.lang.reflect.InvocationTargetException; import javax.management.AttributeNotFoundException; import javax.management.ObjectName; import org.json.simple.JSONArray; import org.testng.annotations.Test; import static org.testng.Assert.*; /** * @author roland * @since 12.09.11 */ public class ArrayExtractorTest extends AbstractExtractorTest { @Test public void simple() throws AttributeNotFoundException { JSONArray res = (JSONArray) extractJson(new String[] { "eins", "zwei", "drei" }); assertEquals(res.size(), 3); assertTrue(res.contains("eins")); assertTrue(res.contains("zwei")); assertTrue(res.contains("drei")); } @Test public void basics() { assertNull(extractor.getType()); assertTrue(extractor.canSetValue()); } @Test public void withPath() throws AttributeNotFoundException { String res = (String) extractJson(new String[] { "eins", "zwei", "drei" }, "1"); assertEquals(res, "zwei"); } @Test(expectedExceptions = ValueFaultHandler.AttributeFilteredException.class) public void testWithNonNumericPath() throws Exception { String res = (String) extractJson(new String[] { "eins", "zwei", "drei" }, "blub"); } @Test(expectedExceptions = ValueFaultHandler.AttributeFilteredException.class) public void testOutOfBoundsPath() throws Exception { String res = (String) extractJson(new String[] { "eins", "zwei", "drei" }, "4"); } @Test public void testWithWildcardPath() throws Exception { ObjectName[] names = { new ObjectName("test:type=blub"), null, new ObjectName("java.lang:type=Memory") }; JSONArray result = (JSONArray) extractJson(names, null, "domain"); assertEquals(result.size(), 2); assertEquals(result.get(0), "test"); assertEquals(result.get(1), "java.lang"); } @Test(expectedExceptions = ValueFaultHandler.AttributeFilteredException.class) public void testWithInvalidWildcardPath() throws Exception { ObjectName[] names = { new ObjectName("test:type=blub"), null, new ObjectName("java.lang:type=Memory") }; extractJson(names, null, "NotInMyHouse"); } @Test public void direct() throws AttributeNotFoundException { int res = (Integer) extractObject(new Integer[] { 1, 2, 3 }, "2"); assertEquals(res, 3); Integer[] res2 = (Integer[]) extractObject(new Integer[] { 1, 2, 3 }); assertEquals(res2.length, 3); assertEquals((int) res2[0], 1); assertEquals((int) res2[1], 2); assertEquals((int) res2[2], 3); } @Test public void setValue() throws InvocationTargetException, IllegalAccessException { Boolean inner[] = new Boolean[] { true, false, true }; setObject(inner, "1", true); for (Boolean b : inner) { assertTrue(b); } } @Test(expectedExceptions = IllegalArgumentException.class, expectedExceptionsMessageRegExp = ".*array.*") public void notAnArray() throws InvocationTargetException, IllegalAccessException { setObject("no array", "1", "blub"); } @Test(expectedExceptions = IllegalArgumentException.class, expectedExceptionsMessageRegExp = ".*bla.*") public void notAnIndex() throws InvocationTargetException, IllegalAccessException { setObject(new Boolean[] { true, false, true }, "bla", true); } @Override Extractor createExtractor() { return new ArrayExtractor(); } }