@Test
  public void testCastingToBoolean() {
    assertEquals(true, ValueType.BOOLEAN.cast(true));
    assertEquals(false, ValueType.BOOLEAN.cast(false));
    
    try {
      ValueType.BOOLEAN.cast(null);
      fail();
    } catch(ClassCastException e) {
      // empty block
    }
    
    try {
      ValueType.BOOLEAN.cast((byte) 1);
      fail();
    } catch(ClassCastException e) {
      // empty block
    }
    
    try {
      ValueType.BOOLEAN.cast('a');
      fail();
    } catch(ClassCastException e) {
      // empty block
    }
    
    try {
      ValueType.BOOLEAN.cast(1.0);
      fail();
    } catch(ClassCastException e) {
      // empty block
    }
    
    try {
      ValueType.BOOLEAN.cast(1.0f);
      fail();
    } catch(ClassCastException e) {
      // empty block
    }
    
    try {
      ValueType.BOOLEAN.cast(1);
      fail();
    } catch(ClassCastException e) {
      // empty block
    }
    
    try {
      ValueType.BOOLEAN.cast(1L);
      fail();
    } catch(ClassCastException e) {
      // empty block
    }
    
    try {
      ValueType.BOOLEAN.cast((short) 1);
      fail();
    } catch(ClassCastException e) {
      // empty block
    }
    
    try {
      ValueType.BOOLEAN.cast(new Object());
      fail();
    } catch(ClassCastException e) {
      // empty block
    }
  }