Convert matrix index to gcode
#39 Save GCode in file Convert a list of index to gcode string in an array
This commit is contained in:
@@ -5,31 +5,50 @@ from pcbdevice.models.Coordinates import Coordinate
|
|||||||
|
|
||||||
|
|
||||||
class TestListToGCode(TestCase):
|
class TestListToGCode(TestCase):
|
||||||
|
|
||||||
|
oneTrace = [Coordinate(1, 2),
|
||||||
|
Coordinate(1, 5),
|
||||||
|
Coordinate(2, 5),
|
||||||
|
Coordinate(2, 8)]
|
||||||
|
|
||||||
|
twoTrace = [Coordinate(1, 2),
|
||||||
|
Coordinate(1, 5),
|
||||||
|
Coordinate(5, 5),
|
||||||
|
Coordinate(5, 2),
|
||||||
|
Coordinate(1, 2),
|
||||||
|
Coordinate(-1, -1),
|
||||||
|
Coordinate(5, 4),
|
||||||
|
Coordinate(8, 4)]
|
||||||
|
|
||||||
|
threeTrace = [Coordinate(1, 2),
|
||||||
|
Coordinate(1, 5),
|
||||||
|
Coordinate(5, 5),
|
||||||
|
Coordinate(5, 2),
|
||||||
|
Coordinate(1, 2),
|
||||||
|
Coordinate(-1, -1),
|
||||||
|
Coordinate(5, 4),
|
||||||
|
Coordinate(8, 4),
|
||||||
|
Coordinate(2, 9),
|
||||||
|
Coordinate(9, 45),
|
||||||
|
Coordinate(12, 12),
|
||||||
|
Coordinate(1, 10)]
|
||||||
|
|
||||||
def test_listToGCodeMultipleTrace(self):
|
def test_listToGCodeMultipleTrace(self):
|
||||||
xSize, ySize = 2, 3
|
xSize, ySize = 2, 3
|
||||||
|
|
||||||
coords = whenSingleTrace()
|
self.assertEqual(listToGCode(self.oneTrace, ySize, xSize), getExpected(self.oneTrace, ySize, xSize))
|
||||||
self.assertEqual(listToGCode(coords, ySize, xSize), getExpected(coords, ySize, xSize))
|
self.assertEqual(listToGCode(self.twoTrace, ySize, xSize), getExpected(self.twoTrace, ySize, xSize))
|
||||||
|
self.assertEqual(listToGCode(self.threeTrace, ySize, xSize), getExpected(self.threeTrace, ySize, xSize))
|
||||||
coords = whenTwoTrace()
|
|
||||||
self.assertEqual(listToGCode(coords, ySize, xSize), getExpected(coords, ySize, xSize))
|
|
||||||
|
|
||||||
coords = whenThreeTrace()
|
|
||||||
self.assertEqual(listToGCode(coords, ySize, xSize), getExpected(coords, ySize, xSize))
|
|
||||||
|
|
||||||
def test_listToGCodePixelSize(self):
|
def test_listToGCodePixelSize(self):
|
||||||
xSize, ySize = 1, 4
|
xSize, ySize = 1, 4
|
||||||
coords = whenSingleTrace()
|
self.assertEqual(listToGCode(self.oneTrace, ySize, xSize), getExpected(self.oneTrace, ySize, xSize))
|
||||||
self.assertEqual(listToGCode(coords, ySize, xSize), getExpected(coords, ySize, xSize))
|
|
||||||
|
|
||||||
xSize, ySize = 4, 2
|
xSize, ySize = 4, 2
|
||||||
coords = whenSingleTrace()
|
self.assertEqual(listToGCode(self.oneTrace, ySize, xSize), getExpected(self.oneTrace, ySize, xSize))
|
||||||
self.assertEqual(listToGCode(coords, ySize, xSize), getExpected(coords, ySize, xSize))
|
|
||||||
|
|
||||||
xSize, ySize = 8, -1
|
xSize, ySize = 8, -1
|
||||||
coords = whenSingleTrace()
|
self.assertRaises(RuntimeError, lambda: listToGCode(self.oneTrace, ySize, xSize))
|
||||||
self.assertRaises(RuntimeError, lambda: listToGCode(coords, ySize, xSize))
|
|
||||||
|
|
||||||
|
|
||||||
def getExpected(coords, ySize, xSize):
|
def getExpected(coords, ySize, xSize):
|
||||||
header = ['G28', 'G90\n']
|
header = ['G28', 'G90\n']
|
||||||
@@ -48,37 +67,4 @@ def getExpected(coords, ySize, xSize):
|
|||||||
else:
|
else:
|
||||||
content.append('G0 Z0')
|
content.append('G0 Z0')
|
||||||
|
|
||||||
return header + content + footer
|
return header + content + footer
|
||||||
|
|
||||||
|
|
||||||
def whenSingleTrace():
|
|
||||||
return [Coordinate(1, 2),
|
|
||||||
Coordinate(1, 5),
|
|
||||||
Coordinate(2, 5),
|
|
||||||
Coordinate(2, 8)]
|
|
||||||
|
|
||||||
|
|
||||||
def whenTwoTrace():
|
|
||||||
return [Coordinate(1, 2),
|
|
||||||
Coordinate(1, 5),
|
|
||||||
Coordinate(5, 5),
|
|
||||||
Coordinate(5, 2),
|
|
||||||
Coordinate(1, 2),
|
|
||||||
Coordinate(-1, -1),
|
|
||||||
Coordinate(5, 4),
|
|
||||||
Coordinate(8, 4)]
|
|
||||||
|
|
||||||
|
|
||||||
def whenThreeTrace():
|
|
||||||
return [Coordinate(1, 2),
|
|
||||||
Coordinate(1, 5),
|
|
||||||
Coordinate(5, 5),
|
|
||||||
Coordinate(5, 2),
|
|
||||||
Coordinate(1, 2),
|
|
||||||
Coordinate(-1, -1),
|
|
||||||
Coordinate(5, 4),
|
|
||||||
Coordinate(8, 4),
|
|
||||||
Coordinate(2, 9),
|
|
||||||
Coordinate(9, 45),
|
|
||||||
Coordinate(12, 12),
|
|
||||||
Coordinate(1, 10)]
|
|
||||||
5
pcbdevice/tests/resources/expected/text1.txt
Normal file
5
pcbdevice/tests/resources/expected/text1.txt
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
This
|
||||||
|
is
|
||||||
|
a
|
||||||
|
|
||||||
|
test
|
||||||
5
pcbdevice/tests/resources/expected/text2.txt
Normal file
5
pcbdevice/tests/resources/expected/text2.txt
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
G28
|
||||||
|
G90
|
||||||
|
G0 Z3
|
||||||
|
|
||||||
|
G0 X15 Y45
|
||||||
@@ -2,6 +2,7 @@ from unittest import TestCase
|
|||||||
|
|
||||||
from pcbdevice.utils import TestUtils
|
from pcbdevice.utils import TestUtils
|
||||||
from pcbdevice.utils.FileUtils import FileUtils
|
from pcbdevice.utils.FileUtils import FileUtils
|
||||||
|
from pcbdevice.utils.TestUtils import readStringFile
|
||||||
|
|
||||||
resources = './pcbdevice/tests/resources/'
|
resources = './pcbdevice/tests/resources/'
|
||||||
|
|
||||||
@@ -9,18 +10,35 @@ class TestFileUtils(TestCase):
|
|||||||
def test_pbmToMatrix(self):
|
def test_pbmToMatrix(self):
|
||||||
actual, h, w = FileUtils.pbmToMatrix(resources + 'raw/test1.pbm')
|
actual, h, w = FileUtils.pbmToMatrix(resources + 'raw/test1.pbm')
|
||||||
expected = TestUtils.readIntFile(resources + 'formatted/test1.csv')
|
expected = TestUtils.readIntFile(resources + 'formatted/test1.csv')
|
||||||
assert actual == expected
|
self.assertEqual(actual, expected)
|
||||||
|
|
||||||
def test_saveMatrixToFile(self):
|
def test_saveMatrixToFile(self):
|
||||||
actual, h, w = FileUtils.pbmToMatrix(resources + 'raw/test1.pbm')
|
actual, h, w = FileUtils.pbmToMatrix(resources + 'raw/test1.pbm')
|
||||||
FileUtils.saveMatrixToFile(actual, resources + 'output/test1.csv')
|
FileUtils.saveMatrixToFile(actual, resources + 'output/test1.csv')
|
||||||
expected = TestUtils.readIntFile(resources + 'output/test1.csv')
|
expected = TestUtils.readIntFile(resources + 'output/test1.csv')
|
||||||
assert actual == expected
|
self.assertEqual(actual, expected)
|
||||||
|
|
||||||
|
def test_saveStringListToFile(self):
|
||||||
|
stringList = ['This',
|
||||||
|
'is',
|
||||||
|
'a\n',
|
||||||
|
'test']
|
||||||
|
|
||||||
|
FileUtils.saveStringListToFile(stringList, resources + 'output/text1.txt')
|
||||||
|
self.assertEqual(readStringFile(resources + 'output/text1.txt'), readStringFile(resources+'expected/text1.txt'))
|
||||||
|
|
||||||
|
stringList = ['G28',
|
||||||
|
'G90',
|
||||||
|
'G0 Z3\n',
|
||||||
|
'G0 X15 Y45']
|
||||||
|
|
||||||
|
FileUtils.saveStringListToFile(stringList, resources + 'output/text2.txt')
|
||||||
|
self.assertEqual(readStringFile(resources + 'output/text2.txt'), readStringFile(resources + 'expected/text2.txt'))
|
||||||
|
|
||||||
def test_getPixelSize(self):
|
def test_getPixelSize(self):
|
||||||
assert 10, 10 == FileUtils.getPixelSize(10, 10, 100, 100)
|
self.assertEqual((10, 10), FileUtils.getPixelSize(10, 10, 100, 100))
|
||||||
assert 1, 1 == FileUtils.getPixelSize(100, 100, 100, 100)
|
self.assertEqual((1, 1), FileUtils.getPixelSize(100, 100, 100, 100))
|
||||||
assert 10, 10 == FileUtils.getPixelSize(10, 10, 10, 10, unit = 'cm')
|
self.assertEqual((10, 10), FileUtils.getPixelSize(10, 10, 10, 10, unit = 'cm'))
|
||||||
assert 10, 10 == FileUtils.getPixelSize(10, 10, 1, 1, unit = 'm')
|
self.assertEqual((10, 10), FileUtils.getPixelSize(10, 10, 1, 1, unit = 'm'))
|
||||||
assert 254, 254 == FileUtils.getPixelSize(10, 10, 10, 10, unit = 'in')
|
self.assertEqual((25.4, 25.4), FileUtils.getPixelSize(10, 10, 10, 10, unit = 'in'))
|
||||||
assert 10, 5 == FileUtils.getPixelSize(10, 10, 10, 20)
|
self.assertEqual((1, 2), FileUtils.getPixelSize(10, 10, 10, 20))
|
||||||
@@ -29,6 +29,13 @@ class FileUtils:
|
|||||||
f.write('\n')
|
f.write('\n')
|
||||||
f.close()
|
f.close()
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def saveStringListToFile(stringList, filePath):
|
||||||
|
with open(filePath, 'w') as f:
|
||||||
|
for line in stringList:
|
||||||
|
f.write('%s\n' % line)
|
||||||
|
f.close()
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def getPixelSize(matHeight, matWidth, pcbHeight, pcbWidth, unit = 'mm'):
|
def getPixelSize(matHeight, matWidth, pcbHeight, pcbWidth, unit = 'mm'):
|
||||||
if unit == 'mm':
|
if unit == 'mm':
|
||||||
|
|||||||
@@ -11,4 +11,11 @@ def readIntFile(filePath):
|
|||||||
|
|
||||||
completeFile.append(tempArray)
|
completeFile.append(tempArray)
|
||||||
|
|
||||||
return completeFile
|
return completeFile
|
||||||
|
|
||||||
|
def readStringFile(filePath):
|
||||||
|
file = open(filePath, 'r')
|
||||||
|
lines = file.readlines()
|
||||||
|
file.close()
|
||||||
|
|
||||||
|
return lines
|
||||||
Reference in New Issue
Block a user