package org.jolokia.converter.json;
import java.lang.reflect.InvocationTargetException;
import java.util.Stack;
import javax.management.AttributeNotFoundException;
import org.jolokia.converter.object.StringToObjectConverter;
import org.testng.annotations.*;
import static org.testng.Assert.*;
/**
* @author roland
* @since 21.02.13
*/
public class EnumExtractorTest {
private EnumExtractor enumExtractor;
private ObjectToJsonConverter converter;
@BeforeMethod
public void setup() {
enumExtractor = new EnumExtractor();
converter = new ObjectToJsonConverter(new StringToObjectConverter(), null);
converter.setupContext();
}
@AfterMethod
public void tearDown() throws Exception {
converter.clearContext();
}
@Test
public void basics() {
assertEquals(enumExtractor.getType(), Enum.class);
assertFalse(enumExtractor.canSetValue());
}
@Test
public void jsonExtract() throws AttributeNotFoundException {
Stack stack = new Stack();
assertEquals(enumExtractor.extractObject(converter, TestEnum.EINS,stack,true),"EINS");
stack.add("EINS");
assertEquals(enumExtractor.extractObject(converter, TestEnum.EINS,stack,true),"EINS");
}
@Test(expectedExceptions = AttributeNotFoundException.class)
public void jsonExtractWithWrongPath() throws AttributeNotFoundException {
Stack stack = new Stack();
stack.add("ZWEI");
enumExtractor.extractObject(converter, TestEnum.EINS,stack,true);
}
@Test
public void plainExtract() throws AttributeNotFoundException {
Stack stack = new Stack();
Object result = enumExtractor.extractObject(converter, TestEnum.EINS,stack,false);
assertEquals(result,TestEnum.EINS);
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void setValue() throws InvocationTargetException, IllegalAccessException {
enumExtractor.setObjectValue(null,null,null,null);
}
private static enum TestEnum {
EINS,
ZWEI;
}
}