blob: 31b512a373730675d06e880d87bb5f9ef36d4c44 [file] [log] [blame]
#region License
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Numerics;
using System.Threading.Tasks;
using Gremlin.Net.Process.Traversal;
using Gremlin.Net.Structure;
using Gremlin.Net.Structure.IO.GraphBinary;
using Xunit;
using Path = Gremlin.Net.Structure.Path;
namespace Gremlin.Net.UnitTest.Structure.IO.GraphBinary
{
public class GraphBinaryTests
{
[Fact]
public async Task TestNull()
{
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(null, serializationStream);
serializationStream.Position = 0;
var actual = await reader.ReadAsync(serializationStream);
Assert.Null(actual);
}
[Fact]
public async Task TestInt()
{
const int expected = 100;
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(expected, serializationStream);
serializationStream.Position = 0;
var actual = await reader.ReadAsync(serializationStream);
Assert.Equal(expected, actual);
}
[Theory]
[InlineData(1, new byte[]{0x00, 0x00, 0x00, 0x01})]
[InlineData(257, new byte[]{0x00, 0x00, 0x01, 0x01})]
[InlineData(-1, new byte[]{0xFF, 0xFF, 0xFF, 0xFF})]
[InlineData(-2, new byte[]{0xFF, 0xFF, 0xFF, 0xFE})]
public async Task TestIntSpec(int value, byte[] expected)
{
var writer = CreateGraphBinaryWriter();
var serializationStream = new MemoryStream();
await writer.WriteValueAsync(value, serializationStream, false);
var serBytes = serializationStream.ToArray();
Assert.Equal(expected, serBytes);
}
[Fact]
public async Task TestLong()
{
const long expected = 100;
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(expected, serializationStream);
serializationStream.Position = 0;
var actual = await reader.ReadAsync(serializationStream);
Assert.Equal(expected, actual);
}
[Theory]
[InlineData(100.01f)]
[InlineData(float.NaN)]
[InlineData(float.NegativeInfinity)]
[InlineData(float.PositiveInfinity)]
public async Task TestFloat(float expected)
{
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(expected, serializationStream);
serializationStream.Position = 0;
var actual = await reader.ReadAsync(serializationStream);
Assert.Equal(expected, actual);
}
[Fact]
public async Task TestDouble()
{
const double expected = 100.001;
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(expected, serializationStream);
serializationStream.Position = 0;
var actual = await reader.ReadAsync(serializationStream);
Assert.Equal(expected, actual);
}
[Fact]
public async Task TestShort()
{
const short expected = 100;
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(expected, serializationStream);
serializationStream.Position = 0;
var actual = await reader.ReadAsync(serializationStream);
Assert.Equal(expected, actual);
}
[Fact]
public async Task TestDate()
{
var expected = DateTimeOffset.ParseExact("2016-12-14 16:14:36.295000", "yyyy-MM-dd HH:mm:ss.ffffff",
CultureInfo.InvariantCulture);
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(expected, serializationStream);
serializationStream.Position = 0;
var actual = await reader.ReadAsync(serializationStream);
Assert.Equal(expected, actual);
}
// TODO: Test timestamp, problem: same C# as for date
[Fact]
public async Task TestString()
{
const string expected = "serialize this!";
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(expected, serializationStream);
serializationStream.Position = 0;
var actual = await reader.ReadAsync(serializationStream);
Assert.Equal(expected, actual);
}
[Theory]
[InlineData("serialize this!", "serialize that!", "serialize that!", "stop telling me what to serialize")]
[InlineData(1, 2, 3, 4, 5)]
[InlineData(0.1, 1.1, 2.5, double.NaN)]
[InlineData(0.1f, 1.1f, 2.5f, float.NaN)]
public async Task TestHomogeneousList(params object[] listMembers)
{
var expected = new List<object>(listMembers);
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(expected, serializationStream);
serializationStream.Position = 0;
var actual = await reader.ReadAsync(serializationStream);
Assert.Equal(expected, actual);
}
[Fact]
public async Task TestHomogeneousTypeSafeList()
{
var expected = new List<string> {"test", "123"};
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(expected, serializationStream);
serializationStream.Position = 0;
var actual = await reader.ReadAsync(serializationStream);
Assert.Equal(expected, actual);
}
[Fact]
public async Task TestHeterogeneousList()
{
var expected = new List<object>
{"serialize this!", 0, "serialize that!", "serialize that!", 1, "stop telling me what to serialize", 2};
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(expected, serializationStream);
serializationStream.Position = 0;
var actual = await reader.ReadAsync(serializationStream);
Assert.Equal(expected, actual);
}
[Fact]
public async Task TestArray()
{
var expected = new string[] {"hallo", "welt"};
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(expected, serializationStream);
serializationStream.Position = 0;
var actual = await reader.ReadAsync(serializationStream);
Assert.Equal(expected, actual);
}
[Theory]
[InlineData("serialize this!", "serialize that!", "serialize that!", "stop telling me what to serialize")]
[InlineData(1, 2, 3, 4, 5)]
[InlineData(0.1, 1.1, 2.5, double.NaN)]
[InlineData(0.1f, 1.1f, 2.5f, float.NaN)]
public async Task TestHomogeneousSet(params object[] listMembers)
{
var expected = new HashSet<object>(listMembers);
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(expected, serializationStream);
serializationStream.Position = 0;
var actual = await reader.ReadAsync(serializationStream);
Assert.Equal(expected, actual);
}
[Fact]
public async Task TestHomogeneousTypeSafeSet()
{
var expected = new HashSet<string> {"test", "123"};
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteValueAsync(expected, serializationStream, false);
serializationStream.Position = 0;
var actual = await reader.ReadValueAsync<HashSet<string>>(serializationStream, false);
Assert.Equal(expected, actual);
Assert.Equal(expected.GetType(), actual.GetType());
}
[Fact]
public async Task TestHeterogeneousSet()
{
var expected = new HashSet<object>
{"serialize this!", 0, "serialize that!", "serialize that!", 1, "stop telling me what to serialize", 2};
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(expected, serializationStream);
serializationStream.Position = 0;
var actual = await reader.ReadAsync(serializationStream);
Assert.Equal(expected, actual);
}
[Fact]
public async Task TestDictionary()
{
var expected = new Dictionary<object, object>
{
{"yo", "what"},
{"go", "no!"},
{"number", 123},
{321, "crazy with the number for a key"},
{987, new List<object> {"go", "deep", new Dictionary<object, object> {{"here", "!"}}}}
};
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(expected, serializationStream);
serializationStream.Position = 0;
var actual = await reader.ReadAsync(serializationStream);
Assert.Equal(expected, actual);
}
[Fact]
public async Task TestHomogeneousTypeSafeDictionary()
{
var expected = new Dictionary<string, int>
{
{"number", 123},
{"and", 456},
{"nothing else", 789}
};
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(expected, serializationStream);
serializationStream.Position = 0;
var actual = await reader.ReadAsync(serializationStream);
Assert.Equal(expected, actual);
}
[Fact]
public async Task TestHomogeneousTypeSafeDictionaryWithCorrectTyping()
{
var expected = new Dictionary<string, int>
{
{"number", 123},
{"and", 456},
{"nothing else", 789}
};
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteValueAsync(expected, serializationStream, false);
serializationStream.Position = 0;
var actual = await reader.ReadValueAsync<Dictionary<string, int>>(serializationStream, false);
Assert.Equal(expected, actual);
Assert.Equal(expected.GetType(), actual.GetType());
}
[Fact]
public async Task TestGuid()
{
var expected = Guid.Parse("41d2e28a-20a4-4ab0-b379-d810dede3786");
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(expected, serializationStream);
serializationStream.Position = 0;
var actual = await reader.ReadAsync(serializationStream);
Assert.Equal(expected, actual);
}
[Fact]
public async Task TestGuidSerialization()
{
var toSerialize = Guid.Parse("00112233-4455-6677-8899-aabbccddeeff");
var writer = CreateGraphBinaryWriter();
var serializationStream = new MemoryStream();
await writer.WriteValueAsync(toSerialize, serializationStream, false);
var expected = new byte[]
{0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff};
Assert.Equal(expected, serializationStream.ToArray());
}
[Fact]
public async Task TestVertex()
{
var expected = new Vertex(123, "person");
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(expected, serializationStream);
serializationStream.Position = 0;
var actual = await reader.ReadAsync(serializationStream);
Assert.Equal(expected, actual);
}
[Fact]
public async Task TestVertexWithNullLabel()
{
var expected = new Vertex(123, null);
var writer = CreateGraphBinaryWriter();
var serializationStream = new MemoryStream();
await Assert.ThrowsAsync<IOException>(() => writer.WriteAsync(expected, serializationStream));
}
[Fact]
public async Task TestEdge()
{
var expected = new Edge(123, new Vertex(1, "person"), "developed", new Vertex(10, "software"));
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(expected, serializationStream);
serializationStream.Position = 0;
var actual = await reader.ReadAsync(serializationStream);
Assert.Equal(expected, actual);
}
[Fact]
public async Task TestPath()
{
var expected =
new Path(
new List<ISet<string>>
{new HashSet<string> {"a", "b"}, new HashSet<string> {"c", "d"}, new HashSet<string> {"e"}},
new List<object> {1, 2, 3});
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(expected, serializationStream);
serializationStream.Position = 0;
var actual = await reader.ReadAsync(serializationStream);
Assert.Equal(expected, actual);
}
[Fact]
public async Task TestProperty()
{
var expected = new Property("name", "stephen", null);
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(expected, serializationStream);
serializationStream.Position = 0;
var actual = await reader.ReadAsync(serializationStream);
Assert.Equal(expected, actual);
}
[Fact]
public async Task TestVertexProperty()
{
var expected = new VertexProperty(123, "name", "stephen", null);
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(expected, serializationStream);
serializationStream.Position = 0;
var actual = await reader.ReadAsync(serializationStream);
Assert.Equal(expected, actual);
}
[Fact]
public async Task TestBarrier()
{
var expected = Barrier.NormSack;
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(expected, serializationStream);
serializationStream.Position = 0;
var actual = await reader.ReadAsync(serializationStream);
Assert.Equal(expected, actual);
}
[Fact]
public async Task TestCardinality()
{
var expected = Cardinality.Set;
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(expected, serializationStream);
serializationStream.Position = 0;
var actual = await reader.ReadAsync(serializationStream);
Assert.Equal(expected, actual);
}
[Fact]
public async Task TestColumn()
{
var expected = Column.Values;
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(expected, serializationStream);
serializationStream.Position = 0;
var actual = await reader.ReadAsync(serializationStream);
Assert.Equal(expected, actual);
}
[Fact]
public async Task TestDirection()
{
var expected = Direction.Out;
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(expected, serializationStream);
serializationStream.Position = 0;
var actual = await reader.ReadAsync(serializationStream);
Assert.Equal(expected, actual);
}
[Fact]
public async Task TestMerge()
{
var expected = Merge.OnCreate;
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(expected, serializationStream);
serializationStream.Position = 0;
var actual = await reader.ReadAsync(serializationStream);
Assert.Equal(expected, actual);
}
[Fact]
public async Task TestOperator()
{
var expected = Operator.Min;
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(expected, serializationStream);
serializationStream.Position = 0;
var actual = await reader.ReadAsync(serializationStream);
Assert.Equal(expected, actual);
}
[Fact]
public async Task TestOrder()
{
var expected = Order.Shuffle;
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(expected, serializationStream);
serializationStream.Position = 0;
var actual = await reader.ReadAsync(serializationStream);
Assert.Equal(expected, actual);
}
[Fact]
public async Task TestPick()
{
var expected = Pick.None;
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(expected, serializationStream);
serializationStream.Position = 0;
var actual = await reader.ReadAsync(serializationStream);
Assert.Equal(expected, actual);
}
[Fact]
public async Task TestPop()
{
var expected = Pop.All;
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(expected, serializationStream);
serializationStream.Position = 0;
var actual = await reader.ReadAsync(serializationStream);
Assert.Equal(expected, actual);
}
[Fact]
public async Task TestScope()
{
var expected = Scope.Local;
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(expected, serializationStream);
serializationStream.Position = 0;
var actual = await reader.ReadAsync(serializationStream);
Assert.Equal(expected, actual);
}
[Fact]
public async Task TestT()
{
var expected = T.Label;
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(expected, serializationStream);
serializationStream.Position = 0;
var actual = await reader.ReadAsync(serializationStream);
Assert.Equal(expected, actual);
}
[Fact]
public async Task TestBinding()
{
var expected = new Binding("name", "marko");
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(expected, serializationStream);
serializationStream.Position = 0;
var actual = await reader.ReadAsync(serializationStream);
Assert.Equal(expected, actual);
}
[Fact]
public async Task TestBytecode()
{
var expected = new Bytecode();
expected.SourceInstructions.Add(new Instruction("withStrategies", "SubgraphStrategy"));
expected.StepInstructions.Add(new Instruction("V", 1, 2, 3));
expected.StepInstructions.Add(new Instruction("out"));
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(expected, serializationStream);
serializationStream.Position = 0;
var actual = (Bytecode) await reader.ReadAsync(serializationStream);
Assert.Equal(expected.SourceInstructions, actual.SourceInstructions);
Assert.Equal(expected.StepInstructions, actual.StepInstructions);
}
[Theory]
[InlineData(1)]
[InlineData(123)]
public async Task TestByte(byte expected)
{
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(expected, serializationStream);
serializationStream.Position = 0;
var actual = await reader.ReadAsync(serializationStream);
Assert.Equal(expected, actual);
}
[Fact]
public async Task TestByteBuffer()
{
var expected = new byte[] {1, 2, 3};
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(expected, serializationStream);
serializationStream.Position = 0;
var actual = await reader.ReadAsync(serializationStream);
Assert.Equal(expected, actual);
}
[Theory]
[InlineData(true)]
[InlineData(false)]
public async Task TestBoolean(bool expected)
{
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(expected, serializationStream);
serializationStream.Position = 0;
var actual = await reader.ReadAsync(serializationStream);
Assert.Equal(expected, actual);
}
[Theory]
[InlineData('a')]
[InlineData('0')]
[InlineData('¢')]
[InlineData('€')]
public async Task TestChar(char expected)
{
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(expected, serializationStream);
serializationStream.Position = 0;
var actual = await reader.ReadAsync(serializationStream);
Assert.Equal(expected, actual);
}
[Fact]
public async Task TestDuration()
{
var expected = new TimeSpan(1, 2, 3, 4, 5);
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(expected, serializationStream);
serializationStream.Position = 0;
var actual = await reader.ReadAsync(serializationStream);
Assert.Equal(expected, actual);
}
[Fact]
public async Task TestBigInteger()
{
var expected = BigInteger.Parse("123456789987654321123456789987654321");
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(expected, serializationStream);
serializationStream.Position = 0;
var actual = await reader.ReadAsync(serializationStream);
Assert.Equal(expected, actual);
}
[Theory]
[InlineData("190.035")]
[InlineData("0.19")]
[InlineData("1900")]
[InlineData("-1900")]
[InlineData("100000000000000")]
[InlineData("100000000000000000000000000")]
public async Task TestBigDecimal(string decimalValue)
{
var expected = Decimal.Parse(decimalValue);
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(expected, serializationStream);
serializationStream.Position = 0;
var actual = await reader.ReadAsync(serializationStream);
Assert.Equal(expected, actual);
}
[Fact]
public async Task TestLambda()
{
var expected = Lambda.Groovy("some expression");
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(expected, serializationStream);
serializationStream.Position = 0;
var actual = (StringBasedLambda) await reader.ReadAsync(serializationStream);
Assert.Equal(expected.Language, actual.Language);
Assert.Equal(expected.LambdaExpression, actual.LambdaExpression);
Assert.Equal(expected.Arguments, actual.Arguments);
}
[Fact]
public async Task TestPBetween()
{
var expected = P.Between(1, 2);
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(expected, serializationStream);
serializationStream.Position = 0;
var actual = (P) await reader.ReadAsync(serializationStream);
Assert.Equal(expected.OperatorName, actual.OperatorName);
Assert.Equal(expected.Other, actual.Other);
Assert.Equal(expected.Value, actual.Value);
}
[Fact]
public async Task TestPGt()
{
var expected = P.Gt(5);
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(expected, serializationStream);
serializationStream.Position = 0;
var actual = (P) await reader.ReadAsync(serializationStream);
Assert.Equal(expected.OperatorName, actual.OperatorName);
Assert.Equal(expected.Other, actual.Other);
Assert.Equal(expected.Value, actual.Value);
}
[Fact]
public async Task TestPAnd()
{
var expected = P.Not(P.Lte(10).And(P.Not(P.Between(11, 20)))).And(P.Lt(29).Or(P.Eq(35)));
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(expected, serializationStream);
serializationStream.Position = 0;
var actual = (P) await reader.ReadAsync(serializationStream);
Assert.Equal(expected.ToString(), actual.ToString());
}
[Fact]
public async Task TestTextP()
{
var expected = TextP.Containing("o");
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(expected, serializationStream);
serializationStream.Position = 0;
var actual = (TextP) await reader.ReadAsync(serializationStream);
Assert.Equal(expected.OperatorName, actual.OperatorName);
Assert.Equal(expected.Other, actual.Other);
Assert.Equal(expected.Value, actual.Value);
}
[Fact]
public async Task TestTraverser()
{
var expected = new Traverser("test", 3);
var writer = CreateGraphBinaryWriter();
var reader = CreateGraphBinaryReader();
var serializationStream = new MemoryStream();
await writer.WriteAsync(expected, serializationStream);
serializationStream.Position = 0;
var actual = (Traverser) await reader.ReadAsync(serializationStream);
Assert.Equal(expected.Object, actual.Object);
Assert.Equal(expected.Bulk, actual.Bulk);
}
private static GraphBinaryWriter CreateGraphBinaryWriter()
{
return new GraphBinaryWriter();
}
private static GraphBinaryReader CreateGraphBinaryReader()
{
return new GraphBinaryReader();
}
}
}