private static int GetLengthForStringDataNode(StringDataNode stringDataNode) { FieldInfo field = typeof(StringDataNode) .GetField("length", BindingFlags.NonPublic | BindingFlags.Instance); return((byte)field.GetValue(stringDataNode)); }
public void Test_Getting_Edges() { IDataNode dataNode = new StringDataNode(); dataNode.Edges .Should() .BeEmpty(); }
public void Test_Writing_A_Null_String() { IDataNode dataNode = new StringDataNode(); Action action = () => dataNode.Write(binaryWriter, null); action.Should() .ThrowArgumentNullException("value"); }
public void Test_Reading_A_String_From_A_Null_Reader() { IDataNode dataNode = new StringDataNode(); Action action = () => dataNode.Read(null); action.Should() .ThrowArgumentNullException("binaryReader"); }
public void Test_Writing_A_String_To_A_Null_BinaryWriter() { IDataNode dataNode = new StringDataNode(); Action action = () => dataNode.Write(null, string.Empty); action.Should() .ThrowArgumentNullException("binaryWriter"); }
public void Test_Writing_A_Non_String_Object() { IDataNode dataNode = new StringDataNode(); int value = 1; Action action = () => dataNode.Write(binaryWriter, value); action.Should() .ThrowExactly <ArgumentException>() .WithMessage($"Cannot write value of type {value.GetType().Name} as a string."); }
public void Test_Writing_An_Offline_String_With_Invalid_Length() { IDataNode dataNode = new StringDataNode(); string value = new string('a', StringDataNode.OFFSET_STRING_MAX_LENGTH + 1); Action action = () => dataNode.Write(binaryWriter, value); action.Should() .ThrowExactly <ArgumentException>() .WithMessage($"String length is longer than {StringDataNode.OFFSET_STRING_MAX_LENGTH}."); }
public void Test_Writing_An_Inline_String_Longer_Than_The_Fixed_Size() { byte length = 20; IDataNode dataNode = new StringDataNode(length); string value = new string('a', length + 1); Action action = () => dataNode.Write(binaryWriter, value); action.Should() .ThrowExactly <ArgumentException>() .WithMessage($"String length is longer than {length}."); }
public void VerifyTree(IDataNode dataNode) { dataNode.Should().BeOfType <UserTypeDataNode <ClassWithStringInline> >(); dataNode.Edges.Should().HaveCount(1); VerifyEdge(dataNode.Edges[0], this, v => v.Value); StringDataNode stringDataNode = dataNode.Edges[0].ChildNode.Should().BeOfType <StringDataNode>() .Subject; GetLengthForStringDataNode(stringDataNode).Should().Be(LENGTH); }
public void Test_Writing_An_Inline_String_Of_Exactly_The_Fixed_Size() { byte length = 20; IDataNode dataNode = new StringDataNode(length); string value = new string('b', length); dataNode.Write(binaryWriter, value); Received.InOrder(() => { binaryWriter.WriteBytes(Matcher.ForEquivalentArray(Encoding.ASCII.GetBytes(value))); }); }
public void VerifyTree(IDataNode dataNode) { dataNode.Should().BeOfType <UserTypeDataNode <ClassWithStringAtOffset> >(); dataNode.Edges.Should().HaveCount(1); VerifyEdge(dataNode.Edges[0], this, v => v.Value); StringDataNode stringDataNode = dataNode.Edges[0].ChildNode.Should().BeOfType <OffsetNode>() .Subject.ChildNode.Should().BeOfType <StringDataNode>() .Subject; GetLengthForStringDataNode(stringDataNode).Should().Be(StringDataNode.OFFSET_STRING_MAX_LENGTH); }
public void Test_Reading_An_Inline_String_Of_Exactly_The_Fixed_Size() { byte length = 20; IDataNode dataNode = new StringDataNode(length); string value = new string('d', length); binaryReader.ReadBytes(length).Returns(Encoding.ASCII.GetBytes(value)); object result = dataNode.Read(binaryReader); result.Should().Be(value); binaryReader.Received().ReadBytes(length); }
public void Test_Writing_An_Offline_String() { IDataNode dataNode = new StringDataNode(); string value = "my value"; dataNode.Write(binaryWriter, value); Received.InOrder(() => { binaryWriter.WriteByte((byte)value.Length); binaryWriter.WriteBytes(Matcher.ForEquivalentArray(Encoding.ASCII.GetBytes(value))); binaryWriter.WriteByte(0); }); }
public void Test_Reading_An_Inline_String_Of_Not_Exactly_The_Fixed_Size() { byte length = 20; IDataNode dataNode = new StringDataNode(length); string value = new string('c', length / 2); byte[] bytes = new byte[length]; Array.Copy(Encoding.ASCII.GetBytes(value), bytes, value.Length); binaryReader.ReadBytes(length).Returns(bytes); object result = dataNode.Read(binaryReader); result.Should().Be(value); binaryReader.Received().ReadBytes(length); }
public void Test_Reading_An_Offline_String() { IDataNode dataNode = new StringDataNode(); string value = "value"; binaryReader.ReadByte().Returns((byte)value.Length, (byte)0); binaryReader.ReadBytes(value.Length).Returns(Encoding.ASCII.GetBytes(value)); object result = dataNode.Read(binaryReader); result.Should().Be(value); Received.InOrder(() => { binaryReader.ReadByte(); binaryReader.ReadBytes(value.Length); binaryReader.ReadByte(); }); }