]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Tests/CheckUnicodeSourceFiles.py
BaseTools: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / BaseTools / Tests / CheckUnicodeSourceFiles.py
index ad5fd189639d620f78c58da0900a02ddfdea10c4..1502402619e17aa1e237b39925143af58c490a25 100644 (file)
@@ -3,13 +3,7 @@
 #\r
 #  Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>\r
 #\r
-#  This program and the accompanying materials\r
-#  are licensed and made available under the terms and conditions of the BSD License\r
-#  which accompanies this distribution.  The full text of the license may be found at\r
-#  http://opensource.org/licenses/bsd-license.php\r
-#\r
-#  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-#  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#  SPDX-License-Identifier: BSD-2-Clause-Patent\r
 #\r
 \r
 ##\r
@@ -110,7 +104,67 @@ class Tests(TestTools.BaseToolsTest):
         # This test makes sure that BaseTools rejects these characters\r
         # if seen in a .uni file.\r
         #\r
-        data = codecs.BOM_UTF16_LE + '//\x01\xd8 '\r
+        data = codecs.BOM_UTF16_LE + b'//\x01\xd8 '\r
+\r
+        self.CheckFile(encoding=None, shouldPass=False, string=data)\r
+\r
+    def testValidUtf8File(self):\r
+        self.CheckFile(encoding='utf_8', shouldPass=True)\r
+\r
+    def testValidUtf8FileWithBom(self):\r
+        #\r
+        # Same test as testValidUtf8File, but add the UTF-8 BOM\r
+        #\r
+        data = codecs.BOM_UTF8 + codecs.encode(self.SampleData, 'utf_8')\r
+\r
+        self.CheckFile(encoding=None, shouldPass=True, string=data)\r
+\r
+    def test32bitUnicodeCharInUtf8File(self):\r
+        data = u'''\r
+            #langdef en-US "English"\r
+            #string STR_A #language en-US "CodePoint (\U00010300) > 0xFFFF"\r
+        '''\r
+\r
+        self.CheckFile('utf_16', shouldPass=False, string=data)\r
+\r
+    def test32bitUnicodeCharInUtf8File(self):\r
+        data = u'''\r
+            #langdef en-US "English"\r
+            #string STR_A #language en-US "CodePoint (\U00010300) > 0xFFFF"\r
+        '''\r
+\r
+        self.CheckFile('utf_8', shouldPass=False, string=data)\r
+\r
+    def test32bitUnicodeCharInUtf8Comment(self):\r
+        data = u'''\r
+            // Even in comments, we reject non-UCS-2 chars: \U00010300\r
+            #langdef en-US "English"\r
+            #string STR_A #language en-US "A"\r
+        '''\r
+\r
+        self.CheckFile('utf_8', shouldPass=False, string=data)\r
+\r
+    def testSurrogatePairUnicodeCharInUtf8File(self):\r
+        #\r
+        # Surrogate Pair code points are used in UTF-16 files to\r
+        # encode the Supplementary Plane characters. In UTF-8, it is\r
+        # trivial to encode these code points, but they are not valid\r
+        # code points for characters, since they are reserved for the\r
+        # UTF-16 Surrogate Pairs.\r
+        #\r
+        # This test makes sure that BaseTools rejects these characters\r
+        # if seen in a .uni file.\r
+        #\r
+        data = b'\xed\xa0\x81'\r
+\r
+        self.CheckFile(encoding=None, shouldPass=False, string=data)\r
+\r
+    def testSurrogatePairUnicodeCharInUtf8FileWithBom(self):\r
+        #\r
+        # Same test as testSurrogatePairUnicodeCharInUtf8File, but add\r
+        # the UTF-8 BOM\r
+        #\r
+        data = codecs.BOM_UTF8 + b'\xed\xa0\x81'\r
 \r
         self.CheckFile(encoding=None, shouldPass=False, string=data)\r
 \r