Beispiel #1
0
    def test_init(self):
        type_set = RxTypeSet()
        char_sets = CharSets(type_set)

        self.assertEqual(len(char_sets._char_sets), len(CHAR_SETS.keys()))

        for key in CHAR_SETS.keys():
            self.assertIn(key, char_sets._char_sets)
            self.assertIsInstance(char_sets._char_sets[key], set)
            self.assertEqual(len(char_sets._char_sets[key]), 0)

        self.assertEqual(type_set, char_sets._rxtypes)
Beispiel #2
0
    def init_wrappers(self,
                      printable_subset: Optional[Iterable[str]] = None
                      ) -> None:
        if not printable_subset:
            printable_subset = CHAR_SETS.keys()
        printable_subset = set(printable_subset)

        # clear containers
        self._wrappers.clear()
        self._char_sets.empty_sets()

        for settings in RXWRAPPER_SETTINGS:
            settings["rxtype_name"] = settings.get("rxtype_name",
                                                   settings["name"])

            if settings.get("is_char_set"):
                type_name = settings.get("rxtype_name", settings["name"])
                char_set = settings.get("char_set") or CHAR_SETS[type_name]

                self._char_sets.init_char_set(type_name, printable_subset,
                                              char_set)

                for char in char_set:
                    settings["char_value"] = char
                    self.add(self.create_wrapper(**settings))

            else:
                self.add(self.create_wrapper(**settings))
Beispiel #3
0
    def test_init_char_set(self):
        type_set = RxTypeSet()
        type_set.init_types()
        char_sets = CharSets(type_set)
        printable_subset = set(CHAR_SETS.keys())

        for settings in RXWRAPPER_SETTINGS:
            if settings.get("is_char_set"):
                type_name = settings.get("rxtype_name", settings["name"])
                char_set = settings.get("char_set") or CHAR_SETS[type_name]
                char_sets.init_char_set(type_name, printable_subset, char_set)

        for type_name in CHAR_SETS.keys():
            self.assertIn(type_name, char_sets._char_sets)

            for char in CHAR_SETS[type_name]:
                self.assertIn(char, char_sets._char_sets[type_name])
Beispiel #4
0
    def test_invert_set(self):
        mock_node = MockNode(char_sets=self.char_sets)
        for char_set_name in CHAR_SETS.keys():
            char_set = list(
                self.char_sets[char_set_name])  #  CHAR_SETS[char_set_name]
            subset = set([random.choice(char_set) for i in range(5)])
            result = invert_set(mock_node, subset, char_set_name)

            self.assertEqual(len(result) + len(subset), len(char_set))
            self.assertSetEqual(result | subset, set(char_set))
Beispiel #5
0
    def test_empty_sets(self):
        type_set = RxTypeSet()
        char_sets = CharSets(type_set)

        for key in char_sets._char_sets.keys():
            char_sets._char_sets[key].add("a")
            char_sets._char_sets[key].add("b")
            char_sets._char_sets[key].add("c")
            self.assertEqual(len(char_sets._char_sets[key]), 3)

        char_sets.empty_sets()

        self.assertEqual(len(char_sets._char_sets), len(CHAR_SETS.keys()))
        for key in char_sets._char_sets.keys():
            self.assertEqual(len(char_sets._char_sets[key]), 0)
Beispiel #6
0
    def test_init_char_set_full_subset(self):
        type_set = RxTypeSet()
        type_set.init_types()
        char_sets = CharSets(type_set)

        type_name = "alphanum"
        full_type_names = set(type_set.get_full_type_names(type_name))
        printable_subset = set(CHAR_SETS.keys())
        char_set = CHAR_SETS[type_name]

        char_sets.init_char_set(type_name, printable_subset, char_set)

        # all related type names should contain all characters in alphanum char set
        for char in char_set:
            for name in full_type_names:

                # only evaluate those type names that represent actual printable character sets
                if name in char_sets._char_sets:
                    self.assertIn(char, char_sets._char_sets[name])
Beispiel #7
0
    def gen_test_no_match(
        self,
        prob_alphanum: Optional[float] = None,
        prob_data_format: Optional[float] = None,
        data_format: Optional[dict] = None,
        char_sets: Optional[Sequence[str]] = None,
    ) -> str:

        prob_alphanum = prob_alphanum or 0.5
        prob_data_format = prob_data_format or 0.5

        if not data_format:
            prob_data_format = 0
            data_format = {}

        if not char_sets:
            char_sets = list(CHAR_SETS.keys())

        use_data_format: bool = random() < prob_data_format
        num_words: int = select_index(MAX_WORDS) + 1
        if random() < prob_alphanum:
            char_set_name: str = "alphanum"
        else:
            char_set_name = choice(char_sets)

        if use_data_format:
            num_words = callable_get(data_format.get("num_words",
                                                     None)) or num_words
            char_set_name = (callable_get(data_format.get("char_set", None))
                             or char_set_name)

        char_set: str = CHAR_SETS[char_set_name]
        res: List[str] = []

        for i in range(num_words):
            num_chars: int = select_index(10) + 1
            if use_data_format:
                num_chars = (callable_get(data_format.get("word_length", None),
                                          i) or num_chars)
            res.append("".join([choice(char_set) for i in range(num_chars)]))

        return " ".join(res)
Beispiel #8
0
 def __init__(self, rxtypes: RxTypeSet) -> None:
     self._char_sets: Dict[str,
                           Set[str]] = {c: set()
                                        for c in CHAR_SETS.keys()}
     self._rxtypes: RxTypeSet = rxtypes
Beispiel #9
0
 def test_contains_true(self):
     type_set = RxTypeSet()
     char_sets = CharSets(type_set)
     for key in CHAR_SETS.keys():
         self.assertTrue(key in char_sets)
         self.assertIn(key, char_sets)
Beispiel #10
0
 def test_getitem(self):
     type_set = RxTypeSet()
     char_sets = CharSets(type_set)
     for key in CHAR_SETS.keys():
         self.assertIsInstance(char_sets[key], set)