예제 #1
0
 def testDifferentSeed(self):
     seed1 = 1111
     seed2 = 1112
     model1 = RandomSequenceModel(seed=seed1, max_sequence=20)
     model2 = RandomSequenceModel(seed=seed2, max_sequence=20)
     for template in self.templates:
         model1.add_template(template)
         model2.add_template(template)
     seqs1 = []
     seqs2 = []
     while model1.mutate() and model2.mutate():
         seqs1.append(model1.get_sequence())
         seqs2.append(model2.get_sequence())
     self.assertNotEqual(seqs1, seqs2)
예제 #2
0
 def test_different_seed(self):
     seed1 = 1111
     seed2 = 1112
     model1 = RandomSequenceModel(seed=seed1, max_sequence=20)
     model2 = RandomSequenceModel(seed=seed2, max_sequence=20)
     for template in self.templates:
         model1.add_template(template)
         model2.add_template(template)
     seqs1 = []
     seqs2 = []
     while model1.mutate() and model2.mutate():
         seqs1.append(model1.get_sequence())
         seqs2.append(model2.get_sequence())
     self.assertNotEqual(seqs1, seqs2)
예제 #3
0
    def testCallbackGenerator(self):
        self.src_templates = []
        self.dst_templates = []
        self.cb_call_count = 0

        def cb_gen(src, dst):
            self.src_templates.append(src)
            self.dst_templates.append(dst)
            self.cb_call_count += 1
            return self.cb_call_count
        first_time = True

        model = RandomSequenceModel(name='uut', callback_generator=cb_gen, num_mutations=100, max_sequence=13)
        for template in self.templates:
            model.add_template(template)
        while model.mutate():
            # this ugly piece of code is needed because we want to ignore the
            # default sequence generation
            delta = 0
            def_len = len(model._default_sequence)
            if first_time:
                self.src_templates = self.src_templates[def_len:]
                self.dst_templates = self.dst_templates[def_len:]
                self.cb_call_count -= def_len
                delta = def_len
                first_time = False
            sequence = model.get_sequence()
            self.assertEqual(len(sequence), self.cb_call_count)
            for i in range(len(sequence)):
                self.assertEqual(self.src_templates[i], sequence[i].src)
                self.assertEqual(self.dst_templates[i], sequence[i].dst)
                self.assertEqual(delta + i + 1, sequence[i].callback)
            self.src_templates = []
            self.dst_templates = []
            self.cb_call_count = 0
예제 #4
0
    def testCallbackGenerator(self):
        self.src_templates = []
        self.dst_templates = []
        self.cb_call_count = 0

        def cb_gen(src, dst):
            self.src_templates.append(src)
            self.dst_templates.append(dst)
            self.cb_call_count += 1
            return self.cb_call_count

        model = RandomSequenceModel(name='uut',
                                    callback_generator=cb_gen,
                                    num_mutations=100,
                                    max_sequence=13)
        for template in self.templates:
            model.add_template(template)
        while model.mutate():
            sequence = model.get_sequence()
            self.assertEqual(len(sequence), self.cb_call_count)
            for i in range(len(sequence)):
                self.assertEqual(self.src_templates[i], sequence[i].src)
                self.assertEqual(self.dst_templates[i], sequence[i].dst)
                self.assertEqual(i + 1, sequence[i].callback)
            self.src_templates = []
            self.dst_templates = []
            self.cb_call_count = 0
예제 #5
0
 def test_length_not_overflow(self):
     max_sequence = 5
     model = RandomSequenceModel(name='uut', seed=1111, max_sequence=5)
     for template in self.templates:
         model.add_template(template)
     while model.mutate():
         sequence = model.get_sequence()
         self.assertLessEqual(len(sequence), max_sequence)
예제 #6
0
 def testLengthNotOverflow(self):
     max_sequence = 5
     model = RandomSequenceModel(name='uut', seed=1111, max_sequence=5)
     for template in self.templates:
         model.add_template(template)
     while model.mutate():
         sequence = model.get_sequence()
         self.assertLessEqual(len(sequence), max_sequence)
예제 #7
0
 def test_random_length(self):
     model = RandomSequenceModel(name='uut', seed=1111, max_sequence=20)
     for template in self.templates:
         model.add_template(template)
     sequences = set()
     iterations = 100
     for i in range(iterations):
         model.mutate()
         sequence = model.get_sequence()
         sequences.add(len(sequence))
     self.assertGreater(len(sequences), iterations / 8)
예제 #8
0
 def testRandomLength(self):
     model = RandomSequenceModel(name='uut', seed=1111, max_sequence=20)
     for template in self.templates:
         model.add_template(template)
     sequences = set()
     iterations = 100
     for _ in range(iterations):
         model.mutate()
         sequence = model.get_sequence()
         sequences.add(len(sequence))
     self.assertGreater(len(sequences), iterations // 8)
예제 #9
0
    def testCallbackGenerator(self):
        self.src_templates = []
        self.dst_templates = []
        self.cb_call_count = 0

        def cb_gen(src, dst):
            self.src_templates.append(src)
            self.dst_templates.append(dst)
            self.cb_call_count += 1
            return self.cb_call_count

        first_time = True

        model = RandomSequenceModel(name='uut',
                                    callback_generator=cb_gen,
                                    num_mutations=100,
                                    max_sequence=13)
        for template in self.templates:
            model.add_template(template)
        while model.mutate():
            # this ugly piece of code is needed because we want to ignore the
            # default sequence generation
            delta = 0
            def_len = len(model._default_sequence)
            if first_time:
                self.src_templates = self.src_templates[def_len:]
                self.dst_templates = self.dst_templates[def_len:]
                self.cb_call_count -= def_len
                delta = def_len
                first_time = False
            sequence = model.get_sequence()
            self.assertEqual(len(sequence), self.cb_call_count)
            for i in range(len(sequence)):
                self.assertEqual(self.src_templates[i], sequence[i].src)
                self.assertEqual(self.dst_templates[i], sequence[i].dst)
                self.assertEqual(delta + i + 1, sequence[i].callback)
            self.src_templates = []
            self.dst_templates = []
            self.cb_call_count = 0
예제 #10
0
    def test_callback_generator(self):
        self.src_templates = []
        self.dst_templates = []
        self.cb_call_count = 0

        def cb_gen(src, dst):
            self.src_templates.append(src)
            self.dst_templates.append(dst)
            self.cb_call_count += 1
            return self.cb_call_count

        model = RandomSequenceModel(name='uut', callback_generator=cb_gen, num_mutations=100, max_sequence=13)
        for template in self.templates:
            model.add_template(template)
        while model.mutate():
            sequence = model.get_sequence()
            self.assertEqual(len(sequence), self.cb_call_count)
            for i in range(len(sequence)):
                self.assertEqual(self.src_templates[i], sequence[i].src)
                self.assertEqual(self.dst_templates[i], sequence[i].dst)
                self.assertEqual(i + 1, sequence[i].callback)
            self.src_templates = []
            self.dst_templates = []
            self.cb_call_count = 0