public void WriteRegexPlusContent() { MemoryStream ms = new MemoryStream(); BsonDataWriter writer = new BsonDataWriter(ms); writer.WriteStartObject(); writer.WritePropertyName("regex"); writer.WriteRegex("abc", "i"); writer.WritePropertyName("test"); writer.WriteRegex(string.Empty, null); writer.WriteEndObject(); byte[] expected = HexToBytes("1A-00-00-00-0B-72-65-67-65-78-00-61-62-63-00-69-00-0B-74-65-73-74-00-00-00-00"); CollectionAssert.AreEquivalent(expected, ms.ToArray()); }
private void WriteBson(BsonDataWriter writer, Regex regex) { // Regular expression - The first cstring is the regex pattern, the second // is the regex options string. Options are identified by characters, which // must be stored in alphabetical order. Valid options are 'i' for case // insensitive matching, 'm' for multiline matching, 'x' for verbose mode, // 'l' to make \w, \W, etc. locale dependent, 's' for dotall mode // ('.' matches everything), and 'u' to make \w, \W, etc. match unicode. string options = null; if (HasFlag(regex.Options, RegexOptions.IgnoreCase)) { options += "i"; } if (HasFlag(regex.Options, RegexOptions.Multiline)) { options += "m"; } if (HasFlag(regex.Options, RegexOptions.Singleline)) { options += "s"; } options += "u"; if (HasFlag(regex.Options, RegexOptions.ExplicitCapture)) { options += "x"; } writer.WriteRegex(regex.ToString(), options); }