コード例 #1
0
        public void CanTransformObjectBetweenTwoTypes()
        {
            var model = new SampleClassA {
                Value = "100"
            };
            var transformer = new GenericTransformer <SampleClassA, SampleClassB>(a => new SampleClassB {
                Value = int.Parse(a.Value)
            });
            var transformed = transformer.TryTransform(model);

            Assert.AreEqual(100, transformed.Item1.Value);
        }
コード例 #2
0
        public void CanHandleTransformingTypeToItself()
        {
            var transformer = new GenericTransformer <SampleClassA, SampleClassA>(a => new SampleClassA {
                Value = a.Value
            });
            var service = new TransformerService(transformer);
            var model   = new SampleClassA {
                Value = "100"
            };
            var circularTransform = service.Transform <SampleClassA, SampleClassA>(model);

            Assert.AreEqual("100", circularTransform.Value);
        }
コード例 #3
0
        public void CanTransformObjectBetweenThreeTypesAtOnce()
        {
            var model = new SampleClassA {
                Value = "100"
            };
            var transformer1 = new GenericTransformer <SampleClassA, SampleClassB>(a => new SampleClassB {
                Value = int.Parse(a.Value)
            });
            var transformer2 = new GenericTransformer <SampleClassB, SampleClassC>(b => new SampleClassC {
                StringValue = b.Value.ToString(), IntValue = b.Value
            });

            var transformerService = new TransformerService(transformer1, transformer2);
            var transformed        = transformerService.Transform <SampleClassA, SampleClassC>(model);

            Assert.AreEqual("100", transformed.StringValue);
            Assert.AreEqual(100, transformed.IntValue);
        }
コード例 #4
0
        public void CanHandleCircularGraph()
        {
            var transformer1 = new GenericTransformer <SampleClassA, SampleClassB>(a => new SampleClassB {
                Value = int.Parse(a.Value)
            });
            var transformer2 = new GenericTransformer <SampleClassB, SampleClassC>(b => new SampleClassC {
                StringValue = b.Value.ToString(), IntValue = b.Value
            });
            var transformer3 = new GenericTransformer <SampleClassC, SampleClassA>(c => new SampleClassA {
                Value = c.StringValue
            });

            var service = new TransformerService(transformer1, transformer2, transformer3);
            var model   = new SampleClassA {
                Value = "100"
            };

            var circularTransform = service.Transform <SampleClassA, SampleClassA>(model);

            Assert.AreEqual("100", circularTransform.Value);
        }
コード例 #5
0
        public void CanUseMultipleTransformersOnSameArray()
        {
            var transformer1 = new GenericTransformer <SampleClassA, SampleClassB>(a => new SampleClassB {
                Value = int.Parse(a.Value)
            }, a => a.Value.StartsWith("1"));
            var transformer2 = new GenericTransformer <SampleClassA, SampleClassB>(a => new SampleClassB {
                Value = 10 * int.Parse(a.Value)
            }, a => !a.Value.StartsWith("1"));

            var models = new SampleClassA[] { new SampleClassA {
                                                  Value = "100"
                                              }, new SampleClassA {
                                                  Value = "200"
                                              } };

            var service = new TransformerService(transformer1, transformer2);

            var result = service.Transform <SampleClassA[], SampleClassB[]>(models);

            Assert.AreEqual(100, result[0].Value);
            Assert.AreEqual(2000, result[1].Value);
        }