///|
/// Parse an RFC 4515 filter, encode it to BER, decode it back and confirm
/// the round trip is lossless.
fn main {
  let filter = "(&(cn=Jo*)(|(uid=1)(mail=*@x)))"
  let parsed = @moonldap.parse_filter(filter).unwrap()
  println("input:   \{filter}")
  println("parsed:  \{parsed.to_string()}")
  let bytes = @moonldap.encode_filter(parsed)
  println("ber:     \{@moonldap.to_hex_upper(bytes[:])}")
  let decoded = @moonldap.decode_filter(bytes, None).unwrap()
  let equal = decoded == parsed
  println("roundtrip: \{equal}")
  if !equal {
    abort("filter round trip failed")
  }
}