def sendAndReceive(self, factory): self.sent = Message() self.sent.ParseFromString(factory.setId(555).setSessionId("555").build()) if len(self.reply_with) > 0: return self.reply_with.pop(0) else: return None
def testItShouldBuildNullFromArgument(self): argument = Message.Argument(type=Message.Argument.NULL) type = reflection.ReflectedType.fromArgument(argument, reflector=self.reflector) assert isinstance(type, reflection.ReflectedNull)
def buildErrorReply(self, error_message): message = Message(id=555, type=Message.REFLECTION_RESPONSE) message.reflection_response.session_id = "555" message.reflection_response.status = Message.ReflectionResponse.ERROR message.reflection_response.errormessage = error_message return message
def buildObjectReply(self, ref): message = Message(id=555, type=Message.REFLECTION_RESPONSE) message.reflection_response.session_id = "555" message.reflection_response.status = Message.ReflectionResponse.SUCCESS message.reflection_response.result.type = Message.Argument.OBJECT message.reflection_response.result.object.reference = ref return message
def testItShouldBuildStringFromArgument(self): argument = Message.Argument(type=Message.Argument.STRING) argument.string = "Hello, World!" type = reflection.ReflectedType.fromArgument(argument, reflector=self.reflector) assert isinstance(type, reflection.ReflectedString) assert type.native() == "Hello, World!"
def testItShouldBuildObjectFromArgument(self): argument = Message.Argument(type=Message.Argument.OBJECT) argument.object.reference = 987654321 type = reflection.ReflectedType.fromArgument(argument, reflector=self.reflector) assert isinstance(type, reflection.ReflectedObject) assert type._ref == 987654321
def buildPrimitiveReply(self, type, int): message = Message(id=555, type=Message.REFLECTION_RESPONSE) message.reflection_response.session_id = "555" message.reflection_response.status = Message.ReflectionResponse.SUCCESS message.reflection_response.result.type = Message.Argument.PRIMITIVE message.reflection_response.result.primitive.type = type message.reflection_response.result.primitive.int = int return message
def testItShouldBuildPrimitiveFromArgument(self): argument = Message.Argument(type=Message.Argument.PRIMITIVE) argument.primitive.type = Message.Primitive.BOOL argument.primitive.bool = True type = reflection.ReflectedType.fromArgument(argument, reflector=self.reflector) assert isinstance(type, reflection.ReflectedPrimitive) assert type.type() == "boolean" assert type.native() == True
class MockReflector(reflection.Reflector): def __init__(self, session): reflection.Reflector.__init__(self, session) self.sent = None self.reply_with = [] def buildErrorReply(self, error_message): message = Message(id=555, type=Message.REFLECTION_RESPONSE) message.reflection_response.session_id = "555" message.reflection_response.status = Message.ReflectionResponse.ERROR message.reflection_response.errormessage = error_message return message def buildObjectReply(self, ref): message = Message(id=555, type=Message.REFLECTION_RESPONSE) message.reflection_response.session_id = "555" message.reflection_response.status = Message.ReflectionResponse.SUCCESS message.reflection_response.result.type = Message.Argument.OBJECT message.reflection_response.result.object.reference = ref return message def buildPrimitiveReply(self, type, int): message = Message(id=555, type=Message.REFLECTION_RESPONSE) message.reflection_response.session_id = "555" message.reflection_response.status = Message.ReflectionResponse.SUCCESS message.reflection_response.result.type = Message.Argument.PRIMITIVE message.reflection_response.result.primitive.type = type message.reflection_response.result.primitive.int = int return message def buildSuccessReply(self): message = Message(id=555, type=Message.REFLECTION_RESPONSE) message.reflection_response.session_id = "555" message.reflection_response.status = Message.ReflectionResponse.SUCCESS return message def replyWith(self, message): self.reply_with.append(message) def sendAndReceive(self, factory): self.sent = Message() self.sent.ParseFromString(factory.setId(555).setSessionId("555").build()) if len(self.reply_with) > 0: return self.reply_with.pop(0) else: return None
def testItShouldBuildObjectArrayFromArgument(self): argument = Message.Argument(type=Message.Argument.ARRAY) argument.array.type = Message.Array.OBJECT for i in range(0, 3): element = argument.array.element.add(type=Message.Argument.OBJECT) element.object.reference = i type = reflection.ReflectedType.fromArgument(argument, reflector=self.reflector) assert isinstance(type, reflection.ReflectedArray) assert len(type.native()) == 3 for i in range(0, 3): assert isinstance(type.native()[i], reflection.ReflectedObject) assert type.native()[i]._ref == i
def testItShouldBuildStringArrayFromArgument(self): argument = Message.Argument(type=Message.Argument.ARRAY) argument.array.type = Message.Array.STRING for i in range(0, 3): element = argument.array.element.add(type=Message.Argument.STRING) element.string = "Hello, World! (" + str(i) + ")" type = reflection.ReflectedType.fromArgument(argument, reflector=self.reflector) assert isinstance(type, reflection.ReflectedArray) assert len(type.native()) == 3 for i in range(0, 3): assert isinstance(type.native()[i], reflection.ReflectedString) assert type.native()[i].native( ) == "Hello, World! (" + str(i) + ")"
def testItShouldBuildPrimitiveArrayFromArgument(self): argument = Message.Argument(type=Message.Argument.ARRAY) argument.array.type = Message.Array.PRIMITIVE for i in range(0, 3): element = argument.array.element.add( type=Message.Argument.PRIMITIVE) element.primitive.type = Message.Primitive.BOOL element.primitive.bool = True type = reflection.ReflectedType.fromArgument(argument, reflector=self.reflector) assert isinstance(type, reflection.ReflectedArray) assert len(type.native()) == 3 for i in range(0, 3): assert isinstance(type.native()[i], reflection.ReflectedPrimitive) assert type.native()[i].type() == "boolean"
def testItShouldRaiseTypeErrorIfArrayIsMixedTypes(self): argument = Message.Argument(type=Message.Argument.ARRAY) argument.array.type = Message.Array.PRIMITIVE for i in range(0, 3): element = argument.array.element.add( type=Message.Argument.PRIMITIVE) element.primitive.type = Message.Primitive.BOOL element.primitive.bool = True for i in range(0, 3): element = argument.array.element.add(type=Message.Argument.OBJECT) element.object.reference = i try: type = reflection.ReflectedType.fromArgument( argument, reflector=self.reflector) assert False, "should have caused a TypeError building a mixed array" except TypeError as e: assert e.message == "mismatched array element types"
def testItShouldShowTheMessageTypeAsSystemResponse(self): message = Message(id=1, type=Message.SYSTEM_RESPONSE).SerializeToString() assert frame.Frame(2, len(message), message).messageType() == "SYSTEM_RESPONSE"
def testItShouldShowTheMessageTypeAsReflectionResponse(self): message = Message( id=1, type=Message.REFLECTION_RESPONSE).SerializeToString() assert frame.Frame(2, len(message), message).messageType() == "REFLECTION_RESPONSE"
def testItShouldExtractTheMessage(self): message = Message(id=1, type=Message.REFLECTION_REQUEST).SerializeToString() assert isinstance( frame.Frame(2, len(message), message).message(), Message)
def testItShouldBuildFrameFromMessage(self): message = Message(id=1, type=Message.REFLECTION_REQUEST).SerializeToString() assert frame.Frame.fromMessage(message).length == len(message)
def buildSuccessReply(self): message = Message(id=555, type=Message.REFLECTION_RESPONSE) message.reflection_response.session_id = "555" message.reflection_response.status = Message.ReflectionResponse.SUCCESS return message