From ec3557cc892098dafc33fedecc66cfb9a43b121e Mon Sep 17 00:00:00 2001 From: Delasie Torkornoo Date: Mon, 15 Jul 2024 10:46:32 -0400 Subject: [PATCH] test: added backwards compatiblity test for DTD --- test/data/ras-dtd-1.0.readalong | 24 ++++++++++++++++++++++++ test/data/ras-dtd-1.1.readalong | 25 +++++++++++++++++++++++++ test/test_dtd.py | 30 ++++++++++++++++++++++++++++++ 3 files changed, 79 insertions(+) create mode 100644 test/data/ras-dtd-1.0.readalong create mode 100644 test/data/ras-dtd-1.1.readalong diff --git a/test/data/ras-dtd-1.0.readalong b/test/data/ras-dtd-1.0.readalong new file mode 100644 index 00000000..5c78c992 --- /dev/null +++ b/test/data/ras-dtd-1.0.readalong @@ -0,0 +1,24 @@ + + + + +
+

+ Bonjour. + Je m'appelle Éric Joanis. + Je suis programmeur au sein de l'équipe des technologies pour les langues autochtones au CNRC. +

+
+
+

+ J'ai fait une bonne partie de ma carrière en traduction automatique statistique, mais maintenant cette approche est déclassée par l'apprentissage profond. + En ce moment je travaille à l'alignement du hansard du Nunavut pour produire un corpus bilingue anglais-inuktitut. + Ce corpus permettra d'entraîner la TA, neuronale ou statistique, ainsi que d'autres applications de traitement du langage naturel. +

+

+ En parallèle, j'aide à écrire des tests pour rendre le ReadAlong-Studio plus robuste. +

+
+ +
+
diff --git a/test/data/ras-dtd-1.1.readalong b/test/data/ras-dtd-1.1.readalong new file mode 100644 index 00000000..8e4b9c2a --- /dev/null +++ b/test/data/ras-dtd-1.1.readalong @@ -0,0 +1,25 @@ + + + + + +
+

+ Bonjour. + Je m'appelle Éric Joanis. + Je suis programmeur au sein de l'équipe des technologies pour les langues autochtones au CNRC. +

+
+
+

+ J'ai fait une bonne partie de ma carrière en traduction automatique statistique, mais maintenant cette approche est déclassée par l'apprentissage profond. + En ce moment je travaille à l'alignement du hansard du Nunavut pour produire un corpus bilingue anglais-inuktitut. + Ce corpus permettra d'entraîner la TA, neuronale ou statistique, ainsi que d'autres applications de traitement du langage naturel. +

+

+ En parallèle, j'aide à écrire des tests pour rendre le ReadAlong-Studio plus robuste. +

+
+ +
+
diff --git a/test/test_dtd.py b/test/test_dtd.py index 3e36e749..10815cfa 100644 --- a/test/test_dtd.py +++ b/test/test_dtd.py @@ -58,6 +58,36 @@ def test_invalid_inputs(self): self.dtd.validate(parsed), f"{name} validates but shouldn't" ) + def test_backwards_compatibility(self): + # the DTD needs to be backwards compatible as long as the major version does not change + versions = """ + ras-dtd-1.0.readalong + ras-dtd-1.1.readalong + """.strip().split() + for name in versions: + path = os.path.join(dirname(__file__), "data", name.strip()) + # DTD is text, XML is binary... okay + with open(path, "rb") as infh: + parsed = etree.parse(infh) + self.assertTrue(self.dtd.validate(parsed), f"{name} does not validate") + # test that previous DTD fails current version + # test DTD 1.0 with format 1.1 + with open( + os.path.join( + dirname(__file__), "..", "readalongs", "static", "read-along-1.0.dtd" + ), + "rt", + ) as dtdFile: + dtd = etree.DTD(dtdFile) + with open( + os.path.join(dirname(__file__), "data", versions[1]), "rb" + ) as rasFile: + parsed = etree.parse(rasFile) + self.assertFalse( + dtd.validate(parsed), + f"{versions[1]} validates with 1.0 but shouldn't", + ) + if __name__ == "__main__": main()