@Test
  public void basic() throws IOException {
    final Object[] tst = new Object[] {"test1", "test2"};

    context.checking(
        new Expectations() {
          {
            oneOf(node).getProperty("test");
            will(returnValue(tst));
            oneOf(model).pushNode("test", -1);
            will(returnValue(node));
            oneOf(model).pushNode("0", 0);
            will(returnValue(node));
            oneOf(template).render(model);
            oneOf(model).popNode();
            oneOf(model).pushNode("1", 1);
            will(returnValue(node));
            oneOf(template).render(model);
            oneOf(model).popNode();
            oneOf(model).popNode();
          }
        });

    element = new ArrayElement(property.getName(), template);
    element.render(model);
    context.assertIsSatisfied();
  }
  @Test
  public void nullArrayNoShow() throws IOException {
    context.checking(
        new Expectations() {
          {
            oneOf(node).getProperty("test");
            will(returnValue(null));
          }
        });

    element = new ArrayElement(property.getName(), template);
    element.render(model);
    context.assertIsSatisfied();
  }
  @Test(expected = ClassCastException.class)
  public void invalidArray() throws IOException {
    final String tst = "not an array";

    context.checking(
        new Expectations() {
          {
            oneOf(node).getProperty("test");
            will(returnValue(tst));
          }
        });

    element = new ArrayElement(property.getName(), template);
    element.render(model);
    context.assertIsSatisfied();
  }
  @Test
  public void nullArray() throws IOException {
    context.checking(
        new Expectations() {
          {
            oneOf(node).getProperty("test");
            will(returnValue(null));
            oneOf(model).pushNode("test", -1);
            will(returnValue(node));
            oneOf(model).pushNode("0", 0);
            will(returnValue(node));
            oneOf(template).render(model);
            oneOf(model).popNode();
            oneOf(model).popNode();
          }
        });

    element = new ArrayElement(property.getName(), template);
    element.setShowIfNull(true);
    element.render(model);
    context.assertIsSatisfied();
  }