public void IndexSubscribers() { // arrange var routeA = new Route("RouteA", typeof(string)); var routeB = new Route("RouteB", typeof(int)); var routeC = new Route("RouteC", typeof(void)); var subscriber1 = new Subscriber(routeA, null, _ => null); var subscriber2 = new Subscriber(routeA, routeB, _ => null); var subscriber3 = new Subscriber(routeC, null, _ => null); var subscriber4 = new Subscriber(routeC, routeB, _ => null); var subscribers = new List <Subscriber>() { subscriber1, subscriber2, subscriber3, subscriber4 }; var contract = new Mock <IDataContractAccess>(); contract.Setup(x => x.Subscribers).Returns(subscribers); // act var subscribersDictionary = DataContractManager.IndexSubscribers(contract.Object); // assert Assert.AreEqual(new[] { routeA.Name, routeC.Name }, subscribersDictionary.Keys); Assert.AreEqual(new[] { subscriber1, subscriber2 }, subscribersDictionary[routeA.Name]); Assert.AreEqual(new[] { subscriber3, subscriber4 }, subscribersDictionary[routeC.Name]); }
public void IndexRoutes() { // arrange var routeA = new Route("RouteA", typeof(string)); var routeB = new Route("RouteB", typeof(int)); var routeC = new Route("RouteC", typeof(void)); var routes = new List <Route>() { routeA, routeB, routeC }; var contract = new Mock <IDataContractAccess>(); contract.Setup(x => x.Routes).Returns(routes); // act var routesDictionary = DataContractManager.IndexRoutes(contract.Object); // assert Assert.AreEqual(new[] { routeA.Name, routeB.Name, routeC.Name }, routesDictionary.Keys); Assert.AreEqual(routeA, routesDictionary[routeA.Name]); Assert.AreEqual(routeB, routesDictionary[routeB.Name]); Assert.AreEqual(routeC, routesDictionary[routeC.Name]); }
public void GetIncomingRouteNamesFromSubscribers() { // arrange var builder = new DataContractBuilder(); var serializer = new Mock <ITypeSerializer <string> >(); builder.RegisterSerializer(serializer.Object); var routeA = new Route("RouteA", typeof(string)); var routeB = new Route("RouteB", typeof(string)); var routeC = new Route("RouteC", typeof(string)); var routeD = new Route("RouteD", typeof(string)); builder.RegisterRoute(routeA); builder.RegisterRoute(routeB); builder.RegisterRoute(routeC); builder.RegisterRoute(routeD); // act builder.RegisterSubscriber(new Subscriber(routeA, routeB, _ => null)); builder.RegisterSubscriber(new Subscriber(routeC, routeD, _ => null)); var dataContract = new DataContractManager(builder); // assert var routeNames = dataContract .GetIncomingRouteNames() .ToArray(); var exptectedRouteNames = new[] { routeA.Name, routeC.Name }; Assert.AreEqual(exptectedRouteNames, routeNames); }
public void CallRoute() { // arrange var routeI = new Route("RouteI", typeof(ClassA)); var routeV = new Route("RouteV", typeof(void)); var routeR1 = new Route("routeR1", typeof(ClassB)); var routeR2 = new Route("routeR2", typeof(ClassB)); var serializerMockA = new Mock <ITypeSerializer <ClassA> >(); serializerMockA.Setup(x => x.Serialize(It.IsAny <ClassA>())).Returns(new[] { (byte)'A' }); var serializerMockB = new Mock <ITypeSerializer <ClassB> >(); serializerMockB.Setup(x => x.Serialize(It.IsAny <ClassB>())).Returns(new[] { (byte)'B' }); var responseClass1 = new ClassB(); var responseClass2 = new ClassB(); var subscriberA = new Subscriber(routeI, routeR1, _ => responseClass1); var subscriberB = new Subscriber(routeI, null, _ => null); var subscriberC = new Subscriber(routeI, routeR2, _ => responseClass2); var routes = new List <Route> { routeI, routeV, routeR1, routeR2 }; var serializers = new List <Serializer> { Serializer.FromTypeSerializer(serializerMockA.Object), Serializer.FromTypeSerializer(serializerMockB.Object) }; var subscribers = new List <Subscriber> { subscriberA, subscriberB, subscriberC }; var configuration = new Mock <IDataContractAccess>(); configuration.Setup(x => x.Routes).Returns(routes); configuration.Setup(x => x.Serializers).Returns(serializers); configuration.Setup(x => x.Subscribers).Returns(subscribers); var contract = new DataContractManager(configuration.Object); // act var response = contract .CallRoute(new Message(routeI.Name, new ClassA())) .ToList(); // assert Assert.AreEqual(2, response.Count); Assert.AreEqual(new Message(routeR1.Name, responseClass1), response[0]); Assert.AreEqual(new Message(routeR2.Name, responseClass2), response[1]); }
public void IndexSerializers() { // arrange var routeA = new Route("RouteA", typeof(ClassA)); var routeB = new Route("RouteB", typeof(ClassB)); var routeC = new Route("RouteC", typeof(ClassC)); var routeG = new Route("RouteG", typeof(object)); var serializerMockA = new Mock <IGeneralSerializer <ClassA> >(); serializerMockA.Setup(x => x.Serialize(It.IsAny <ClassA>())).Returns(new[] { (byte)'A' }); var serializerMockB = new Mock <ITypeSerializer <ClassB> >(); serializerMockB.Setup(x => x.Serialize(It.IsAny <ClassB>())).Returns(new[] { (byte)'B' }); var serializerMockG = new Mock <IGeneralSerializer <object> >(); serializerMockG.Setup(x => x.Serialize(It.IsAny <object>())).Returns(new[] { (byte)'G' }); var serializerA = Serializer.FromGeneralSerializer(serializerMockA.Object); var serializerB = Serializer.FromTypeSerializer(serializerMockB.Object); var serializerG = Serializer.FromGeneralSerializer(serializerMockG.Object); var routes = new List <Route>() { routeA, routeB, routeC, routeG }; var serializers = new List <Serializer>() { serializerA, serializerB, serializerG }; var contract = new Mock <IDataContractAccess>(); contract.Setup(x => x.Routes).Returns(routes); contract.Setup(x => x.Serializers).Returns(serializers); // act var mapping = DataContractManager.IndexSerializers(contract.Object); // assert Assert.AreEqual((byte)'A', mapping[routeA.DataType].Serialize(null)[0]); Assert.AreEqual((byte)'B', mapping[routeB.DataType].Serialize(null)[0]); Assert.AreEqual((byte)'A', mapping[routeC.DataType].Serialize(null)[0]); Assert.AreEqual((byte)'G', mapping[routeG.DataType].Serialize(null)[0]); }
public void EventDeserialization() { // arrange var eventRoute = new Route("EventRoute", typeof(void)); var configuration = new Mock <IDataContractAccess>(); configuration.Setup(x => x.Routes).Returns(new List <Route> { eventRoute }); configuration.Setup(x => x.Serializers).Returns(new List <Serializer>()); configuration.Setup(x => x.Subscribers).Returns(new List <Subscriber>()); var contract = new DataContractManager(configuration.Object); var serializedMessage = new SerializedMessage("EventRoute", new byte[0]); // act var message = contract.Deserialize(serializedMessage); // assert var expectedMessage = new Message("EventRoute", null); Assert.AreEqual(expectedMessage, message); }