/** Test method for {@link NullElement#NullElement(String)} . */
  @Test
  public void testNullElement() {
    final NullElement element = new NullElement("foo");

    assertEquals("foo", element.getName());
    assertEquals(ElementType.NULL, element.getType());
  }
  /** Test method for {@link NullElement#withName(String)}. */
  @Test
  public void testWithName() {
    NullElement element = new NullElement("foo");

    element = element.withName("bar");
    assertEquals("bar", element.getName());
    assertEquals(ElementType.NULL, element.getType());
  }
  /** Test method for {@link NullElement#accept(com.allanbank.mongodb.bson.Visitor)} . */
  @Test
  public void testAccept() {
    final NullElement element = new NullElement("foo");

    final Visitor mockVisitor = createMock(Visitor.class);

    mockVisitor.visitNull(eq("foo"));
    expectLastCall();

    replay(mockVisitor);

    element.accept(mockVisitor);

    verify(mockVisitor);
  }
 @Override
 public CreaElement getChild(CreaDocumentFilter... filters) {
   return mChildren
       .stream()
       .filter(i -> Arrays.stream(filters).allMatch(z -> z.accepts(i)))
       .findFirst()
       .orElse(NullElement.getInstance());
 }
  /** Test method for {@link NullElement#compareTo(Element)}. */
  @Test
  public void testCompareTo() {
    final NullElement a = new NullElement("a");
    final NullElement b = new NullElement("b");
    final Element other = new MaxKeyElement("a");

    assertEquals(0, a.compareTo(a));

    assertTrue(a.compareTo(b) < 0);
    assertTrue(b.compareTo(a) > 0);

    assertTrue(a.compareTo(other) < 0);
    assertTrue(other.compareTo(a) > 0);
  }
  /** Test method for {@link NullElement#withName(String)}. */
  @Test
  public void testWithNameWhenSameName() {
    final NullElement element = new NullElement("foo");

    assertSame(element, element.withName("foo"));
  }
  /** Test method for {@link NullElement#getValueAsString()}. */
  @Test
  public void testValueAsString() {
    final NullElement element = new NullElement("foo");

    assertEquals("null", element.getValueAsString());
  }
  /** Test method for {@link NullElement#getValueAsObject()}. */
  @Test
  public void testValueAsObject() {
    final NullElement element = new NullElement("foo");

    assertNull(element.getValueAsObject());
  }
  /** Test method for {@link NullElement#toString()}. */
  @Test
  public void testToString() {
    final NullElement element = new NullElement("foo");

    assertEquals("foo : null", element.toString());
  }