private void Assert(BsonTrie<int> trie, string name) { var subject = new TrieNameDecoder<int>(trie); using (var memoryStream = new MemoryStream()) using (var bsonStream = new BsonStreamAdapter(memoryStream)) { bsonStream.WriteCString(name); bsonStream.WriteInt32(20); bsonStream.Position = 0; var result = subject.Decode(bsonStream, Utf8Encodings.Strict); result.Should().Be(name); } }
public void WriteCString_should_write_expected_bytes_when_size_is_near_tempUtf8_length( [Values(-1, 0, 1)] int delta) { var stream = new MemoryStream(); var subject = new BsonStreamAdapter(stream); var subjectReflector = new Reflector(subject); var size = subjectReflector._tempUtf8.Length + delta; var length = size - 1; var value = new string('a', length); var expectedBytes = Enumerable.Repeat<byte>(97, length).Concat(new byte[] { 0 }).ToArray(); subject.WriteCString(value); stream.ToArray().Should().Equal(expectedBytes); }
public void WriteCString_should_write_expected_bytes(string value, byte[] expectedBytes) { var stream = new MemoryStream(); var subject = new BsonStreamAdapter(stream); subject.WriteCString(value); stream.ToArray().Should().Equal(expectedBytes); }
public void WriteCString_should_throw_when_value_is_null() { var stream = Substitute.For<Stream>(); var subject = new BsonStreamAdapter(stream); Action action = () => subject.WriteCString(null); action.ShouldThrow<ArgumentNullException>().And.ParamName.Should().Be("value"); }
public void WriteCString_should_throw_when_value_contains_null_bytes() { var stream = new MemoryStream(); var subject = new BsonStreamAdapter(stream); var value = "a\0b"; Action action = () => subject.WriteCString(value); action.ShouldThrow<ArgumentException>().And.ParamName.Should().Be("value"); }
public void WriteCString_should_throw_when_subject_is_disposed() { var stream = Substitute.For<Stream>(); var subject = new BsonStreamAdapter(stream); var value = "abc"; subject.Dispose(); Action action = () => subject.WriteCString(value); action.ShouldThrow<ObjectDisposedException>().And.ObjectName.Should().Be("BsonStreamAdapter"); }
public void WriteCString_should_throw_when_value_with_maxByteCount_near_tempUtf8_contains_nulls( [Values(-1, 0, 1)] int delta) { var stream = new MemoryStream(); var subject = new BsonStreamAdapter(stream); var subjectReflector = new Reflector(subject); var valueLength = (subjectReflector._tempUtf8.Length / 3) + delta; var length1 = valueLength / 2; var length2 = valueLength - length1 - 1; var value = new string('x', length1) + '\0' + new string('x', length2); Action action = () => subject.WriteCString(value); action.ShouldThrow<ArgumentException>().And.ParamName.Should().Be("value"); }