Example #1
0
        public void EntityReaderWriter_Roundtrip_None_ThrowsArgumentException()
        {
            var registry = new QueryEngineRegistry(new MockQueryEngineRegistry());

            var def    = new OtherDefinitionEntity(new Uri("io:/1"), Expression.Default(typeof(object)), null);
            var stream = new MemoryStream();

            Write();

            stream.Position = 0;

            Read();

            void Write()
            {
                using var writer = new EntityWriter(stream, new SerializationPolicy(DefaultExpressionPolicy.Instance, Versioning.v1));

                writer.WriteHeader();
                writer.Save(def);
            }

            void Read()
            {
                using var reader = new EntityReader(stream, registry, new SerializationPolicy(DefaultExpressionPolicy.Instance, Versioning.v1));

                reader.ReadHeader();

                AssertEx.ThrowsException <ArgumentException>(() => reader.Load(ReactiveEntityKind.None), ex => Assert.AreEqual("kind", ex.ParamName));
            }
        }
Example #2
0
        public void EntityReaderWriter_Roundtrip_Definitions()
        {
            var registry = new QueryEngineRegistry(new MockQueryEngineRegistry());

            var def    = new OtherDefinitionEntity(new Uri("io:/1"), Expression.Default(typeof(object)), null);
            var stream = new MemoryStream();

            using (var writer = new EntityWriter(stream, new SerializationPolicy(DefaultExpressionPolicy.Instance, Versioning.v1)))
            {
                writer.WriteHeader();
                writer.Save(def);
                writer.Dispose();
            }

            foreach (var kind in new[]
            {
                ReactiveEntityKind.Observable,
                ReactiveEntityKind.Observer,
                ReactiveEntityKind.StreamFactory,
                ReactiveEntityKind.Other,
            })
            {
                stream.Position = 0;
                var rt = default(ReactiveEntity);
                using (var reader = new EntityReader(stream, registry, new SerializationPolicy(DefaultExpressionPolicy.Instance, Versioning.v1)))
                {
                    reader.ReadHeader();
                    rt = reader.Load(kind);
                    reader.ReadFooter();
                }

                Assert.AreEqual(kind, rt.Kind);
                Assert.AreEqual(def.Uri, rt.Uri);
                AssertEqual(def.Expression, rt.Expression);
                Assert.AreEqual(def.State, rt.State);
            }
        }