{
try
{
Exception exc = null;
ArrayTemplate arrayTemplateBad = templateClass.newInstance();
DataList badDataList = new DataList();
ArrayTemplate badWrappedArrayTemplate = DataTemplateUtil.wrap(badDataList, schema, templateClass);
List<E> badIn = (List<E>) badInput;
// add(E element)
for (E o : badIn)
{
try
{
exc = null;
arrayTemplateBad.add(o);
}
catch (Exception e)
{
exc = e;
}
assertTrue(exc != null);
assertTrue(o == null || exc instanceof ClassCastException);
assertTrue(o != null || exc instanceof NullPointerException);
}
// add(int index, E element)
for (Object o : badIn)
{
try
{
exc = null;
arrayTemplateBad.add(0, (E) o);
}
catch (Exception e)
{
exc = e;
}
assertTrue(exc != null);
assertTrue(o == null || exc instanceof ClassCastException);
assertTrue(o != null || exc instanceof NullPointerException);
}
// addAll(Collection<E> c)
try
{
exc = null;
arrayTemplateBad.addAll(badIn);
}
catch (Exception e)
{
exc = e;
}
assertTrue(exc != null);
assertTrue(exc instanceof ClassCastException);
// set(int index, E element)
arrayTemplateBad.addAll(good);
assertTrue(arrayTemplateBad.size() > 1);
for (Object o : badIn)
{
try
{
exc = null;
arrayTemplateBad.set(0, (E) o);
}
catch (Exception e)
{
exc = e;
}
assertTrue(exc != null);
assertTrue(o == null || exc instanceof ClassCastException);
assertTrue(o != null || exc instanceof NullPointerException);
}
// listIterator add
for (Object o : badIn)
{
try
{
exc = null;
ListIterator<E> it = arrayTemplateBad.listIterator(0);
it.add((E) o);
}
catch (Exception e)
{
exc = e;
}
assertTrue(exc != null);
assertTrue(o == null || exc instanceof ClassCastException);
assertTrue(o != null || exc instanceof NullPointerException);
}
// listIterator set
for (Object o : badIn)
{
try
{
exc = null;
ListIterator<E> it = arrayTemplateBad.listIterator(0);
it.next();
it.set((E) o);
}
catch (Exception e)
{
exc = e;
}
assertTrue(exc != null);
assertTrue(o == null || exc instanceof ClassCastException);
assertTrue(o != null || exc instanceof NullPointerException);
}
badDataList.clear();
badDataList.addAll(badOutput);
badWrappedArrayTemplate = DataTemplateUtil.wrap(badDataList, schema, templateClass);
// Get returns bad
for (int i = 0; i < badWrappedArrayTemplate.size(); ++i)
{
try
{
exc = null;
badWrappedArrayTemplate.get(i);
}
catch (Exception e)
{
exc = e;
}
assertTrue(exc != null);
assertTrue(exc instanceof TemplateOutputCastException);
}
// Set returns bad
badDataList.clear();
badDataList.addAll(badOutput);
assertEquals(badWrappedArrayTemplate.size(), badOutput.size());
for (int i = 0; i < badWrappedArrayTemplate.size(); ++i)
{
try
{
exc = null;
badWrappedArrayTemplate.set(i, good.get(0));
}
catch (Exception e)
{
exc = e;
}
assertTrue(exc != null);
assertTrue(exc instanceof TemplateOutputCastException);
}
// Remove returns bad
badDataList.clear();
badDataList.addAll(badOutput);
assertEquals(badWrappedArrayTemplate.size(), badOutput.size());
for (int i = 0; i < badWrappedArrayTemplate.size(); ++i)
{
try
{
exc = null;
badWrappedArrayTemplate.remove(0);
}
catch (Exception e)
{
exc = e;
}
assertTrue(exc != null);
assertTrue(exc instanceof TemplateOutputCastException);
}
// Iterator returns bad
for (Object o : badOutput)
{
badDataList.clear();
badDataList.add(o);
try
{
exc = null;
badWrappedArrayTemplate.iterator().next();
}
catch (Exception e)
{
exc = e;
}
assertTrue(exc != null);
assertTrue(exc instanceof TemplateOutputCastException);
}
// ListIterator returns bad
for (Object o : badOutput)
{
badDataList.clear();
badDataList.add(o);
try
{
exc = null;
badWrappedArrayTemplate.listIterator().next();
}
catch (Exception e)
{
exc = e;
}
assertTrue(exc != null);
assertTrue(exc instanceof TemplateOutputCastException);
}
for (Object o : badOutput)
{
badDataList.clear();
badDataList.add(o);
try
{
exc = null;
badWrappedArrayTemplate.listIterator(badWrappedArrayTemplate.size()).previous();
}