Beispiel #1
0
        public async void should_correctly_encrypt_save_then_reload()
        {
            var filename = "encrypted_save.bin";

            Console.WriteLine("{0}/{1}", Environment.CurrentDirectory, filename);

            var serializer          = new JsonSerializer();
            var deserializer        = new JsonDeserializer();
            var encryptor           = new AesEncryptor("dummy-password-123");
            var encryptionProcessor = new EncryptDataProcessor(encryptor);
            var decryptionProcessor = new DecryptDataProcessor(encryptor);
            var fileEndpoint        = new FileEndpoint(filename);

            var dummyData       = GameData.CreateRandom();
            var output          = serializer.Serialize(dummyData);
            var encryptedOutput = await encryptionProcessor.Process(output);

            await fileEndpoint.Send(encryptedOutput);

            var data = await fileEndpoint.Receive();

            var decryptedData = await decryptionProcessor.Process(data);

            var outputModel = deserializer.Deserialize <GameData>(decryptedData);

            Assert.AreEqual(dummyData, outputModel);
        }
Beispiel #2
0
        public async void should_correctly_do_a_full_send_then_receive_in_single_pipeline()
        {
            var filename = "example_save.json";

            _testOutputHelper.WriteLine("{0}/{1}", Environment.CurrentDirectory, filename);

            var serializer          = new JsonSerializer();
            var deserializer        = new JsonDeserializer();
            var memoryEndpoint      = new InMemoryEndpoint();
            var encryptor           = new AesEncryptor("some-password");
            var encryptionProcessor = new EncryptDataProcessor(encryptor);
            var decryptionProcessor = new DecryptDataProcessor(encryptor);

            var saveToBinaryFilePipeline = new PipelineBuilder()
                                           .StartFromInput()
                                           .SerializeWith(serializer)
                                           .ProcessWith(encryptionProcessor)
                                           .ThenSendTo(memoryEndpoint)
                                           .ThenReceiveFrom(memoryEndpoint)
                                           .ProcessWith(decryptionProcessor)
                                           .DeserializeWith <GameData>(deserializer)
                                           .Build();

            var dummyData   = GameData.CreateRandom();
            var outputModel = await saveToBinaryFilePipeline.Execute(dummyData);

            Assert.AreEqual(dummyData, outputModel);
        }
Beispiel #3
0
        public async void should_correctly_error_if_trying_to_make_object_fork_from_data()
        {
            var dummyPipeline = new PipelineBuilder()
                                .StartFrom(new InMemoryEndpoint())
                                .Build();

            Assert.Throws <ArgumentException>(() => new PipelineBuilder().ForkObjectFrom(dummyPipeline));
        }
Beispiel #4
0
        public async void should_correctly_error_if_trying_to_make_data_fork_from_object()
        {
            var dummyPipeline = new PipelineBuilder()
                                .StartFromInput()
                                .ThenInvoke(x => Task.FromResult((object)"hello"))
                                .Build();

            Assert.Throws <ArgumentException>(() => new PipelineBuilder().ForkDataFrom(dummyPipeline));
        }
Beispiel #5
0
        public async void should_stop_wiretap_correctly()
        {
            var dummyPipeline = new PipelineBuilder()
                                .StartFrom(x => Task.FromResult((object)"hello"))
                                .ThenInvoke(x => Task.FromResult((object)"there"))
                                .Build()
                                .AsWireTappable();

            Action <object, object> action = (x, y) => { Assert.True(false); };

            dummyPipeline.StartWiretap(1, action);
            dummyPipeline.StartWiretap(2, action);

            dummyPipeline.StopWiretap(1, action);
            dummyPipeline.StopWiretap(2, action);

            dummyPipeline.Execute();
        }
Beispiel #6
0
        public async void should_correctly_save_and_load_file()
        {
            var filename = "example_save.bin";

            Console.WriteLine("{0}/{1}", Environment.CurrentDirectory, filename);

            var fileEndpoint = new FileEndpoint(filename);
            var serializer   = new JsonSerializer();
            var deserializer = new JsonDeserializer();

            var dummyData = GameData.CreateRandom();
            var output    = serializer.Serialize(dummyData);

            await fileEndpoint.Send(output);

            var content = await fileEndpoint.Receive();

            var deserializedDummyData = deserializer.Deserialize <GameData>(content);

            Assert.Equal(dummyData, deserializedDummyData);
        }
Beispiel #7
0
        public async void should_correctly_fork_stream_for_object_with_builder()
        {
            var expectedString = "hello there some new pipeline";
            var data           = "hello";
            var dummyPipeline  = new PipelineBuilder()
                                 .StartFromInput()
                                 .ThenInvoke(x => Task.FromResult((object)(x + " there")))
                                 .ThenInvoke(x => Task.FromResult((object)(x + " some")))
                                 .ThenInvoke(x => Task.FromResult((object)(x + " old")))
                                 .ThenInvoke(x => Task.FromResult((object)(x + " pipeline")))
                                 .Build();

            var forkedPipeline = new PipelineBuilder()
                                 .ForkObjectFrom(dummyPipeline, 2)
                                 .ThenInvoke(x => Task.FromResult((object)(x + " new")))
                                 .ThenInvoke(x => Task.FromResult((object)(x + " pipeline")))
                                 .Build();

            var actualOutput = await forkedPipeline.Execute(data);

            Assert.Equal(expectedString, actualOutput);
        }
Beispiel #8
0
        public async void should_unsubscribe_wiretap_correctly()
        {
            var dummyPipeline = new PipelineBuilder()
                                .StartFrom(x => Task.FromResult((object)"hello"))
                                .ThenInvoke(x => Task.FromResult((object)"there"))
                                .Build()
                                .AsWireTappable();

            var sub1 = dummyPipeline.StartWiretap(1, (x, y) =>
            {
                Assert.True(false);
            });
            var sub2 = dummyPipeline.StartWiretap(2, (x, y) =>
            {
                Assert.True(false);
            });

            sub1.Unsubscribe();
            sub2.Unsubscribe();

            dummyPipeline.Execute();
        }
Beispiel #9
0
        public async void should_wiretap_correctly()
        {
            var dummyPipeline = new PipelineBuilder()
                                .StartFrom(x => Task.FromResult((object)"hello"))
                                .ThenInvoke(x => Task.FromResult((object)"there"))
                                .Build()
                                .AsWireTappable();

            var ranCount = 0;

            dummyPipeline.StartWiretap(1, (x, y) =>
            {
                Assert.Equal("hello", x);
                ranCount++;
            });
            dummyPipeline.StartWiretap(2, (x, y) =>
            {
                Assert.Equal("there", x);
                ranCount++;
            });

            dummyPipeline.Execute();
            Assert.Equal(2, ranCount);
        }
Beispiel #10
0
        public async void should_correctly_build_new_pipeline_class()
        {
            var dummyPipeline = new DummyBuiltPipeline();

            Assert.Equal(3, dummyPipeline.Steps.Count());
        }