Exemple #1
0
    def testConsistency(self):
        slzr = serializer.StandardSerializer()
        self.assertEqual('a', slzr.to_text(slzr.to_binary('a')))
        self.assertEqual(' ', slzr.to_text(slzr.to_binary(' ')))

        # greek letter \alpha (not working in current ascii serialization)
        self.assertEqual(u"\u03B1", slzr.to_text(slzr.to_binary(u"\u03B1")))
Exemple #2
0
 def testOutputSerialization(self):
     slzr = serializer.StandardSerializer()
     oc = channels.OutputChannel(slzr)
     test_string = 'my message'
     serialized_test_string = slzr.to_binary(test_string)
     oc.set_message(test_string)
     for b in serialized_test_string:
         self.assertEqual(b, oc.consume())
Exemple #3
0
def task_messenger(task):
    slzr = serializer.StandardSerializer()
    scheduler = SingleTaskScheduler(task)
    env = environment.Environment(slzr,
                                  scheduler,
                                  max_reward_per_task=float("inf"),
                                  byte_mode=True)
    return EnvironmentByteMessenger(env, slzr)
Exemple #4
0
 def init_env(self, task, success_threshold=2):
     slzr = serializer.StandardSerializer()
     scheduler = ConsecutiveTaskScheduler([task], success_threshold)
     env = environment.Environment(slzr,
                                   scheduler,
                                   max_reward_per_task=float("inf"),
                                   byte_mode=True)
     messenger = EnvironmentByteMessenger(env, slzr)
     return (scheduler, messenger)
Exemple #5
0
    def testInputSerialization(self):
        slzr = serializer.StandardSerializer()
        ic = channels.InputChannel(slzr)
        test_string = 'my message'
        serialized_test_string = slzr.to_binary(test_string)

        def all_good(input_message):
            self.assertEqual(test_string[:len(input_message)], input_message)

        ic.message_updated.register(all_good)
        for b in serialized_test_string:
            ic.consume(b)
Exemple #6
0
    def testAllInputs(self):
        env = environment.Environment(serializer.StandardSerializer(),
                                      SingleTaskScheduler(NullTask()),
                                      byte_mode=True)
        learner = TryAllInputsLearner()
        s = session.Session(env, learner)

        def on_time_updated(t):
            if t >= 600:
                s.stop()

        s.total_time_updated.register(on_time_updated)

        s.run()
    def testLimitReward(self):
        env = environment.Environment(serializer.StandardSerializer(),
                                      SingleTaskScheduler(NullTask()))
        learner = LearnerMock()
        s = session.Session(env, learner)

        def on_time_updated(t):
            if t >= 20:
                s.stop()

        s.total_time_updated.register(on_time_updated)

        s.run()
        self.assertLessEqual(s._total_reward, 10)
Exemple #8
0
    def testConsistency(self):
        slzr = serializer.StandardSerializer()
        ic = channels.InputChannel(slzr)
        oc = channels.OutputChannel(slzr)
        test_string = 'my message'

        def all_good(input_message):
            self.assertEqual(test_string[:len(input_message)], input_message)

        oc.set_message(test_string)
        ic.message_updated.register(all_good)
        while not oc.is_empty():
            b = oc.consume()
            ic.consume(b)
Exemple #9
0
 def testIsSient(self):
     slzr = serializer.StandardSerializer()
     oc = channels.OutputChannel(slzr)
     self.assertTrue(oc.is_silent())
     oc.set_message(slzr.SILENCE_TOKEN)
     self.assertTrue(oc.is_silent())
     while not oc.is_empty():
         oc.consume()
         self.assertTrue(oc.is_silent())
     oc.set_message('hello')
     while not oc.is_empty():
         oc.consume()
         if not oc.is_empty():
             self.assertFalse(oc.is_silent())
     self.assertTrue(oc.is_silent())
Exemple #10
0
 def perform_setup(self, success_threshold=2):
     slzr = serializer.StandardSerializer()
     self.tasks = [
         micro.Micro1Task(),
         micro.Micro2Task(),
         micro.Micro3Task(),
         micro.Micro4Task(),
         micro.Micro5Sub1Task()
     ]
     self.scheduler = ConsecutiveTaskScheduler(self.tasks,
                                               success_threshold)
     self.env = environment.Environment(slzr,
                                        self.scheduler,
                                        max_reward_per_task=float("inf"),
                                        byte_mode=True)
     self.messenger = EnvironmentByteMessenger(self.env, slzr)
Exemple #11
0
    def testSilenceConsistency(self):
        slzr = serializer.StandardSerializer()
        ic = channels.InputChannel(slzr)
        oc = channels.OutputChannel(slzr)
        test_string = slzr.SILENCE_TOKEN * 10
        something_read = [0]

        def all_good(input_message):
            something_read[0] = len(input_message)
            self.assertEqual(test_string[:len(input_message)], input_message)

        oc.set_message(test_string)
        ic.message_updated.register(all_good)
        while not oc.is_empty():
            b = oc.consume()
            ic.consume(b)
        self.assertEqual(something_read[0], len(test_string))
Exemple #12
0
def task_messenger(task_funct, world_funct=None):
    '''
    Returns an EnvironmentMessenger to interact with the created task.
    Args:
        task_func (functor): takes an environment (optionally a world) and
            returns a task object.
        world_func (functor): takes an environment and returns a world
            object.
    '''
    slzr = serializer.StandardSerializer()
    if world_funct:
        world = world_funct()
        task = task_funct(world)
    else:
        task = task_funct()
    scheduler = SingleTaskScheduler(task)
    env = environment.Environment(slzr, scheduler)
    m = EnvironmentMessenger(env, slzr)
    yield m
    def testOverwrittingConsistency(self):
        slzr = serializer.StandardSerializer()
        ic = channels.InputChannel(slzr)
        oc = channels.OutputChannel(slzr)
        test_string = 'my message'
        # array because Python's scoping rules are demented:
        # http://stackoverflow.com/questions/4851463/python-closure-write-to-variable-in-parent-scope
        something_read = [0]

        def all_good(input_message):
            something_read[0] = len(input_message)
            self.assertEqual(test_string[:len(input_message)], input_message)
        oc.set_message("this shouldn't matter")
        oc.set_message(test_string)
        ic.message_updated.register(all_good)
        while not oc.is_empty():
            b = oc.consume_bit()
            ic.consume_bit(b)
        self.assertEqual(something_read[0], len(test_string))
Exemple #14
0
 def testScramblingSerializerWrapper(self):
     slzr = serializer.ScramblingSerializerWrapper(
         serializer.StandardSerializer())
     self.assertEqual(slzr.tokenize("a b"),
                      [("a", "WORD"), (" ", 'SILENCE'), ('b', 'WORD')])
     self.assertEqual(slzr.tokenize("a  b"),
                      [("a", "WORD"), (" ", 'SILENCE'), (" ", 'SILENCE'),
                       ('b', 'WORD')])
     self.assertEqual(slzr.tokenize("a b "),
                      [("a", "WORD"), (" ", 'SILENCE'), ('b', 'WORD'),
                       (' ', 'SILENCE')])
     self.assertEqual(slzr.tokenize("a b, "), [("a", "WORD"),
                                               (" ", 'SILENCE'),
                                               ('b', 'WORD'),
                                               (',', 'PUNCT'),
                                               (' ', 'SILENCE')])
     self.assertEqual(slzr.tokenize("a b ."), [("a", "WORD"),
                                               (" ", 'SILENCE'),
                                               ('b', 'WORD'),
                                               (' ', 'SILENCE'),
                                               ('.', 'PUNCT')])