Переглянути джерело

Unittesting complete for Excellon number format.

jpcaram 11 роки тому
батько
коміт
6582a6c748
1 змінених файлів з 237 додано та 0 видалено
  1. 237 0
      tests/test_excellon.py

+ 237 - 0
tests/test_excellon.py

@@ -3,6 +3,17 @@ import camlib
 
 
 class ExcellonNumberParseTestInch(unittest.TestCase):
+    # Inch base format: 00.0000
+
+    # LEADING ZEROS
+    # With leading zeros, when you type in a coordinate,
+    # the leading zeros must always be included.  Trailing zeros
+    # are unneeded and may be left off. The CNC-7 will automatically add them.
+
+    # TRAILING ZEROS
+    # You must show all zeros to the right of the number and can omit
+    # all zeros to the left of the number. The CNC-7 will count the number
+    # of digits you typed and automatically fill in the missing zeros.
 
     def test_inch_leading_6digit(self):
         excellon = camlib.Excellon()
@@ -43,6 +54,17 @@ class ExcellonNumberParseTestInch(unittest.TestCase):
 
 
 class ExcellonNumberParseTestMetric(unittest.TestCase):
+    # Metric base format: 000.000
+
+    # LEADING ZEROS
+    # With leading zeros, when you type in a coordinate,
+    # the leading zeros must always be included.  Trailing zeros
+    # are unneeded and may be left off. The CNC-7 will automatically add them.
+
+    # TRAILING ZEROS
+    # You must show all zeros to the right of the number and can omit
+    # all zeros to the left of the number. The CNC-7 will count the number
+    # of digits you typed and automatically fill in the missing zeros.
 
     def test_inch_leading_6digit(self):
         excellon = camlib.Excellon()
@@ -89,5 +111,220 @@ class ExcellonNumberParseTestMetric(unittest.TestCase):
         self.assertEqual(excellon.parse_number("123450"), 123.45)
 
 
+class ExcellonFormatM72Test(unittest.TestCase):
+
+    def setUp(self):
+        self.excellon = camlib.Excellon()
+        code = """
+        M48
+        M72
+        T1C.02362F197S550
+        T2C.03543F197S550
+        M95
+        T1
+        X9000Y11750
+        X30250Y10500
+        """
+        code = code.split('\n')
+        self.excellon.parse_lines(code)
+
+    def test_format(self):
+        self.assertEqual(self.excellon.units.lower(), "in")
+        self.assertEqual(self.excellon.zeros, "L")
+
+    def test_coords(self):
+        # For X9000 add the missing 00 on the right. Then divide by 10000.
+        self.assertEqual(self.excellon.drills[0]["point"].coords[0], (90.0, 11.75))
+        self.assertEqual(self.excellon.drills[1]["point"].coords[0], (30.25, 10.5))
+
+
+class ExcellonFormatM71Test(unittest.TestCase):
+
+    def setUp(self):
+        self.excellon = camlib.Excellon()
+        code = """
+        M48
+        M71
+        T1C.02362F197S550
+        T2C.03543F197S550
+        M95
+        T1
+        X9000Y11750
+        X30250Y10500
+        """
+        code = code.split('\n')
+        self.excellon.parse_lines(code)
+
+    def test_format(self):
+        self.assertEqual(self.excellon.units.lower(), "mm")
+        self.assertEqual(self.excellon.zeros, "L")
+
+    def test_coords(self):
+        # For X9000 add the missing 00 on the right. Then divide by 10000.
+        self.assertEqual(self.excellon.drills[0]["point"].coords[0], (900.0, 117.5))
+        self.assertEqual(self.excellon.drills[1]["point"].coords[0], (302.5, 105.0))
+
+
+class ExcellonFormatINCHLZTest(unittest.TestCase):
+
+    def setUp(self):
+        self.excellon = camlib.Excellon()
+        code = """
+        M48
+        INCH,LZ
+        T1C.02362F197S550
+        T2C.03543F197S550
+        M95
+        T1
+        X9000Y11750
+        X30250Y10500
+        """
+        code = code.split('\n')
+        self.excellon.parse_lines(code)
+
+    def test_format(self):
+        self.assertEqual(self.excellon.units.lower(), "in")
+        self.assertEqual(self.excellon.zeros, "L")
+
+    def test_coords(self):
+        # For X9000 add the missing 00 on the right. Then divide by 10000.
+        self.assertEqual(self.excellon.drills[0]["point"].coords[0], (90.0, 11.75))
+        self.assertEqual(self.excellon.drills[1]["point"].coords[0], (30.25, 10.5))
+
+
+class ExcellonFormatINCHTest(unittest.TestCase):
+
+    def setUp(self):
+        self.excellon = camlib.Excellon()
+        code = """
+        M48
+        INCH,LZ
+        T1C.02362F197S550
+        T2C.03543F197S550
+        M95
+        T1
+        X9000Y11750
+        X30250Y10500
+        """
+        code = code.split('\n')
+        self.excellon.parse_lines(code)
+
+    def test_format(self):
+        self.assertEqual(self.excellon.units.lower(), "in")
+        self.assertEqual(self.excellon.zeros, "L")
+
+    def test_coords(self):
+        # For X9000 add the missing 00 on the right. Then divide by 10000.
+        self.assertEqual(self.excellon.drills[0]["point"].coords[0], (90.0, 11.75))
+        self.assertEqual(self.excellon.drills[1]["point"].coords[0], (30.25, 10.5))
+
+
+class ExcellonFormatINCHTZTest(unittest.TestCase):
+
+    def setUp(self):
+        self.excellon = camlib.Excellon()
+        code = """
+        M48
+        INCH,TZ
+        T1C.02362F197S550
+        T2C.03543F197S550
+        M95
+        T1
+        X9000Y11750
+        X30250Y10500
+        """
+        code = code.split('\n')
+        self.excellon.parse_lines(code)
+
+    def test_format(self):
+        self.assertEqual(self.excellon.units.lower(), "in")
+        self.assertEqual(self.excellon.zeros, "T")
+
+    def test_coords(self):
+        # For X9000 add the missing 00 on the right. Then divide by 10000.
+        self.assertEqual(self.excellon.drills[0]["point"].coords[0], (0.9, 1.175))
+        self.assertEqual(self.excellon.drills[1]["point"].coords[0], (3.025, 1.05))
+
+
+class ExcellonFormatMETRICLZTest(unittest.TestCase):
+
+    def setUp(self):
+        self.excellon = camlib.Excellon()
+        code = """
+        M48
+        METRIC,LZ
+        T1C.02362F197S550
+        T2C.03543F197S550
+        M95
+        T1
+        X9000Y11750
+        X30250Y10500
+        """
+        code = code.split('\n')
+        self.excellon.parse_lines(code)
+
+    def test_format(self):
+        self.assertEqual(self.excellon.units.lower(), "mm")
+        self.assertEqual(self.excellon.zeros, "L")
+
+    def test_coords(self):
+        # For X9000 add the missing 00 on the right. Then divide by 10000.
+        self.assertEqual(self.excellon.drills[0]["point"].coords[0], (900.0, 117.5))
+        self.assertEqual(self.excellon.drills[1]["point"].coords[0], (302.5, 105.0))
+
+
+class ExcellonFormatMETRICTest(unittest.TestCase):
+
+    def setUp(self):
+        self.excellon = camlib.Excellon()
+        code = """
+        M48
+        METRIC,LZ
+        T1C.02362F197S550
+        T2C.03543F197S550
+        M95
+        T1
+        X9000Y11750
+        X30250Y10500
+        """
+        code = code.split('\n')
+        self.excellon.parse_lines(code)
+
+    def test_format(self):
+        self.assertEqual(self.excellon.units.lower(), "mm")
+        self.assertEqual(self.excellon.zeros, "L")
+
+    def test_coords(self):
+        # For X9000 add the missing 00 on the right. Then divide by 10000.
+        self.assertEqual(self.excellon.drills[0]["point"].coords[0], (900.0, 117.5))
+        self.assertEqual(self.excellon.drills[1]["point"].coords[0], (302.5, 105.0))
+
+
+class ExcellonFormatMETRICTZTest(unittest.TestCase):
+
+    def setUp(self):
+        self.excellon = camlib.Excellon()
+        code = """
+        M48
+        METRIC,TZ
+        T1C.02362F197S550
+        T2C.03543F197S550
+        M95
+        T1
+        X9000Y11750
+        X30250Y10500
+        """
+        code = code.split('\n')
+        self.excellon.parse_lines(code)
+
+    def test_format(self):
+        self.assertEqual(self.excellon.units.lower(), "mm")
+        self.assertEqual(self.excellon.zeros, "T")
+
+    def test_coords(self):
+        # For X9000 add the missing 00 on the right. Then divide by 10000.
+        self.assertEqual(self.excellon.drills[0]["point"].coords[0], (9.0, 11.75))
+        self.assertEqual(self.excellon.drills[1]["point"].coords[0], (30.25, 10.5))
+
 if __name__ == '__main__':
     unittest.main()