package org.test4j.json.encoder.single.fixed; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; import org.test4j.json.encoder.EncoderTest; import org.test4j.json.encoder.beans.test.TestedClazz; import org.test4j.json.encoder.beans.test.TestedIntf; import org.test4j.json.encoder.single.fixed.ClazzEncoder; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; @SuppressWarnings("rawtypes") public class ClazzEncoderTest extends EncoderTest { @Test(dataProvider = "clazz_data") public void testClazzEncoder(Class type, String name) { ClazzEncoder encoder = ClazzEncoder.instance; this.setUnmarkFeature(encoder); encoder.encode(type, writer, references); String json = writer.toString(); want.string(json).isEqualTo("'" + name + "'"); } @DataProvider public Object[][] clazz_data() { Object proxy = Proxy.newProxyInstance(this.getClass().getClassLoader(), new Class[] { TestedIntf.class }, new InvocationHandler() { public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { return null; } }); return new Object[][] { { ClazzEncoderTest.class, ClazzEncoderTest.class.getName() },// <br> { new TestedClazz() { }.getClass(), TestedClazz.class.getName() },// <br> { proxy.getClass(), "java.lang.Object" } }; } }