Beispiel #1
0
    def test_FixedList(self):
        self.assertEqual(
            AllTypesYaml.Deserialize_fixed_list(
                textwrap.dedent(
                    """\
                    - a
                    - b
                    - c
                    """, ), ),
            ["a", "b", "c"],
        )

        self.assertRaisesRegex(
            AllTypesYaml.DeserializeException,
            r"At least 3 items were expected \(2 found\)",
            lambda: AllTypesYaml.Deserialize_fixed_list(
                textwrap.dedent(
                    """\
                    - a
                    - b
                    """, ), ),
        )

        self.assertRaisesRegex(
            AllTypesYaml.DeserializeException,
            r"At most 3 items were expected \(4 found\)",
            lambda: AllTypesYaml.Deserialize_fixed_list(
                textwrap.dedent(
                    """\
                    - a
                    - b
                    - c
                    - d
                    """, ), ),
        )
Beispiel #2
0
    def test_OptionalList(self):
        self.assertEqual(
            AllTypesYaml.Deserialize_optional_list(
                textwrap.dedent(
                    """\
                    - one
                    - two
                    """, ), ),
            ["one", "two"],
        )

        self.assertEqual(AllTypesYaml.Deserialize_optional_list(""), [])
Beispiel #3
0
    def test_StandardList(self):
        obj = AllTypesYaml.Deserialize_standard_list(
            textwrap.dedent(
                """\
                - one
                - two
                - three
                """, ), )

        self.assertEqual(obj, ["one", "two", "three"])

        # Errors
        self.assertRaisesRegex(
            AllTypesYaml.DeserializeException, r"An item was expected",
            lambda: AllTypesYaml.Deserialize_standard_list(""))
Beispiel #4
0
    def setUp(self):
        # AllTypes.yaml
        all_types_filename = os.path.join(_script_dir, "..", "Impl",
                                          "AllTypes.yaml")
        assert os.path.isfile(all_types_filename), all_types_filename

        all_types_original_content = AllTypesYaml.Deserialize_types(
            all_types_filename)
        all_types_content = AllTypesJson.Serialize_types(
            all_types_original_content,
            to_string=True,
        )

        all_types_filename = os.path.join(_script_dir, "Generated", "AllTypes",
                                          "AllTypes.schema.json")
        assert os.path.isfile(all_types_filename), all_types_filename

        # FileSystemTest.xml
        file_system_filename = os.path.join(_script_dir, "..", "Impl",
                                            "FileSystemTest.xml")
        assert os.path.isfile(file_system_filename), file_system_filename

        file_system_original_content = FileSystemXml.Deserialize(
            file_system_filename,
            process_additional_data=True,
        )
        file_system_content = FileSystemJson.Serialize(
            file_system_original_content,
            to_string=True,
            process_additional_data=True,
        )

        file_system_filename = os.path.join(_script_dir, "Generated",
                                            "FileSystemTest",
                                            "FileSystemTest.schema.json")
        assert os.path.isfile(file_system_filename), file_system_filename

        # Test.xml
        test_filename = os.path.join(_script_dir, "..", "Impl", "Test.xml")
        assert os.path.isfile(test_filename), test_filename

        test_original_content = TestXml.Deserialize(test_filename)
        test_content = TestJson.Serialize(
            test_original_content,
            to_string=True,
        )

        test_filename = os.path.join(_script_dir, "Generated", "Test",
                                     "Test.schema.json")
        assert os.path.isfile(test_filename), test_filename

        self._all_types = all_types_content
        self._all_types_filename = all_types_filename

        self._file_system = file_system_content
        self._file_system_filename = file_system_filename

        self._test = test_content
        self._test_filename = test_filename
    def test_Standard(self):
        obj = AllTypesYaml.Deserialize_types(self._yaml_filename)

        self.ValidateTypes(obj)
    def test_Constraints(self):
        # directory_

        # Create a temp dir
        temp_dirname = os.path.join(os.getcwd(), str(uuid.uuid4()).replace("-", ""))
        assert not os.path.exists(temp_dirname), temp_dirname

        os.mkdir(temp_dirname)
        with CallOnExit(lambda: FileSystem.RemoveTree(temp_dirname)):
            self.assertEqual(AllTypesYaml.Deserialize_directory_(os.path.basename(temp_dirname)).lower(), temp_dirname.lower())

        # ----------------------------------------------------------------------
        def CaseInsensitiveException(ExceptionType, regex, func):
            try:
                func()
                self.assertFalse(True)
            except ExceptionType as ex:
                self.assertEqual(regex.lower(), str(ex).lower())

        # ----------------------------------------------------------------------

        CaseInsensitiveException(
            AllTypesYaml.DeserializeException,
            "'{}' is not a valid directory [directory_]".format(os.path.join(os.getcwd(), "Does Not Exist")),
            lambda: AllTypesYaml.Deserialize_directory_("Does Not Exist"),
        )

        # filename_

        # Create a temp filename
        temp_filename = os.path.join(os.getcwd(), str(uuid.uuid4()).replace("-", ""))
        assert not os.path.exists(temp_filename), temp_filename

        with open(temp_filename, "w") as f:
            f.write("Temp file")

        with CallOnExit(lambda: FileSystem.RemoveFile(temp_filename)):
            self.assertEqual(AllTypesYaml.Deserialize_filename_('"{}"'.format(os.path.basename(temp_filename))).lower(), temp_filename.lower())

        CaseInsensitiveException(
            AllTypesYaml.DeserializeException,
            "'{}' is not a valid file [filename_]".format(os.path.join(os.getcwd(), "Does Not Exist")),
            lambda: AllTypesYaml.Deserialize_filename_("Does Not Exist"),
        )

        # filename_any_
        temp_dirname = os.path.join(os.getcwd(), str(uuid.uuid4()).replace("-", ""))
        assert not os.path.exists(temp_dirname), temp_dirname

        os.mkdir(temp_dirname)
        with CallOnExit(lambda: FileSystem.RemoveTree(temp_dirname)):
            self.assertEqual(AllTypesYaml.Deserialize_filename_any_('"{}"'.format(os.path.basename(temp_dirname))).lower(), temp_dirname.lower())

        temp_filename = os.path.join(os.getcwd(), str(uuid.uuid4()).replace("-", ""))
        assert not os.path.exists(temp_filename), temp_filename

        with open(temp_filename, "w") as f:
            f.write("Temp file")

        with CallOnExit(lambda: FileSystem.RemoveFile(temp_filename)):
            self.assertEqual(AllTypesYaml.Deserialize_filename_any_('"{}"'.format(os.path.basename(temp_filename))).lower(), temp_filename.lower())

        self.assertRaisesRegex(AllTypesYaml.DeserializeException, re.escape("is not a valid file or directory"), lambda: AllTypesYaml.Deserialize_filename_any_("Does Not Exist"))

        # number_
        self.assertEqual(AllTypesYaml.Deserialize_number_("2"), 2)
        self.assertRaisesRegex(AllTypesYaml.DeserializeException, r"-30 is not >= -20.0", lambda: AllTypesYaml.Deserialize_number_("-30"))
        self.assertRaisesRegex(AllTypesYaml.DeserializeException, r"40 is not <= 20.0", lambda: AllTypesYaml.Deserialize_number_("40"))

        # int_
        self.assertEqual(AllTypesYaml.Deserialize_int_("10"), 10)
        self.assertRaisesRegex(AllTypesYaml.DeserializeException, r"-30 is not >= -20", lambda: AllTypesYaml.Deserialize_int_("-30"))
        self.assertRaisesRegex(AllTypesYaml.DeserializeException, r"40 is not <= 20", lambda: AllTypesYaml.Deserialize_int_("40"))

        # string_
        self.assertEqual(AllTypesYaml.Deserialize_string_("abc"), "abc")
        self.assertRaisesRegex(
            AllTypesYaml.DeserializeException,
            r"'a' is not a valid 'String' string - Value must have at least 2 characters, not have more than 4 characters",
            lambda: AllTypesYaml.Deserialize_string_("a"),
        )
        self.assertRaisesRegex(
            AllTypesYaml.DeserializeException,
            r"'abcde' is not a valid 'String' string - Value must have at least 2 characters, not have more than 4 characters",
            lambda: AllTypesYaml.Deserialize_string_("abcde"),
        )

        # string_regex_
        self.assertEqual(AllTypesYaml.Deserialize_string_regex_("bit"), "bit")
        self.assertEqual(AllTypesYaml.Deserialize_string_regex_("but"), "but")
        self.assertEqual(AllTypesYaml.Deserialize_string_regex_("bat"), "bat")
        self.assertRaisesRegex(
            AllTypesYaml.DeserializeException,
            r"'abc' is not a valid 'String' string - Value must match the regular expression 'b.t'",
            lambda: AllTypesYaml.Deserialize_string_regex_("abc"),
        )
 def test_Optional(self):
     self.assertEqual(AllTypesYaml.Deserialize_optional("test"), "test")
     self.assertEqual(AllTypesYaml.Deserialize_optional(""), AllTypesYaml.DoesNotExist)