예제 #1
0
        public void Serialization_Complex()
        {
            var date = DateTime.UtcNow;

            var arg = new ProgressiveVolumeResponseItem
            {
                Date   = date,
                Volume = new SimpleVolumesResponse
                {
                    Cut  = 10.0,
                    Fill = 20.0,
                    BoundingExtentGrid = new TRex.Geometry.BoundingWorldExtent3D(1.0, 2.0, 3.0, 4.0, 5.0, 6.0),
                    CutArea            = 30.0,
                    FillArea           = 40.0,
                    TotalCoverageArea  = 100.0
                }
            };

            var writer = new TestBinaryWriter();

            arg.ToBinary(writer);

            var cp2 = new ProgressiveVolumeResponseItem();

            cp2.FromBinary(new TestBinaryReader(writer._stream.BaseStream as MemoryStream));

            arg.Should().BeEquivalentTo(cp2);
        }
예제 #2
0
        private static void WriteArrayOneDimension(int rank)
        {
            byte[] _EncodedValue = null;
            using (MemoryStream _stream = new MemoryStream())
                using (TestBinaryWriter _buffer = new TestBinaryWriter(_stream))
                {
                    Assert.IsNotNull(_buffer);
                    Int32[] _value   = new Int32[] { 0, 1, 2, 3, 4 };
                    Variant _variant = new Variant {
                        UATypeInfo = new UATypeInfo(BuiltInType.Int32, rank, new int[] { _value.Length }), Value = _value
                    };
                    _buffer.Write(_buffer, _variant);
                    _buffer.Close();
                    _EncodedValue = _stream.ToArray();
                }
            Assert.IsNotNull(_EncodedValue);
            string _EncodedValueString = String.Join(", ", _EncodedValue);
            string _expectedString     = "134, 5, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0";

            Assert.AreEqual <string>(_expectedString, _EncodedValueString);
            Assert.AreEqual <int>(25, _EncodedValue.Length);
            Assert.AreEqual <int>(0, _EncodedValue[5]);
            Assert.AreEqual <int>(1, _EncodedValue[9]);
            Assert.AreEqual <int>(2, _EncodedValue[13]);
            Assert.AreEqual <int>(3, _EncodedValue[17]);
            Assert.AreEqual <int>(4, _EncodedValue[21]);
        }
예제 #3
0
        public void ArrayMultiDimensionTest()
        {
            byte[] _EncodedValue = null;
            using (MemoryStream _stream = new MemoryStream())
                using (TestBinaryWriter _buffer = new TestBinaryWriter(_stream))
                {
                    Assert.IsNotNull(_buffer);
                    Int32[] _dimensions = new Int32[] { 2, 2 };
                    Int32[,] _array = new Int32[, ] {
                        { 0, 1 }, { 2, 3 }
                    };
                    Assert.AreEqual <int>(2, _array.Rank);
                    Assert.AreEqual <int>(4, _array.Length);
                    Assert.AreEqual <int>(_dimensions.Length, _array.Rank);
                    UATypeInfo _uaTypeInfo = new UATypeInfo(BuiltInType.Int32, _dimensions.Length, _dimensions);
                    Variant    _variant    = new Variant {
                        UATypeInfo = _uaTypeInfo, Value = _array
                    };
                    _buffer.Write(_buffer, _variant);
                    _buffer.Close();
                    _EncodedValue = _stream.ToArray();
                }
            Assert.IsNotNull(_EncodedValue);
            Assert.AreEqual <int>(33, _EncodedValue.Length);
            string _content = String.Join(", ", _EncodedValue);

            Assert.AreEqual <string>("198, 4, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0", _content);
        }
예제 #4
0
        public void Serialization_Complex()
        {
            var arg = new ProgressiveVolumesSubGridsRequestArgument
            {
                Interval                = new TimeSpan(1, 0, 0, 0),
                StartDate               = new DateTime(2020, 1, 1, 1, 1, 1),
                EndDate                 = new DateTime(2020, 1, 1, 1, 1, 1),
                ExternalDescriptor      = Guid.NewGuid(),
                Filters                 = new FilterSet(new CombinedFilter()),
                LiftParams              = new LiftParameters(),
                OriginatingIgniteNodeId = Guid.NewGuid(),
                Overrides               = new OverrideParameters(),
                ProjectID               = Guid.NewGuid()
            };

            var writer = new TestBinaryWriter();

            arg.ToBinary(writer);

            var cp2 = new ProgressiveVolumesSubGridsRequestArgument();

            cp2.FromBinary(new TestBinaryReader(writer._stream.BaseStream as MemoryStream));

            arg.Should().BeEquivalentTo(cp2);
        }
예제 #5
0
        public void Serialization_Complex()
        {
            var arg = new SimpleVolumesRequestArgument
            {
                CutTolerance            = 0.05,
                FillTolerance           = 0.01,
                AdditionalSpatialFilter = new CombinedFilter(),
                ExternalDescriptor      = Guid.NewGuid(),
                Filters    = new FilterSet(new CombinedFilter()),
                LiftParams = new LiftParameters(),
                OriginatingIgniteNodeId = Guid.NewGuid(),
                Overrides  = new OverrideParameters(),
                ProjectID  = Guid.NewGuid(),
                BaseDesign = new DesignOffset(Guid.NewGuid(), 1.23),
                TopDesign  = new DesignOffset(Guid.NewGuid(), 1.33),
                VolumeType = VolumeComputationType.BetweenDesignAndFilter
            };

            var writer = new TestBinaryWriter();

            arg.ToBinary(writer);

            var cp2 = new SimpleVolumesRequestArgument();

            cp2.FromBinary(new TestBinaryReader(writer._stream.BaseStream as MemoryStream));

            arg.Should().BeEquivalentTo(cp2);
        }
예제 #6
0
        static byte[] Write(EntityManager manager, Mode mode)
        {
            if (mode == Mode.Binary)
            {
                using (var writer = new TestBinaryWriter())
                {
                    SerializeUtility.SerializeWorld(manager, writer);
                    return(writer.content.ToArray());
                }
            }
            else
            {
                // Save the World to a memory buffer via a a Stream Writer
                using (var memStream = new MemoryStream())
                    using (var sw = new StreamWriter(memStream))
                    {
                        sw.NewLine = "\n";
                        if (mode == Mode.Yaml)
                        {
                            SerializeUtility.SerializeWorldIntoYAML(manager, sw, false);
                        }
                        else if (mode == Mode.YamlDumpChunk)
                        {
                            SerializeUtility.SerializeWorldIntoYAML(manager, sw, true);
                        }

                        sw.Flush();
                        memStream.Seek(0, SeekOrigin.Begin);
                        return(memStream.ToArray());
                    }
            }
        }
예제 #7
0
        public void UnsupportedClass_Write()
        {
            var    bs     = new BinarizableSerializer();
            var    writer = new TestBinaryWriter();
            Action act    = () => bs.WriteBinary(new object(), writer);

            act.Should().Throw <TRexNonBinarizableException>().WithMessage("Not IBinarizable on WriteBinary: System.Object");
        }
예제 #8
0
        public void Exception_Write()
        {
            var    bs     = new BinarizableSerializer();
            var    writer = new TestBinaryWriter();
            Action act    = () => bs.WriteBinary(new Exception("An Exception"), writer);

            act.Should().Throw <NotImplementedException>();
        }
예제 #9
0
 public void WriteByteStringTest()
 {
     using (var _stream = new MemoryStream())
         using (TestBinaryWriter _buffer = new TestBinaryWriter(_stream))
         {
             _buffer.Write(_buffer, new byte[10]);
             _buffer.Close();
             byte[] _Encoded = _stream.ToArray();
             Assert.AreEqual <int>(14, _Encoded.Length);
         }
 }
예제 #10
0
        public void FromToBinary()
        {
            var cp1    = new BoundingWorldExtent3D(1, 2, 3, 4, 5, 6);
            var writer = new TestBinaryWriter();

            cp1.ToBinary(writer);

            var cp2 = new BoundingWorldExtent3D();

            cp2.FromBinary(new TestBinaryReader(writer._stream.BaseStream as MemoryStream));

            cp1.Should().BeEquivalentTo(cp2);
        }
예제 #11
0
 public void ArrayLengthOutOfRangeTest()
 {
     using (MemoryStream _stream = new MemoryStream())
         using (TestBinaryWriter _buffer = new TestBinaryWriter(_stream))
         {
             Assert.IsNotNull(_buffer);
             Int32[] _value   = new Int32[byte.MaxValue + 1];
             Variant _variant = new Variant {
                 UATypeInfo = new UATypeInfo(BuiltInType.Int32, 1), Value = _value
             };
             _buffer.Write(_buffer, _variant);
         }
 }
예제 #12
0
        public void Test_CellPass_FromToBinary()
        {
            var cp1 = ATestCellPass();

            var writer = new TestBinaryWriter();

            cp1.ToBinary(writer);

            var cp2 = new CellPass();

            cp2.FromBinary(new TestBinaryReader(writer._stream.BaseStream as MemoryStream));

            cp1.Should().BeEquivalentTo(cp2);
        }
예제 #13
0
        public void EmitVersionByte_Binarizable()
        {
            const byte TEST_VERSION = 99;

            var writer = new TestBinaryWriter();

            VersionSerializationHelper.EmitVersionByte(writer, TEST_VERSION);

            var ms = writer._stream.BaseStream as MemoryStream;

            ms.Position = 0;

            ms.ReadByte().Should().Be(TEST_VERSION);
        }
예제 #14
0
        public void FromToBinary()
        {
            var data = DummyFilteredPassData();

            var writer = new TestBinaryWriter();

            data.ToBinary(writer);

            var data2 = new FilteredPassData();

            data2.FromBinary(new TestBinaryReader(writer._stream.BaseStream as MemoryStream));

            data2.Should().BeEquivalentTo(data2);
        }
예제 #15
0
        public void Serialization_Null()
        {
            var arg = new ProgressiveVolumeResponseItem();

            var writer = new TestBinaryWriter();

            arg.ToBinary(writer);

            var cp2 = new ProgressiveVolumeResponseItem();

            cp2.FromBinary(new TestBinaryReader(writer._stream.BaseStream as MemoryStream));

            arg.Should().BeEquivalentTo(cp2);
        }
예제 #16
0
        public void Serialization_Null()
        {
            var arg = new SimpleVolumesRequestArgument();

            var writer = new TestBinaryWriter();

            arg.ToBinary(writer);

            var cp2 = new SimpleVolumesRequestArgument();

            cp2.FromBinary(new TestBinaryReader(writer._stream.BaseStream as MemoryStream));

            arg.Should().BeEquivalentTo(cp2);
        }
예제 #17
0
        private void TestIBinarizableSerializationForItem(object item)
        {
            if (item is IBinarizable)
            {
                // exercise serialize/deserialize of func and argument before invoking function
                var serializer = new BinarizableSerializer();

                var writer = new TestBinaryWriter();
                serializer.WriteBinary(item, writer);

                var newInstance = Activator.CreateInstance(item.GetType());

                serializer.ReadBinary(newInstance, new TestBinaryReader(writer._stream.BaseStream as MemoryStream));
            }
        }
예제 #18
0
        public void CheckVersionByte_Binarizable_Success()
        {
            const byte TEST_VERSION = 99;

            var writer = new TestBinaryWriter();

            VersionSerializationHelper.EmitVersionByte(writer, TEST_VERSION);

            var ms = writer._stream.BaseStream as MemoryStream;

            ms.Position = 0;

            var reader = new TestBinaryReader(ms);

            VersionSerializationHelper.CheckVersionByte(reader, TEST_VERSION);
        }
예제 #19
0
        public void GuidTestMethod()
        {
            byte[] _EncodedGuid = null;
            Guid   _Guid        = Guid.NewGuid();

            using (MemoryStream _stream = new MemoryStream())
                using (TestBinaryWriter _buffer = new TestBinaryWriter(_stream))
                {
                    Assert.IsNotNull(_buffer);
                    _buffer.Write(_Guid);
                    _buffer.Close();
                    _EncodedGuid = _stream.ToArray();
                }
            Assert.IsNotNull(_EncodedGuid);
            Assert.AreEqual <int>(16, _EncodedGuid.Length);
            Guid _recoveredGuid = new Guid(_EncodedGuid);

            Assert.AreEqual <Guid>(_Guid, _recoveredGuid);
        }
예제 #20
0
        public void CheckVersionByte_Binarizable_Failure()
        {
            const byte TEST_VERSION     = 99;
            const byte BAD_TEST_VERSION = 100;

            var writer = new TestBinaryWriter();

            VersionSerializationHelper.EmitVersionByte(writer, BAD_TEST_VERSION);

            var ms = writer._stream.BaseStream as MemoryStream;

            ms.Position = 0;

            var reader = new TestBinaryReader(ms);

            Action act = () => VersionSerializationHelper.CheckVersionByte(reader, TEST_VERSION);

            act.Should().Throw <TRexSerializationVersionException>().WithMessage($"Invalid version read during deserialization: {BAD_TEST_VERSION}, expected version in [{TEST_VERSION}]");
        }
예제 #21
0
 public void VariantDateTimeTestMethod()
 {
     foreach (CommonDefinitions.DateTimeVariantEncoding _dtx in CommonDefinitions.DateTimeTestingValues)
     {
         MemoryStream     _stream = new MemoryStream();
         TestBinaryWriter _buffer = new TestBinaryWriter(_stream);
         Assert.IsNotNull(_buffer);
         Variant _variant = new Variant {
             UATypeInfo = new UATypeInfo(BuiltInType.DateTime), Value = _dtx.dateTime
         };
         _buffer.Write(_buffer, _variant);
         _buffer.Close();
         byte[] _EncodedVariant = _stream.ToArray();
         Assert.IsNotNull(_EncodedVariant);
         Assert.AreEqual <int>(9, _EncodedVariant.Length);
         Assert.AreEqual <byte>((byte)BuiltInType.DateTime, _EncodedVariant[0]);
         CollectionAssert.AreEqual(_dtx.encoding, _EncodedVariant.ToList <byte>());
     }
 }
예제 #22
0
        public void VariantGuidTestMethod()
        {
            byte[] _EncodedVGuid = null;
            using (MemoryStream _stream = new MemoryStream())
                using (TestBinaryWriter _buffer = new TestBinaryWriter(_stream))
                {
                    Assert.IsNotNull(_buffer);
                    Variant _variant = new Variant {
                        UATypeInfo = new UATypeInfo(BuiltInType.Guid), Value = CommonDefinitions.TestGuid
                    };
                    _buffer.Write(_buffer, _variant);
                    _buffer.Close();
                    _EncodedVGuid = _stream.ToArray();
                }
            Assert.IsNotNull(_EncodedVGuid);
            Assert.AreEqual <int>(17, _EncodedVGuid.Length);
            ArraySegment <byte> _segment = new ArraySegment <byte>(_EncodedVGuid, 1, 16);

            Assert.AreEqual <byte>((byte)BuiltInType.Guid, _EncodedVGuid[0]);
            CollectionAssert.AreEqual(CommonDefinitions.TestGuid.ToByteArray(), _segment.ToList <byte>());
        }
예제 #23
0
        public void VariantArrayOfByteStringsTestMethod()
        {
            byte[] _EncodedValue = null;
            using (MemoryStream _stream = new MemoryStream())
                using (TestBinaryWriter _buffer = new TestBinaryWriter(_stream))
                {
                    Assert.IsNotNull(_buffer);
                    Variant _variant = new Variant {
                        UATypeInfo = new UATypeInfo(BuiltInType.ByteString, 1), Value = new byte[][] { new byte[] { 0, 1, 2, 3, 4 }, new byte[] { 5, 6, 7, 8, 9 } }
                    };
                    _buffer.Write(_buffer, _variant);
                    _buffer.Close();
                    _EncodedValue = _stream.ToArray();
                }
            Assert.IsNotNull(_EncodedValue);
            Assert.AreEqual <int>(23, _EncodedValue.Length);
            Assert.AreEqual <byte>((byte)((byte)BuiltInType.ByteString | (byte)VariantEncodingMask.IsArray), _EncodedValue[0]);
            string _content = String.Join(", ", _EncodedValue);

            Assert.AreEqual <string>("143, 2, 0, 0, 0, 5, 0, 0, 0, 0, 1, 2, 3, 4, 5, 0, 0, 0, 5, 6, 7, 8, 9", _content);
        }
예제 #24
0
        public void VariantByteStringTestMethod()
        {
            byte[] _EncodedValue = null;
            using (MemoryStream _stream = new MemoryStream())
                using (TestBinaryWriter _buffer = new TestBinaryWriter(_stream))
                {
                    Assert.IsNotNull(_buffer);
                    Variant _variant = new Variant {
                        UATypeInfo = new UATypeInfo(BuiltInType.ByteString), Value = new byte[] { 0, 1, 2, 3, 4 }
                    };
                    _buffer.Write(_buffer, _variant);
                    _buffer.Close();
                    _EncodedValue = _stream.ToArray();
                }
            Assert.IsNotNull(_EncodedValue);
            Assert.AreEqual <int>(10, _EncodedValue.Length);
            Assert.AreEqual <byte>((byte)BuiltInType.ByteString, _EncodedValue[0]);
            string _content = String.Join(", ", _EncodedValue);

            Assert.AreEqual <string>("15, 5, 0, 0, 0, 0, 1, 2, 3, 4", _content);
        }
예제 #25
0
 public void WriteDataValueTestMethod()
 {
     using (MemoryStream _stream = new MemoryStream())
         using (TestBinaryWriter _buffer = new TestBinaryWriter(_stream))
             _buffer.Write(_buffer, (IDataValue)null);
 }