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); }
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); }
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); }
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); }
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); }